pushRegistry:didUpdate:pushCredentials 未被调用



查看了过去关于这个问题的问题,但这些问题的答案已经应用于我的项目,但 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 中删除?

相关内容

  • 没有找到相关文章

最新更新