pushRegistry:didUpdate:pushCredentials未被调用

时间:2017-10-25 21:28:45

标签: ios voip pushkit

查看过去有关此问题的问题,但这些问题的答案已经应用于我的项目,但是没有调用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启用推送通知。 (已经生成了Void Push证书,但显然不能使用它来发送推送)

1 个答案:

答案 0 :(得分:5)

  
    

显然不再需要这样,导入PushKit就足够了。

  

我读了几篇帖子说这个但不正确。 为了让事情有效,我不得不手动编辑info.plist,将voip添加到背景模式列表中。

 <string>voip</string>

Apple在玩什么?为什么他们仍然需要从Xcode中删除它作为一种功能?