앱을 구현하다가 보면 시스템 알림 설정값을 체크해야 하는 경우들이 있다.
일반적으로 iOS8 이전 SDK 에서는 아래와 같은 방법으로 체크를 하였지만,
if([UIApplication sharedApplication].enabledRemoteNotificationTypes == UIRemoteNotificationTypeNone) {
// 시스템 알림 설정이 꺼져있는 경우
}
else {
// 시스템 알림 설정이 켜져있는 경우.
// UIRemoteNotificationTypeBadge, UIRemoteNotificationTypeSound, UIRemoteNotificationTypeAlert, UIRemoteNotificationTypeNewsstandContentAvailability
// 위의 네가지 경우에 만족하는 상태
}
iOS8 SDK 부터는 enabledRemoteNotificationTypes 이 메서드가 Deprecated 되어 사용할 수 없게 되었다.
이 문제를 수정하기 위해서는 iOS8과 그 이하 버전의 분기를 타야 하고, 변경된 메서드를 아래와 같이 적용해 주어야 한다.
if ([[[[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."] objectAtIndex:0] integerValue] >= 8) {
if([UIApplication sharedApplication].currentUserNotificationSettings.types == UIUserNotificationTypeNone){
// 시스템 알림 설정이 꺼져있는 경우
}
else {
// 시스템 알림 설정이 켜져있는 경우.
// UIUserNotificationTypeBadge, UIUserNotificationTypeSound, UIUserNotificationTypeAlert
// 위의 세가지 경우에 만족하는 상태
}
}
else {
if([UIApplication sharedApplication].enabledRemoteNotificationTypes == UIRemoteNotificationTypeNone){
// 시스템 알림 설정이 꺼져있는 경우
}
else {
// 시스템 알림 설정이 켜져있는 경우.
// UIRemoteNotificationTypeBadge, UIRemoteNotificationTypeSound, UIRemoteNotificationTypeAlert, UIRemoteNotificationTypeNewsstandContentAvailability
// 위의 네가지 경우에 만족하는 상태
}
}
이 문제는 새로운 버전으로 작업을 하면서 크래쉬같이 눈에 보여서 바로 수정할 수 있는 이슈가 아니라 놓치기 쉬운 문제이니 잘 확인해야 할 것 같다.
반응형
'Programming > iOS - ObjC' 카테고리의 다른 글
MPMoviePlayerController - 비디오 재생 (0) | 2014.12.04 |
---|---|
MPMoviePlayerController - 오디오 스트리밍 재생 (0) | 2014.12.04 |
Email 주소 유효성 검사 (0) | 2014.12.02 |
UIWebView - POST request 사용 및 Header 넣기 (0) | 2014.12.02 |
[Deprecated-iOS7] UITextAttributeTextColor (0) | 2014.12.02 |
RangeOfString 주의할 점 (0) | 2014.07.23 |
UINavitaionController - 생성, 이동 (0) | 2014.06.12 |
CLLocationManager - 간단한 예제 (0) | 2014.06.10 |
NSDate - 현재날짜와 시간 포메팅 (0) | 2014.06.10 |
UITextView - 내용추가하고 자동으로 스크롤 내리기 (0) | 2014.06.10 |