发送推送后未注册的设备
Posted
技术标签:
【中文标题】发送推送后未注册的设备【英文标题】:Devices being unregistered after push is sent 【发布时间】:2016-03-09 17:13:17 【问题描述】:这听起来可能很奇怪,但我看不到任何其他解释。
我已经在 Bluemix 上设置了 IBM Push Notifications,这是我以前做过的。出于某种原因,我构建了这个新应用程序。每次我发送推送通知时,它都没有通过,我再次尝试这样做,它告诉我没有设备。
这只是今天发生在我身上,也许是服务的问题?
我尝试过/注意到的一些事情:
我的设备正在注册并通过控制台从服务接收成功消息。 我只有 1 台设备,但监控现在告诉我 7 台设备已注册通知。 使用 Web 控制台发送推送通知时,第一次显示成功(但没有任何结果),再次单击时显示Internal Server error: No devices found
。
使用 swagger 文档,我输入我的 appID 并搜索设备,但没有出现。我运行应用程序,出现一个,我将应用程序放在后台,仍然显示一个。我通过swagger发送通知,说成功,检查注册设备,返回空数组。
我的 ios 应用程序中的代码仅限于为 IMFPush
/ IMFCore
cocoapods 提供的示例,用于注册。我没有任何类型的退订代码。
我在没有运行任何 node.js 代码或 iOS 代码的情况下仅使用 swagger / Web 控制台工具验证了这一点。
我正在使用以前用于其他应用的沙盒配置文件。
我已删除 IMF 推送服务并重新创建。
任何帮助/见解将不胜感激。
【问题讨论】:
您介意提供您的 appID,以便我们查看我们的服务器端日志,看看那里是否可以找到更多调试信息吗? @JamesYoungIBM 当然,它的2495eebe-8178-4bc0-882d-b42a86313b34
其他任何东西都给我一个喊叫
@JamesYoungIBM 试图启动并运行它。从我的 bluemix 中删除了所有内容,包括使用相同沙盒证书的其他应用程序。现在只有这个应用程序运行,同样的事情又发生了。新的 appId 为:ea773cb6-f9d8-4249-b2a1-fc52eff496cf
@JamesYoungIBM 当我试图交换到另一个证书 / appId 时,我注意到我的应用程序 ID 中有错字,这是导致问题的原因。然而,IMFPush 中似乎存在一个错误,当实际上存在错误时,它会返回“成功”
@SimonMcLoughlin 您能否详细说明解决此问题的方法。您的 appID 中的错字在哪里。我想在我的环境中重新创建问题,以便我可以打开适当的缺陷
【参考方案1】:
@Simon 请重新下载推送沙箱证书并将其从钥匙串导出为 .p12。这似乎解决了问题。尽管错误的私钥给了您“无效令牌”,但这似乎很奇怪。因此,当您尝试向无效令牌设备发送通知时,Apple 服务器正在删除设备。请确保您按照正确的步骤生成沙盒或生产证书https://console.ng.bluemix.net/docs/services/mobilepush/t_push_provider_ios.html
【讨论】:
嗨,Pradeep,这不是问题所在。正如我上面提到的,我正在重用我以前使用过的 .p12。我的组织有一个庞大的移动团队,并为各种不同的事物创建可重用的测试凭证。我上周使用了这个证书,很好。我取下了那个 bluemix 应用程序,需要构建另一个应用程序,现在我遇到了这种奇怪的行为。 IMFPush 服务没有向我返回任何“无效令牌”错误。我得到“成功”,然后是“未注册设备”。似乎是服务中的一个错误,它没有返回错误,以及这个问题是什么 @SimonMcLoughlin 您的问题解决了吗?您的捆绑包 ID 中的拼写错误是原因吗? @DaveCariello 是的,它已修复。我一定是从苹果那里得到了一个“无效令牌”,但 IMFPush 告诉我成功 @DaveCariello 之前有效的证书可能已被吊销。只需在developers.apple.com 中检查证书状态是否处于活动状态,如果它被撤销,则状态应该是无效的,所以请编辑并保存。使用已编辑的证书配置推送并尝试发送消息。【参考方案2】:@SimonMcLoughlin 找到了这个问题的根本原因,这是因为私钥错误。要解决此问题,只需使用 .pem 生成 .p12 证书。要使用 .pem 文件创建 p12 文件,请按照以下方法
【讨论】:
以上是关于发送推送后未注册的设备的主要内容,如果未能解决你的问题,请参考以下文章