【发布时间】:2014-06-03 23:11:00
【问题描述】:
iOS 7.1 上的 remote-notification 后台模式有问题。我在 Radar (http://openradar.appspot.com/radar?id=5279828798341120) 上提交了一个错误,为方便起见,我在下面复制了该错误。
还有其他人遇到这个问题吗?有什么关于 Apple 的消息吗?
总结
发送带有 content-available 标签的推送通知应该会在后台唤醒应用程序并调用 application:didReceiveRemoteNotification:fetchCompletionHandler。它适用于 iOS 7.0.6,但不适用于 iOS 7.1.1。
复制步骤
- 创建一个空的 iOS 应用程序项目。启动它应该会显示一个纯白色的视图。
- 在应用启动时请求推送权限,并在控制台中打印推送令牌。
- 在目标设置(功能 -> 后台模式)中启用远程通知。
- 在 AppDelegate 中,实现 application:didReceiveRemoteNotification:fetchCompletionHandler。使其将窗口的背景颜色更改为红色和 NSLog("Application did receive remote notification")。
- 从 Xcode 运行应用程序(产品 -> 运行)。
- 从 Xcode 关闭应用程序(产品 -> 停止)。
- 双击主页按钮:应用的多任务屏幕截图显示纯白色视图。
- 使用诸如 nomad-cli (http://nomad-cli.com/) 之类的程序,使用“content-available”标签(选项 -n 和 nomad-cli)向您的设备发送推送通知:推送通知应该出现在主页上屏幕。
- 双击主页按钮并检查多任务屏幕截图的颜色。
预期结果
如果应用在后台启动并调用了 application:didReceiveRemoteNotification:fetchCompletionHandler,则多任务屏幕截图应为红色。此外,Xcode Organizer 中的控制台日志应该显示应用程序确实收到了远程通知。
实际结果
在 iOS 7.0.6 上,多任务截图确实是红色的。此外,Xcode Organizer 中的控制台日志显示以下日志:
May 30 16:50:14 iPad kernel[0] <Debug>: launchd[266] Container: /private/var/mobile/Applications/47E7DA84-E83A-4B43-B550-7D203921BD49 (sandbox)
May 30 16:50:14 iPad Test[266] <Warning>: Application did receive remote notification
在 iOS 7.1.1 上,多任务屏幕截图保持白色,Xcode Organizer 中的控制台日志不显示任何内容。
版本
iPhone 5:iOS 7.1.1 [11D201]。 iPad 2:iOS 7.0.6 [11B651]。
配置
iPhone 5 32GB AT&T,使用 WiFi。 iPad 2 16GB,使用 WiFi。
【问题讨论】:
标签: ios cocoa-touch push-notification ios7.1