菜鸟教程小白 发表于 2022-12-13 01:44:05

ios - 生产推送通知在之前工作后停止工作


                                            <p><p>我提供这个问题和答案是因为我没有看到我遇到的相当常见的“APNS 无法正常工作问题”的问题,也许我的经验可以帮助其他人。</p>

<p>我在商店中拥有的一个应用程序使用推送通知。该应用程序的版本 1 运行良好。没问题。</p>

<p>我创建了 1.1 版,在沙盒 APNS 上对其进行了测试(运行良好)并提交了它。在 1.1 被批准后的某个时候,我注意到推送通知不起作用。我的设备没有收到任何推送通知,其他用户也没有。这自然让我相信我在创建 v 1.1 时用证书或类似的东西搞砸了。我检查了所有正常的东西 - 沙盒与生产、证书、配置文件等。没有骰子。</p>

<p>--我的服务器设置</p>

<p>我自己正在与 APNS 服务器进行交互,每当我向 Apple 发送 APNS 消息时,我都会得到肯定的响应。我的服务器代码打开与 APNS 网关的连接,为需要的每台设备发送一条 APNS 消息,然后关闭连接。</p>

<p>(下一点是问题的关键)</p>

<p>在我的数据库中的用户记录中,我会跟踪用户是否安装了应用程序的开发版本或应用程序的生产版本。我将此作为用户记录中的标志。我这样做是为了方便使用。 </p>

<p>为简单起见,我有一个脚本来处理开发用户并将他们的 APNS 消息发送到沙盒服务器,并使用单独的代码将生产用户的 APNS 消息发送到生产 APNS 网关。</p>

<p>所有这些都运行良好。我会为你省去我所做的所有重新认证步骤和其他痛苦。</p>

<p>据我所知,一切正常,一切设置正确。所以我听从了兰德女士的建议:“矛盾是不存在的。每当您认为自己面临矛盾时,请检查您的前提。你会发现其中一个是错的。”</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>经过太多小时试图弄清楚发生了什么,我终于确定了问题所在。</p>

<ol>
<li>我已将开发用户(我妻子的 iPhone)变成了生产用户,因为我认为她已经下载了该应用的生产版本</li>
<li>对于这个用户,我的服务器使用从开发应用生成的 deviceID 并将其发送到生产 APNS 服务器</li>
<li>每当我将该设备 ID 作为 APNS 消息之一发送到生产服务器时,即使我会从服务器得到肯定的响应,发送到任何其他设备的 APNS 消息都不会起作用。</li>
</ol>

<p>一旦我将她的用户记录转回作为开发设备,一切又开始工作了。</p>

<p>我多次验证这是问题所在。</p>

<p>因此,使用用于沙盒 APNS 交互的 deviceID 并将其发送到生产 APNS 似乎真的搞砸了。</p>

<p>希望这对将来的某人有所帮助。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 生产推送通知在之前工作后停止工作,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/25789934/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/25789934/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 生产推送通知在之前工作后停止工作