Twilio错误 - 52134无效的APNs设备令牌。

3
我已经在TestFlight上上传了我的应用程序,并尝试使用twilio进行语音通话,但出现了“错误-52134 Invalid APNs设备令牌”。我已经阅读了很多关于如何修复它的教程,但尽管我付出了所有的努力,但我仍然无法解决。在沙盒中,它工作得很好。
我已完成以下操作: 1)从钥匙串访问创建一个新的.certSigningRequest
2)使用上述内容在https://developer.apple.com/account/ios/certificate/distribution/create上生成新的VoIP服务证书
3)将证书添加到钥匙串中,从钥匙串中导出.p12文件
4)按照https://github.com/twilio/voice-quickstart-swift上的说明运行这三个命令以生成密钥和证书
5)在twilio上创建一个新的Push Credential并通过复制和粘贴添加证书和密钥
6)SANDBOX未选中
7)更改我的服务器后端中的CREDENTIAL SID
8)重新启动服务器

我正在使用自动管理签名,所以我认为一切都应该没问题。

关于“APS环境:production”,我认为在上传到TestFlight时,xCode会自动将其设置为production。我可以看到它已经包括在内了。

尽管如上所述,我仍然遇到了这个可恶的错误“APS环境:production”。

我知道解决这个问题的方法,在99%的情况下是重新生成证书,但现在我卡住了。我已经尝试了两次。

不确定我还能做什么来解决这个问题?

enter image description here


你确定已经创建了生产证书吗?也就是说,它以“Apple Push Services”开头,而不是“Apple Development IOS Push Services”开头吗? - philnash
你是指苹果开发者网站上的VoIP证书吗?是的,那是生产环境。请看我添加的问题和截图。这样正确吗? - Dan
你能否联系Twilio支持,并提供凭证SID以及这个描述。团队将能够查看凭据并查看是否有任何问题。谢谢! - philnash
已经完成了,希望有人能抽出时间查看一下工单。 - Dan
是的,我想你可能是对的。很抱歉给你带来了误导。Twilio支持团队可能比我更有帮助! - philnash
显示剩余2条评论
3个回答

2

我跟随了这个方法。它适用于沙盒和生产环境。

要创建Twilio证书,请按照以下说明进行操作:

步骤1:

1. An Apple Developer membership to be able to create the certificate.
2. Make sure your App ID has the “Push Notifications” service enabled.
3. Create a corresponding Provisioning Profile for your app ID.
4. Create an Apple VoIP Services Certificate for this app by navigating to Certificates -> Production and clicking the + on the  top right to add the new certificate (choose voip cert at the bottom).
5. Download the certificate, export the .p12 from keychain.

步骤2: 然后按照以下步骤操作,进入您添加.p12文件的文件夹。

1. openssl pkcs12 -in liveVoip.p12 -nocerts -out key.pem
2. openssl rsa -in key.pem -out key.pem
3. openssl pkcs12 -in liveVoip.p12 -clcerts -nokeys -out cert.pem
4. openssl pkcs12 -in liveVoip.p12 -out VOIP.pem -nodes -clcerts

在 Twilio 控制台中,转到推送凭据页面并创建新的推送凭据。将从您的证书中提取的证书和私钥粘贴在此处。您必须将密钥作为纯文本粘贴:
最初的回答:在Twilio控制台中,进入Push Credentials页面并创建新的Push Credential。将从您的证书中提取的证书和私钥粘贴在此处。您必须将密钥作为纯文本粘贴。
For the cert.pem you should paste everything from -----BEGIN CERTIFICATE----- to -----END CERTIFICATE-----.
For the key.pem you should paste everything from -----BEGIN RSA PRIVATE KEY----- to -----END RSA PRIVATE KEY-----.

记得勾选“沙盒”选项。这很重要。您生成的VoIP服务证书可以在生产环境和Apple的沙盒基础设施中使用。勾选此框告诉Twill将您的推送发送到适合您开发配置文件的Apple沙盒基础设施。

一旦应用程序准备好提交商店,请使用“APS Environment: production”更新plist,并创建另一个Push凭据,该凭据具有相同的VoIP证书,但未勾选沙盒选项。

步骤3:为了测试应用程序是否接收通知,请获取设备令牌,在终端中打开,转到添加.p12的文件夹。使用此方法手动触发voip通知。

apn push "<XXXXXX  XXXXXX XXXXXX XXXXXX XXXXXX XXXXXX e8aafbd9>" -c VOIP.pem -m "Testing VoIP" -p

注意:有时候Twilio会报告无效的APNS令牌,但我们仍然能够收到VoIP通知。

最初的回答:

有时候即使Twilio报告APNS令牌无效,但我们仍然可以收到VoIP通知。

应用程序准备好提交商店后,使用“APS Environment: production”更新plist文件。现在这一步骤还需要吗?xCode会自动完成吗? - Dan
我可以确认xCode会自动完成这个过程。我在iTunes Connect上看到了aps-environment: production。 - Dan
你必须像上面那样通过以空格分隔的有效设备标记。 - karthik
$ apn push "<f6eb5168 xxx xx c85d478b 9b29adf4 xxx xx 490ce2cc>" -c VOIP.pem -m "Testing VoIP" -p 密码:********** 1 条推送通知已成功发送。设备上未收到任何内容。 - Dan
这意味着问题出在您的证书上。如果证书正确,您将收到VoiP通知。检查是否启用了voip和通知。在导出.keychain文件时,您必须打开证书,然后导出其中的证书。不要对证书本身进行右键单击。问题出在您的证书上。清除所有本地csr。创建一个新的。如果收到通知,则肯定会收到Twilio通知。我们可以在直接聊天中继续讨论。 - karthik
显示剩余6条评论

0

尝试手动杀死语音快速启动应用并重新启动。这样做后,我开始能够在通过Test Flight下载到我的手机后接收电话。

问题出在通过Xcode在同一设备上测试应用程序,而现在您正在尝试通过Test Flight进行测试。

我遇到了完全相同的问题。即使在按照Karthik的答案并在Twilio控制台中创建新的iOS SDK凭据并更新我的服务器以获取新的凭据SID之后,我仍然收到“错误-52134无效的APNs设备令牌”的消息。

我进行了更多的挖掘,并在twilio/voice-quickstart-ios存储库的Github页面上找到了this issue

以下是Twilio工程师的说法:

“感谢您与我们联系。”

在先前使用开发权利和后来在生产环境中使用设备时,这是一个常见的问题。我们观察到,在这种情况下,当第一次启动TestFlight应用程序时,PushKit委托方法返回的设备令牌将为前一个环境(开发权利设备令牌)。虽然注册仍然有效,因为设备令牌格式和推送凭据SID都是有效的,但是当Twilio尝试向APNS发送通知传递请求时会出错。

理想情况下,这只会发生在开发设备上,要解决此问题,您只需重新启动TestFlight应用程序,然后它就能够接收传入的呼叫通知。

希望这可以帮助您。

您仍然需要在Twilio控制台中创建相同的推送凭据,未选中沙盒复选框,并更新服务器上的凭据SID。


0
我曾经遇到过类似的问题。问题出在凭证令牌解码上。
适用于iOS 12(以及早期版本)+ Xcode 10。
let deviceToken = (credentials.token as NSData).description

针对iOS 13

let deviceToken = credentials.token.map { String(format: "%02x", $0) }.joined()

更多信息: https://github.com/twilio/voice-quickstart-swift/issues/281


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接