iPhone アプリ用に独自のプッシュ通知サーバーを作成しました。クライアント デバイスにさまざまなプッシュ通知を送信しています。特別な通知が 1 つあるので、appDelegate または任意の場所で特定の関数を呼び出したいと思います。
どうすればこれを実装できますか?
iPhone アプリ用に独自のプッシュ通知サーバーを作成しました。クライアント デバイスにさまざまなプッシュ通知を送信しています。特別な通知が 1 つあるので、appDelegate または任意の場所で特定の関数を呼び出したいと思います。
どうすればこれを実装できますか?
直接呼び出す関数を指定することはできません
アプリが起動すると、-(BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
呼び出され、下のオプションでメモが渡されますUIApplicationLaunchOptionsRemoteNotificationKey
アプリが実行されているとき、あなたはapplication:didReceiveRemoteNotification:
通知で呼び出すメソッドのNAMEを渡すことができます!それで:
...
NSString *methodName = [notificationUserInfo objectForKey:@"methodName"];
[self performSelector:NSSelectorFromString(methodName)];
...
サーバー側のJSONにはmethodNameキーが含まれます。ここに示すように、APNSJSONPAYLOADが好きなものをすべて含めることができます-より多くの引数
{"aps":{"alert":"APP_NAME': BLA_BLA_BLA","sound":"default"}, "methodName":"xy"}
ユーザーが通知を介してアプリを起動すると、さまざまなシナリオが発生する可能性があります。
起動されなかった場合、アプリはデフォルトの方法で起動し、次の方法で通知を処理できます。
-(BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UILocalNotification *remoteNotif =
[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (remoteNotif) {
//handle remote notification
}
....
}
アプリがバックグラウンドまたはフォアグラウンドにあった場合、デリゲート メソッドと呼ばれる
- application:didReceiveRemoteNotification: {
if (application.applicationState == UIApplicationStateActive){
//application was in foreground
} else if (application.applicationState == UIApplicationStateInactive){
//application was in background
}
}
また、アプリケーションがフォアグラウンドにあった場合、システムはアラートを表示せず、バッジ アイコンや再生音を変更しないでください。通知は完全に自分で処理する必要があります。