gpt4 book ai didi

swift - PKPushRegistryDelegate 从未调用过

转载 作者:行者123 更新时间:2023-11-28 07:32:59 25 4
gpt4 key购买 nike

当我尝试未调用 PKPushRegistryDelegate 时,我得到了很多结果,但没有解决我的问题。所有人都建议检查 info.plist 的背景模式,这在我的应用程序中很好。我启用了 voip、后台获取、远程通知。也在苹果开发者帐户中创建 VoIP 证书。我在 didFinishLanunchingWithOptions

中写了以下几行
let pushRegistry = PKPushRegistry(queue: DispatchQueue.main)
pushRegistry.delegate = self
pushRegistry.desiredPushTypes = [.voIP]

委托(delegate)方法如下

func pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials: PKPushCredentials, for type: PKPushType) {
if let token = String(bytes: pushCredentials.token, encoding: String.Encoding.utf8) {
print("Push token: \(token)")
}
}
func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) {
print("notification received")
print(payload)
}

func pushRegistry(_ registry: PKPushRegistry, didInvalidatePushTokenFor type: PKPushType) {
print("Token invalid")
}

但是这些委托(delegate)方法永远不会被调用。由于 VoIP 证书仅用于生产,我尝试使用生产证书并检查推送 token 的日志但未找到。有没有办法用开发证书调试它?我在这里错过了什么吗?请指教。

最佳答案

我在 iPhone 6 的 11.4 版中遇到了同样的问题。尝试使用不同的设备 iPhone 6+,它工作正常。这可能是某些设备的问题,但 Apple 文档中并未提及。

请在didUpdate委托(delegate)方法中使用以下代码:

func pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials: PKPushCredentials, for type: PKPushType) {
let pushToken = pushCredentials.token.map { String(format: "%02.2hhx", $0) }.joined()
print("voip token: \(pushToken)")
}

关于swift - PKPushRegistryDelegate 从未调用过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54139533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com