某些设备的令牌无效

Posted

技术标签:

【中文标题】某些设备的令牌无效【英文标题】:Invalid token for some devices 【发布时间】:2012-04-10 11:42:55 【问题描述】:

给定:

工作的 iPod 应用程序 php中的服务器端(修改easyapns)。

我正在沙盒中发送请求 ssl://gateway.sandbox.push.apple.com:2195 如果我向 ssl://gateway.push.apple.com:2195 发送请求,则未返回错误,但未收到通知。在这种情况下,如果我发送完全错误的设备令牌(例如 12345),APN 仍然没有返回错误。

问题:APN 向查询增强通知格式返回 status_code => 8(用于说明停靠点:无效令牌),并为 5 个设备的 5 个令牌中的 4 个返回错误代码。

我有正确的开发证书,至少 iPod 的应用程序开发人员是这样说的,该开发人员将该证书发送给我。 并且 iPod 的应用程序开发人员认为应用程序每次都发送正确的开发令牌(我不知道如何在没有 mac 和开发人员工具的情况下检查设备令牌)。

已检查:

服务器端口 2195,2196 已打开 我的 iPod 连接到网络的路由器设置正确(并且用于接收的端口 5223 已打开) - 我在“iPusher”和“iPush 测试”应用程序上进行了测试 APN 连接成功 尝试从本地机器发送 尝试从 VPS 发送 已检查

【问题讨论】:

您是否将令牌存储在某处,以便该部分可能存在问题? 目前在测试时直接在 php 代码中进行硬编码。而且不是我写的,只是复制/粘贴 iPod 应用程序发送到服务器的内容。 在与实时 APN 服务器通信时,您使用的是实时证书和实时令牌,对吧? 不,我使用的是正确的开发证书,至少 iPod 的应用程序开发人员是这样说的,该开发人员将该证书发送给了我。并且 iPod 的应用程序开发人员认为应用程序每次都发送正确的开发令牌(我不知道如何在没有 mac 和开发人员工具的情况下检查设备令牌)。您可能对我尝试请求生产 url 的事实感到困惑,但这是由于绝望。 【参考方案1】:

当我遇到这个问题时,原来是因为密钥和证书不匹配。尝试使用 openssl 连接:

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert cert.pem -key key.pem

直到喷出一堆以“已连接”开头的东西,你才没有正确连接。

【讨论】:

你能澄清一下什么样的“一堆东西”表示有效连接吗? 嗯......输出以'CONNECTED'开头,但你可能有一百行关于连接的详细信息。当证书和密钥不匹配时,您会得到类似:error setting private key 140735150221756:error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch:x509_cmp.c:331:【参考方案2】:

我们面临着同样的问题。问题出在配置文件中:它是生产环境,但对于沙盒来说,它必须是开发环境。 更多描述见This comment

【讨论】:

以上是关于某些设备的令牌无效的主要内容,如果未能解决你的问题,请参考以下文章

PushSharp - 多个无效令牌不调用响应委托

如何验证 android 设备令牌

设备令牌未生成 iOS

Pushkit 令牌未进入某些设备 iOS

InstanceID API 返回的 GCM 令牌给出 NotRegistered 错误

Twitter API - “无效或过期令牌”的原因