parsing来自didReceiveRemoteNotification的警告:fetchCompletionHandler

从parse.com添加此代码后出现错误:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { if (application.applicationState == UIApplicationStateInactive) { [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo]; } } 

我真的不明白发生了什么,但是我在日志中得到这个警告:

你已经实现了 – [application:didReceiveRemoteNotification:fetchCompletionHandler:],但是你仍然需要在你的Info.plist中的支持的UIBackgroundModes列表中添加“remote-notification”。

我认为join你的plist文件UIBackgroundModes - remote-notification将解决这个问题,

但是当我这样做的时候,它改变了以下的话:

Required Background Modes – > App downloads content in response to push notifications

我的应用程序不这样做,所以我很困惑,为什么我这样做是摆在首位。

如果你不打算提取数据来响应远程通知,我想你可以实现这个委托方法:

 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 

例如

 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { if (application.applicationState == UIApplicationStateInactive) { [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo]; } } 

而不是当前使用的那个。

如果你不想在你的.plist文件中手动添encryption钥,那么这里是@ MurraySagal的答案的graphics版本,按照从1到7的步骤,你就完成了。 🙂

在这里输入图像说明

注意:如果您无法读出步骤,可以使用Command + + (用于放大)和Command +(缩小)组合缩小当前选项卡。 如果命令不起作用,您可以尝试使用Ctrl

我认为@djshiow没有解决你的问题。

您需要在您的info.plist文件中添加以下内容:

远程通知

1)添加一个新行,并在左侧列select所需的背景模式

2)在项目0行上,单击右侧栏并键入: remote-notification 。 按Enter键。

来源: http : //hayageek.com/ios-silent-push-notifications/

在Xcode 6中:

  • 在Project Navigator中点击该项目
  • 在“项目和目标”列表中,单击目标。
  • 点击function
  • 展开并打开背景模式
  • 点击远程通知

这将添加Required background modes键和App downloads content in response to push notifications送到info.plist

当你使用新的didReceive …方法时,你需要做两件事:

  1. 在你的plist中添加必要的条目
  2. 添加一个处理数据处理事件的完成处理程序

如果你不想下载任何数据,你可以把它添加到你的didReceive …方法

 completionHandler(.NoData)