iOS 推送通知仅由开发设备接收

Posted

技术标签:

【中文标题】iOS 推送通知仅由开发设备接收【英文标题】:iOS Push Notifications Only Received By Development Devices 【发布时间】:2019-04-13 19:57:56 【问题描述】:

我有一个发送一些推送通知的应用程序,实际上一切都像魅力一样工作,我的设备可以毫无问题地接收到推送通知。

我按照here 的说明进行开发,并使用pushok 库开发服务器端。

但我意识到其他设备没有收到我的通知;只有我注册为开发设备的设备才能接收它们。

Device tokens 是正确的,无论是通过 USB 从 Xcode 运行应用程序还是从 AppStore 安装都提供相同的令牌,但它只适用于我的设备。

你有什么想法吗?

更新

我正在为 APNS 使用身份验证令牌,而不是基于证书的身份验证,因此没有生产或沙盒选项。但除了开发设备,我仍然无法接收。

【问题讨论】:

如果以下回答解决了您的问题,请采纳。 【参考方案1】:

请确保您为不同的配置使用正确的 APNS 证书。

在开发设备中运行的应用程序将处于调试配置中,其 APNS 证书将指向 gateway.sandbox.push.apple.com

Appstore 将处于发布配置中,其 APNS 证书将指向 gateway.push.apple.com 而不是沙盒。

所以,请检查您的证书。

NWPusher 是一个出色的工具,用于测试推送通知,仅使用 cert 和 deviceTokens,无需任何代码。希望对你有帮助。

【讨论】:

抱歉,我必须删除正确答案标记,因为如果您查看我提到的文章,我没有使用基于证书的身份验证。我正在使用 Auth Token,所以没有生产或沙盒选项。 不要感到抱歉。没有问题。 :-)【参考方案2】:

我发现了问题;如问题的更新部分所述,我没有使用基于证书的 APNS,因此沙箱或生产证书不是问题。我使用的是 APNS 的 Auth Token Key,沙盒和生产之间没有任何区别。

除了pushok 库还有一个生产或沙箱标志,我在沙箱中错过并忘记了。当我重新检查 pushok 的文档时,我看到了下面的代码

$client = new Client($authProvider, $production = false);

更改为 $production = true 解决了我的问题。

【讨论】:

以上是关于iOS 推送通知仅由开发设备接收的主要内容,如果未能解决你的问题,请参考以下文章

iOS 本地推送通知未唤醒设备

打包iOS应用程序后推送通知停止工作

如何注册 iOS 设备以接收推送通知?

未收到 Phonegap iOS 推送通知

Phonegap iOS 推送通知示例

打包 iOS 应用后推送通知停止工作