(七十三)iOSローカルプッシュ通知の実現


iOSのプッシュ通知には、ローカルプッシュとネットワークプッシュの2種類があり、Appが保留中であればローカル通知を送信することができ、すでに殺されていればタイミング通知だけが実行できるが、QQのようなネットワークメッセージのプッシュは実現できない.Appのネットワークモジュールは殺された後は実行できないため、この場合はリモート通知を借りてアップルのサーバを通じて携帯電話に通知を転送しなければならない.この文書では、ローカル通知の使い方についてのみ説明します.
①iOS 8以上のバージョンでは、ローカル通知を登録して使用する必要があります.一般的に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メソッドを呼び出して通知を送信します.
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