フレームワークを使用せずに本当に簡単な解決策を見つけました。
メソッドdidFinishLaunchingWithOptionsの最後(returnステートメントの直前)に次のコードを追加しただけです。
if (launchOptions != nil)
{
NSDictionary* dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (dictionary != nil)
{
NSLog(@"Launched from push notification: %@", dictionary);
[self addMessageFromRemoteNotification:dictionary updateUI:NO];
}
}
また、プッシュメッセージからペイロードを取得するAppDelegate.mにこの新しいメソッドを追加しました。
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
{
NSLog(@"Received notification: %@", userInfo);
[self addMessageFromRemoteNotification:userInfo updateUI:YES];
}
(上記のNSLog呼び出しは、プッシュメッセージの内容を示します)
最後のステップとして、このリスナーを追加して、ペイロードでやりたいことを実行します。
- (void)addMessageFromRemoteNotification:(NSDictionary*)userInfo updateUI:(BOOL)updateUI
{
// do what ever you want with userInfo
}
この情報を使用して追加のJavaScript呼び出しを実行する場合は、次を使用することをお勧めします。
[self.viewController.webView stringByEvaluatingJavaScriptFromString:@"callSomeJSFunction()"];
もちろん、必要に応じて、引数を文字列としてそのJS関数に渡すこともできます。