在PKPushRegistry.init()

时间:2018-07-12 14:52:05

标签: ios swift twilio pushkit

我们有一个当前的AppStore应用程序,我们正在对其进行更新以包括VOIP功能。我们正在使用Apple PushKit。

该用户当前已安装该应用程序的当前版本,并且已经授予允许推送通知的权限。

我们已经更新了该应用程序,用户将通过AppStore升级到该新应用程序,但是我们遇到以下问题。

在AppDelegate中,我们有以下内容:-

class AppDelegate: UIResponder, UIApplicationDelegate, LocationServiceDelegate, UNUserNotificationCenterDelegate, PKPushRegistryDelegate {

    var voipRegistry:PKPushRegistry?

    func pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials: PKPushCredentials, for type: PKPushType) {
        NSLog("pushRegistry:didUpdatePushCredentials:forType:")

        if (type != .voIP) {
            return
        }
        Shared.credentials = pushCredentials
    }


    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        voipRegistry = PKPushRegistry.init(queue: DispatchQueue.main)
        voipRegistry?.delegate = self
        voipRegistry?.desiredPushTypes = Set([PKPushType.voIP])
    }
}

问题是,当我们在PKPushRegistry.init()中调用didRegisterForRemoteNotificationsWithDeviceToken时,未调用委托方法pushRegistry

奇怪的是,如果电话重新启动,则成功调用了委托方法。

新应用是否需要明确请求PushKit VOIP通知权限,或者标准的“推送通知”权限(将在该应用的旧版本中授予)就足够了?

值得一提的是,旧的代码库(当前的AppStore版本)是用Objective-C编写的,而新版本的App(实际上是同一个Bundle Identifier)是用Swift 4.0编写的。

0 个答案:

没有答案