【发布时间】:2017-01-24 18:27:48
【问题描述】:
我有几个使用 Swift 2.2 编写的应用程序,使用 Xcode 7.3 编译,并且在 App Store 上发布。这些应用使用推送通知,在 iOS 9.3 及更早版本中运行良好。
但是,在升级到 iOS 10 的设备上,我的应用没有收到任何推送通知。仍在运行 iOS 9 的设备仍在接收通知。
认为这可能是证书或权利问题,我尝试了以下方法: 将我的一个应用程序升级到 Swift 2.3,添加 APS 环境权利并在 Xcode 8 中编译它,但这没有任何区别。
在我的 AppDelegate 中,我仍然有注册推送通知的现有方法,包括:
let notificationSettings = UIUserNotificationSettings(forTypes: [.Badge, .Sound, .Alert], categories:nil)
application.registerUserNotificationSettings(notificationSettings)
即使在 iOS 10 上,此注册似乎也是成功的,因为随后调用了 Application didRegisterForRemoteNotificationsWithDeviceToken,因此我收到了来自 APNS 的令牌。
问题是当我向这个设备发送推送通知时,Application didReceiveRemoteNotification 永远不会被调用。
现在,here 据说 UIApplicationDelegate 上的方法在 iOS 10 上已弃用,我应该实现 userNotificationCenter(:didReceive:withCompletionHandler:) 和 userNotificationCenter(:willPresent:withCompletionHandler:)
问题是我不仅仅针对 iOS 10。我仍然需要该应用在 iOS 8 和 9 上运行,所以我怀疑这是实现这些方法的正确方法。
如何获取现有应用的推送通知以继续在已升级到 iOS 10 的设备上运行?我需要重写代码吗?我是否只需要更新一些证书或权利并使用一些“新”设置在 Xcode 8 中重新编译?
【问题讨论】:
-
这个“推送通知在 iOS 10 中不起作用”有几个预先存在的答案 ..
-
您能否参考您所指的vaibhav的答案?我已经搜索了两天,找不到任何适用于我描述的场景的问题或答案。
-
有没有你可以参考的 Swift 答案?
-
你可以在 Objective C 中点击这个链接,但你可以得到一些想法stackoverflow.com/questions/39572897/…
标签: ios swift push-notification apple-push-notifications xcode8