我找到了一个非常简单的解决方案,无需使用框架。
我只是将以下代码添加到方法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 函数。