解析来自 didReceiveRemoteNotification:fetchCompletionHandler 的警告
-
20-12-2019 - |
题
从 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 的步骤操作即可完成。:)
笔记:如果您无法读出这些步骤,您可以使用以下组合缩小当前选项卡 命令++ (用于放大)和 命令+- (用于缩小)。如果 命令 不起作用,你可以尝试 控制键.
我认为@djshiow 没有解决你的问题。
您需要在 info.plist 文件中添加以下内容:
1) 添加一个新行,然后在左列中选择 所需的背景模式.
2) 在 Item 0 行上,单击右列并键入: 远程通知. 。按 Enter 键。
在 Xcode 6 中:
- 在项目导航器中单击项目
- 在“项目和目标”列表中单击目标。
- 点击功能
- 展开并打开后台模式
- 单击远程通知
这将添加 Required background modes
钥匙和 App downloads content in response to push notifications
价值 info.plist
.
当您使用新的 didReceive...方法你需要做两件事:
- 在您的 plist 中添加必要的条目
- 添加一个完成处理程序,该处理程序将处理用于处理数据的事件
如果您不想下载任何数据,您可以将其添加到您的 didReceive...方法
completionHandler(.NoData)