IOS VoiP 推送不适用于 APNS 推送



我有一个项目,它使用VoiP推送进行调用,使用APNS推送进行简单通知。APNS推出了,但VoiP没有推出。当服务器试图通过我的VoiP令牌向我发送VoiP推送时,服务器抛出异常";无效令牌";。请看我的解决方案,让我知道我做得最差的是什么。

我创建了两个证书(APNS和VoiP(

我添加了证书来识别,但我只能添加APNS

接下来,我生成p12密钥并发送到服务器以供使用。

在UIApplicationDelegate中,我检索APNS令牌并发送到服务器

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
let deviceTokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)})

//next send APNS token
}

APNS令牌我在这里成功接收

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)

VoiP推送通知我在第一个注册

func registerForPushVoipNotifications() {
let voipRegistry = PKPushRegistry(queue: DispatchQueue.main)
voipRegistry.delegate = self
voipRegistry.desiredPushTypes = [.voIP]
}

在这里我收到VoiP推送令牌

public func pushRegistry(_ registry: PKPushRegistry, didUpdate credentials: PKPushCredentials, for type: PKPushType) {
let token:String? = credentials.token.map { String(format: "%02x", $0) }.joined()
//send VoiP token to server
}

通过发送VoiP推送的文件,我必须在这里接收

func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void)

但当服务器发送VoiP推送时,会出现错误无效令牌。我最糟糕的是什么?

  • 首先,您应该使用p8 authKey发送推送通知

  • 其次,PKPushRegistry存储在func?这很奇怪。将其移动到您的类的字段

  • 第三,尝试通过以下代码从数据转换令牌:

    class TokenConverter {
    static func token(from data: Data) -> String {
    let tokenParts = data.map { data -> String in
    return String(format: "%02.2hhx", data)
    }
    return tokenParts.joined()
    }
    }
    

相关内容

  • 没有找到相关文章

最新更新