Developer/iOS 67

[iOS]What's New in the Apple Push Notification Service

애플에서 푸쉬서비스 토큰 방식이 추가되어서 알아봤다. 중요개선사항1. HTTP/2 로 영구 푸시를 기반으로하는 새로운 프로토콜을 도입했다. HTTP/2는 단일 연결을 통해 여러개의 스트림을 지원하는 매우 빠른 바이너리 프로토콜입니다.2. 프로토콜은 더 이상 활성화되지 않은 장치 토큰을 나타내는 즉각적인 피드백 제공을 지원합니다. 푸쉬를 보내는 API를 호출했을 때, PUSH가 전달되지 않으면 Response로 알려주는게 추가되었다.3. 페이로드가 최대 4KB로 증가되었다. 하나의 생성된 Key 토큰으로 개발자의 푸쉬를 보낼수가 있습니다.이로 인해 많은 개발자가 여러 인증서를 관리, 갱신 및 취소 할 수있는 어려움이 줄어 들었습니다.

Developer/iOS 2017.08.08

iOS의 코드 서명(데이터 실행 보호(DEP - Data Execution Prevention))

iOS는 왜 해킹에 강할까? 라는 의문점을 가지고 찾아 보는 중에 DEP라는 매커니즘이 적용된 것을 알 수 있었다. 01 DEP란?프로세서가 데이터 영역은 실행하지 않고 코드 영역만 구동하도록 메모리에서 코드 영역과 데이터 영역을 구분하기 위한 메커니즘.즉, 공격 코드가 다운로드한 코드를 실행시키는 것을 막을 수 있다는 뜻이다. 다운로드한 코드는 DEP를 통해 데이터로 취급되어서 실행을 할 수 없게 된다.그래서 iOS를 공격할 때는 ROP를 사용한단다. ( ROP에 대해선 나중에..) 02 iOS의 코드서명.iOS의 코드서명은 매커니즘은 DEP와 비슷하지만 좀 더 강력하다.DEP를 매커니즘이 되어있다면, ROP를 활용해 쓰고 실행할 수 있는 메모리 영역을 먼저 생성한 후, 공격에 필요한 페이로드를 작성하..

Developer/iOS 2017.03.21

iOS10.0의 새로운 점(What's New in iOS 10.0)

iOS10.0이 나온지 꽤 시간이 지났지만,iOS 개발자로써 iOS가 새로 나올때마다 정리를 해둬야 될 것 같아서 뒤늦게 애플문서를 보고 정리를 해야겠다 생각하고 글을 쓴다.자세한 내용(https://developer.apple.com/library/prerelease/content/releasenotes/General/WhatsNewIniOS/Articles/iOS10.html#//apple_ref/doc/uid/TP40017084-SW1) Providing Haptic Feedback아이폰7, 아이폰7Plus 에서 기존 맥북에 있던 트랙패드처럼 홈버튼이 햅틱방식으로 변경되었다.UIKit의 UIFeedbackGenerator로 사용할 수 있다.아이폰7이 출시 된 후 만져본 느낌으론 어색했지만 적응이 된..

Developer/iOS 2016.11.07

비동기(NSOperation, GCD)의 차이점.

1. NSOperation- 고수준의 편리한 API제공한다.(KVO 키 감시, operation cancel제어등..)- 일반 스레드보다 약간 처리속도에 손실이 있다고 한다. 그럼에도 불구하고 편리한 메소드들은 이러한 단점을 커버하기 충분하다.- GCD의 객체형이라고 볼 수 있을까?사용후 알아서 메모리 해제. 2. GCD- 블록으로 구현되어 있어 간단하게 사용가능하고 또한 코드 가독성도 좋다.- 저수준 스레드 구현가능되기에 속도면에서 좋다고 한다. 다만, 상태감시, 오퍼레이션 캔슬 등등 다 직접 만들어야 한다는 귀찮음을 동반한다.GCD는 NSOperation과 유사합니다. GCD는 C언어 기반이라는 차이점을 갖습니다.사용후 직접 메모리 해제. NSOperation과 GCD의 차이가 뭘지 궁금해서 검색해서..

Developer/iOS 2016.08.16

[iOS]WCSession으로 iWatch와 iPhone 데이터 주고 받기

- ViewController.m : 아이폰에서 값을 보낼 화면에서 다음과 같이 하시면 됩니다. #import @interface ViewController () @end - (void)viewDidLoad { [super viewDidLoad]; //WCSession을 activate합니다. if(WCSession.isSupported){ WCSession* session = WCSession.defaultSession; session.delegate = self; [session activateSession]; }}-(void)packageAndSendMessage{ //보낼 Dictionary를 설정합니다. NSDictionary* request = "보낼 Dictionary"; if(WCSessi..

Developer/iOS 2016.08.02

[iOS]Keychain 이용해서 데이터(UUID) 저장하기 - WrapperClass제공

KeyChain 이란?KeyChain은 iOS의 다양한 응용 프로그램에서 비밀번호나 계정등을 저장하는 암호화 되어있는 저장소입니다.안전한 앱을 만들기 위해서 보안이 필요한 요소들을 분리하고 암호화 하는 노력이 필요합니다.여기에서는 안전하게 데이터를 저장하기 위한 장소인 Keychain에 대해서 설명하고 어떻게 사용하는지 알아보겠습니다. KeychainItemWrapper 클래스 사용하기Keychain의 API들은 Security.framework에 정의되어 있는데 C함수로 정의되어 있습니다. 이들을 사용하기 위해 애플에서 제공해주는 KeychainItemWrapper를 사용하는 경우가 많습니다. (https://developer.apple.com/library/ios/samplecode/GenericKe..

Developer/iOS 2016.05.02

[iOS9] AVPlayerViewController로 비디오 재생하기. Video player

간단하게 비디오만 재생시키는 샘플입니다. 1. .h 파일@property (strong, nonatomic) NSURL *videoURL;@property (strong, nonatomic) AVPlayerViewController *avVideoController; 2. Play Video-(void) playMovie{ self.avVideoController = [[AVPlayerViewController alloc] init]; AVPlayer *player = [AVPlayer playerWithURL:[self localMovieURL]]; self.avVideoController.player = player; [self.avVideoController.view setFrame:CGRectMa..

Developer/iOS 2016.04.07

[iOS9] Contacts.framework 연락처, 주소록 불러오기

Contacts.framework 는 iOS9 부터 기존 ABAddressBook.framework 를 대체합니다. 샘플프로젝트는 깃허브에 올려놓았습니다.https://github.com/minjoongkim/iOS9-Contacts.framework-AddressBook-Sample 1. 주소록 불러오기CNAuthorizationStatus status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts]; if( status == CNAuthorizationStatusDenied || status == CNAuthorizationStatusRestricted) { NSLog(@"access denied"); } else { ..

Developer/iOS 2016.01.08

[ios]iOS8 UIAlertController Sample

sample : https://github.com/minjoongkim/UIAlertController-for-ios8 안녕하세요 iOS8에서 UIAlertView를 사용하면 경고창이 떠서 UIAlertController에 대한 간단한 샘플입니다.1,2,3번은 UIAlertControllerStyleAlert의 샘플이고, 4번은 UIAlertControllerStylerActionSheet입니다. 1,2번의 타입에 preferredStyle만 바꿔주시면 완성됩니다. 1. 기본 AlertView UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"simpleAlert" message:@"UIAlertContro..

Developer/iOS 2016.01.06