ios - iOS 8 设备上没有 Xcode 的静默通知问题

标签 ios xcode apple-push-notifications

我一直在测试自 iOS 7 以来可用的静默通知功能。

我的应用程序针对 iOS 7 和 UP。

我正在 iPhone6 设备上进行测试。

当我的 iPhone 连接到计算机并且 Xcode 正在运行该应用程序时,我的应用程序似乎一切正常。所有静默通知都 100% 有效,它们也出现在我的应用程序中。

但是,如果我停止 Xcode 并发送静默通知——我的设备根本不会收到静默通知。

我做了很多研究,但没有给我答案,也没有帮助我确定发生了什么。

我没有终止我的应用程序。所以,这不是问题。您仍然可以在应用程序切换器中看到该应用程序。

我的应用程序确实会定期收到推送通知(使用和不使用 Xcode)。问题出在静默通知上。

找到这些(但它们没有帮助我解决问题):

  1. IOS 8 Silent push notification not working without Xcode
  2. iOS silent push notification only works when connected to xcode

我也已将“优先级”标签添加到我的 JSON 负载中……但仍然没有成功。

这是我的有效载荷:

$body['aps'] = array( '内容可用'=> 1, '警报'=> $消息, '优先级'=> 10, '声音'=>'默认' );

我什至尝试过将“优先级”全部小写。

我的手机确实收到警报并发出声音。但是,如果用户选择“应用程序图标”而不是横幅提醒——它不会收到静默通知。只有当我的应用程序未连接并从 Xcode 运行时才会发生这种情况。

此外,我正在使用开发人员证书和配置文件。

更新 1:

发现优先级设置应该是二进制通知的一部分,而不是 APNS 负载。

我从有效负载中删除了“优先级”并将二进制通知配置为命令 2。

参见:https://developer.apple.com/library/mac/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/CommunicatingWIthAPS.html

使用 Xcode 测试。一切正常。在没有 Xcode 的情况下进行测试。还是一样的问题。 =(

更新 2

我在 iPhone 4 设备上测试了该应用程序。 Silent Notifications 可以在有或没有 Xcode 的情况下使用。所以,这一定是 iOS 8 设备的一个严格问题。

更新标题以仅反射(reflect) iOS 8。我不确定如何为 iOS 8 设备修复此问题。有人有什么建议吗?

最佳答案

好吧,我终于解决了为什么静默通知在 iOS 8 设备上不起作用。

在您从 PHP 脚本发送的二进制通知中,优先级必须设置为 5。当您没有从 Xcode 运行应用程序时,它将无法与 10 一起使用。

我不知道为什么应用程序在从 Xcode 运行时使用 10 - 这就是为什么很难确定哪里出了问题。我也不知道为什么 10 的优先级适用于 iOS 7 设备。

参见:https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/CommunicatingWIthAPS.html

关于ios - iOS 8 设备上没有 Xcode 的静默通知问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28835056/

相关文章:

ios - 标签栏 iPad 应用程序到侧边栏 macOS Catalyst 应用程序

ios - Swift 标签栏 Controller 未更新

java - 推送通知 - 由 : java. io.IOException 引起:toDerInputStream 拒绝标记类型 45

ios - 当我不得不查询Apple的反馈服务时

iphone - 如何从我们的服务器中找到是否已发送给用户的 Apple Push Notification?

iphone - Google Plus 共享,来自 ios 的点赞按钮

iOS - [CLPlacemark 时区] : unrecognized selector iOS 8

ios - Swift 2.1 tableView 单元格布局和内容在运行时更改

android - React native null 不是 Android 上的对象(评估 '_scrollView.scrollTo' )

javascript - 如何实现 JavaScriptCore 调试器?