应用在后台时读取APNS有效负载

时间:2014-08-25 12:49:03

标签: ios objective-c

我想获取Apple推送通知有效负载,而不点击我的应用在后台时收到的推送通知。 当我点击应用程序图标并且应用程序到达前台时,我想获得有效负载。

如果点击通知,我可以获得有效载荷。但这不是我想要的。

如果可以在不点击推送通知的情况下获得有效负载,我只想要一个提示。

更新

我已将UIBackgroundModes设置为

"所需的背景模式"并添加"应用程序下载内容以响应推送通知"它的价值。

现在,

我在appdelegate.m文件中实现了以下方法。但是我无法获得userInfo。这种方法在接收APNS时无法接听电话。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler
{
    NSLog(@"userInfo :: %@",userInfo);
    //Success
    handler(UIBackgroundFetchResultNewData);
}

2 个答案:

答案 0 :(得分:0)

使用标准推送通知,除非用户点击通知警报视图上的“确定”按钮,否则无法获取有效负载。您需要在应用启动时查询您的服务器,以便找出已发生或已发送的更改/通知。

或者,您可以查看后台推送通知,它会在后台唤醒您的应用。但是这些仅适用于iOS 7及更高版本。

答案 1 :(得分:0)

  • 如果你从应用程序切换器中杀死你的应用程序(即向上滑动以杀死应用程序),则无法获取以防止操作系统重新启动。

  • 否则,我们有获取通知有效负载启用远程通知UIBackgroundModes。

  

使用此方法处理应用的传入远程通知。与应用程序:didReceiveRemoteNotification:方法不同,该方法仅在应用程序在前台运行时调用,系统会在您的应用程序在前台或后台运行时调用此方法。此外,如果您启用了远程通知后台模式,系统将启动您的应用程序(或将其从暂停状态唤醒),并在推送通知到达时将其置于后台状态。 但是,如果用户强行退出,系统不会自动启动您的应用。在这种情况下,用户必须重新启动您的应用或重新启动设备,然后系统才会再次尝试自动启动您的应用。