查看了有关此问题的以前的问题,但是这些问题的答案已经应用于我的项目,但是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/

10-12 04:14