远程通知有效负载为空

时间:2014-02-24 04:39:30

标签: ios objective-c apple-push-notifications

我正在尝试在我的应用中集成推送通知。当应用程序当前正在运行正常时,我已经处理了远程通知,但是我正在尝试在应用程序当前未运行时处理它们

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
 (NSDictionary *)launchOptions

然而,似乎每当我点击通知警报并启动应用程序时,我的通知有效负载为空。

我使用NSLog来记录有效负载并显示它是空的。

有什么理由它会为空吗?我知道我的通知设置正确,因为它们在应用程序内工作,但由于某种原因,我无法弄清楚这一点。我还记录了launchOptions并显示了null。

这是在我的didFinishLaunchingWithOptions方法中:

NSDictionary *notificationPayload = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];
NSLog(@"launch options: %@", launchOptions);
NSLog(@"payload: %@", notificationPayload);

2 个答案:

答案 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:中设置断点进行调试,并发送推送通知以触发启动应用

enter image description here

application:didReceiveRemoteNotification:是当您的应用当前处于活动状态或来到前台时调用的委托方法。

彻底测试所有这3个场景非常重要(从发布,背景,活动时)。

在第二种方法中,您可以使用

检查应用的状态

[application applicationState] == UIApplicationStateActive

并相应地处理推送通知。