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

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

我不太明白发生了什么,但我在日志中收到此警告:

您已经实现了 - [应用程序:DidreceivereMoteNotification:fetchCompletionHandler:],但是您仍然需要在Info.plist中支持的UibackgroundModes的列表中添加“远程通知”。

我想添加到你的 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 文件,然后这是 @MurraySagal 答案的图形版本,按照 1 到 7 的步骤操作即可完成。:)

enter image description here

笔记:如果您无法读出这些步骤,您可以使用以下组合缩小当前选项卡 命令++ (用于放大)和 命令+- (用于缩小)。如果 命令 不起作用,你可以尝试 控制键.

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

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

remote-notification

1) 添加一个新行,然后在左列中选择 所需的背景模式.

2) 在 Item 0 行上,单击右列并键入: 远程通知. 。按 Enter 键。

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

在 Xcode 6 中:

  • 在项目导航器中单击项目
  • 在“项目和目标”列表中单击目标。
  • 点击功能
  • 展开并打开后台模式
  • 单击远程通知

这将添加 Required background modes 钥匙和 App downloads content in response to push notifications 价值 info.plist.

当您使用新的 didReceive...方法你需要做两件事:

  1. 在您的 plist 中添加必要的条目
  2. 添加一个完成处理程序,该处理程序将处理用于处理数据的事件

如果您不想下载任何数据,您可以将其添加到您的 didReceive...方法

completionHandler(.NoData)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top