我正在尝试在我的应用中集成推送通知。当应用程序当前正在运行正常时,我已经处理了远程通知,但是我正在尝试在应用程序当前未运行时处理它们
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions
然而,似乎每当我点击通知警报并启动应用程序时,我的通知有效负载为空。
我使用NSLog
来记录有效负载并显示它是空的。
有什么理由它会为空吗?我知道我的通知设置正确,因为它们在应用程序内工作,但由于某种原因,我无法弄清楚这一点。我还记录了launchOptions并显示了null。
这是在我的didFinishLaunchingWithOptions
方法中:
NSDictionary *notificationPayload = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];
NSLog(@"launch options: %@", launchOptions);
NSLog(@"payload: %@", notificationPayload);
答案 0 :(得分:0)
如果要查看有效负载信息,请使用以下通知委托方法。确保在收到通知时已从通知中心启动应用程序,然后仅调用此方法。
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
NSLog(@"userInfo: %@", userInfo);
NSDictionary *dict=[userInfo objectForKey:@"aps"];
NSString *strPushMessege=[dict objectForKey:@"alert"];
NSLog(@"strPushMessege %@",strPushMessege);
}
答案 1 :(得分:0)
几年前我写了一篇关于此事的博客文章,自从你在Xcode中设置它的地方发生了变化。
但是这里是博客文章以防万一,背景资料。 http://runmad.com/blog/2010/06/debugging-executables-for-push-notifcations/
现在,为了调试推送通知,您需要编辑方案。
您可以在“管理方案”中将目标的启动设置更改为等待.app手动启动,这允许您通过在application: didFinishLaunchingWithOptions:
中设置断点进行调试,并发送推送通知以触发启动应用
application:didReceiveRemoteNotification:
是当您的应用当前处于活动状态或来到前台时调用的委托方法。
彻底测试所有这3个场景非常重要(从发布,背景,活动时)。
在第二种方法中,您可以使用
检查应用的状态 [application applicationState] == UIApplicationStateActive
并相应地处理推送通知。