(713) iOS 로컬 푸시 알림의 실현

iOS의 푸시 알림은 로컬 푸시와 인터넷 푸시 두 가지로 나뉘는데 만약에 앱이 끊긴 상태라면 로컬 알림을 보낼 수 있다. 만약에 이미 죽으면 정시 알림만 실행할 수 있고 QQ와 같은 인터넷 메시지 푸시는 실현할 수 없다. 왜냐하면 앱의 인터넷 모듈은 죽은 후에 실행할 수 없기 때문에 이럴 때 원격 알림을 빌려야 한다.애플의 서버를 통해 휴대전화에 알림을 전달하면 본고는 로컬 알림의 사용법만 소개한다.
① iOS8 이상 버전의 경우 로컬 알림을 등록해야 사용할 수 있으며, 일반적으로 AppDelegate에 등록되어 있습니다.
if ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0) {
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil];
        [application registerUserNotificationSettings:settings];
}

그 중에서 settingsForTypes는 일련의 병렬할 수 있는 매개 변수이다. 실현 원리는 여러 개의 이진 비트가 여러 가지 기능을 나타내고 각 기능이 서로 다른 위치에 있으면 각 비트나 상응하는 비트가 1로 설정되어 기능을 켜는 것이다. 여기서 켜는 것은 Alert 알림과 소리 알림이다.categories는 NSSet으로 정부에서 제시한 설명은 알림에 포함된 일련의 행위로 일반적으로 nil을 쓰면 된다.
② 알림을 보내려면alertBody(메시지체),fireDate(발송 시간),soundName(알림음, 일반적으로default)을 설정해야 합니다.
마지막으로 UIAPplication 예제를 사용하여 scheduleLocalNotification 메소드를 호출하여 알림을 보냅니다.
4
UILocalNotification *localNoti = [[UILocalNotification alloc] init];
localNoti.alertBody = [NSString stringWithFormat:@"%@:%@",message.fromStr,message.body];
localNoti.fireDate = [NSDate date];
localNoti.soundName = @"default";
[[UIApplication sharedApplication] scheduleLocalNotification:localNoti];
일반적인 알림은 백그라운드에 적용될 때 발송되기 때문에 발송하기 전에 백그라운드 여부를 판단해야 한다. 판단 방법은 다음과 같다.
[UIApplication sharedApplication].applicationState != UIApplicationStateActive

좋은 웹페이지 즐겨찾기