查看了有关此问题的以前的问题,但是这些问题的答案已经应用于我的项目,但是pushRegistry()委托方法未得到调用。
首先,这里是代码:
import UIKit
import PushKit
import UserNotifications
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate{
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let notificationSettings = UIUserNotificationSettings(types: [.badge, .sound, .alert], categories: nil)
application.registerUserNotificationSettings(notificationSettings)
UNUserNotificationCenter.current().delegate = self
UIApplication.shared.registerForRemoteNotifications()
let voipRegistry = PKPushRegistry(queue: DispatchQueue.main)
voipRegistry.desiredPushTypes = Set([PKPushType.voIP])
voipRegistry.delegate = self;
return true
}
...
}
extension AppDelegate: PKPushRegistryDelegate {
func pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials: PKPushCredentials, for type: PKPushType) {
NSLog("voip token: \(pushCredentials.token)")
}
已启用以下应用程序功能:
- 推送通知
-背景模式
-背景提取
-远程通知
我使用的Xcode 9.1 Beta不再具有Voip的显式功能,显然不再需要,导入PushKit就足够了。
在供应门户上,已为应用程序ID启用了推送通知。
(已生成了无效推送证书,但显然不能使用此证书来发送推送)
最佳答案
显然,这不再需要,而导入PushKit就足够了。
我读了几篇文章说这话,但这不正确。
为了使一切正常,我必须手动编辑info.plist才能将voip添加到后台模式列表中。
<string>voip</string>
苹果在玩什么?他们为何仍需要从Xcode中删除此功能?
关于ios - pushRegistry:didUpdate:pushCredentials没有被调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46942345/