リモート通知で考えられるすべてのケースを処理しようとしています。アプリがフォアグラウンドにあるときは大丈夫です-didReceiveRemoteNotificationが呼び出されます。問題は、アプリがバックグラウンド状態で、プッシュ通知を受け取る場合です。何も呼び出されません。アプリがフォアグラウンドに戻ったときに、新しいリモート通知があることをユーザーに知らせる方法は?
3 に答える
プッシュ通知を傍受する唯一の方法は、ユーザーが通知センターで通知をタップしたとき (またはロック画面からアプリ アイコンをスライドしたとき) です。
この場合、アプリがフォアグラウンドになる前にdidFinishLaunchingWithOptions
、アプリ デリゲートのメソッドが呼び出されます。を使用しNSDictionary
launchOptions
て、アプリが通知センターから起動されたか、アイコンをタップして起動されたかを判断する必要があります (通常の使用)。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSDictionary *pushDic = [launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];
if (pushDic != nil) {
NSLog(@"Notification");
}
else {
}
}
プログラミングガイドをご覧ください。
アクションボタンがタップされた場合(iOSを実行しているデバイスで)、システムはアプリケーションを起動し、アプリケーションはそのデリゲートのアプリケーションを呼び出します。didFinishLaunchingWithOptions:メソッド(実装されている場合)。通知ペイロード(リモート通知の場合)またはローカル通知オブジェクト(ローカル通知の場合)を渡します。
もちろん、アプリがバックグラウンドにある場合は、何も呼び出されません...
アプリが起動されていない (バックグラウンドで中断されていない) 場合、
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
通知ペイロードが含まれます (キー UIApplicationLaunchOptionsRemoteNotificationKey):
NSDictionary *remoteNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];