IOS VoiP 推送不适用于 APNS 推送

Posted

技术标签:

【中文标题】IOS VoiP 推送不适用于 APNS 推送【英文标题】:IOS VoiP push doesn't work with APNS push 【发布时间】:2021-04-25 07:44:29 【问题描述】:

我有一个项目,它使用 VoiP 推送进行呼叫,使用 APNS 推送进行简单通知。 APNS 推送来了,但 VoiP 没有来。当服务器尝试通过我的 VoiP 令牌服务器向我发送 VoiP 推送时,会引发异常“无效令牌”。请看看我的解决方案,让我知道我做的最糟糕的事情。

I created two certificates (APNS and VoiP)

I added certificate to identify, but I can add just 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 推送时,它会收到错误 Invalid Token。我最糟糕的是什么?

【问题讨论】:

和这个有关系吗? ***.com/questions/67308054/… 【参考方案1】:

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

其次,PKPushRegistry存储在func中?这很奇怪。将其移至您班级的字段

第三,尝试通过以下代码从数据中转换token:

  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()
      
  

【讨论】:

以上是关于IOS VoiP 推送不适用于 APNS 推送的主要内容,如果未能解决你的问题,请参考以下文章

迁移到 iOS VoIP 推送通知

Ios Voip Apns 推送通知延迟 4 分钟

我需要 APNS 证书和 VOIP 证书吗?

不使用 APNS 的 iOS 4.0 及更高版本的推送服务器

APNS 推送通知头痛;适用于开发但不适用于生产

FreePBX 上的 VoIP 推送通知 [关闭]