如果可以在开发设备上成功发送推送通知,为什么应用程序在安装ad-hoc时无法收到推送通知?

时间:2017-03-08 08:50:39

标签: ios apple-push-notifications

我正在开发一个使用推送通知的应用。在开发设备上测试时(例如使用连接到Mac的电缆安装),它可以正确接收推送通知。但是当使用ad-hoc手段安装它时,没有收到推送通知。

但是,应用程序可以在开发和特殊方案中获取设备ID。通过在服务器上接收和记录的设备ID可以明显看出这一点。服务器在开发和临时方案中接收设备ID。但即便如此,如果使用临时方式安装应用程序,它也不会从服务器接收任何推送通知。

PS:

  • 我使用Xcode 8.2.1和Swift 3。
  • 我使用SSL推送通知创建了证书以进行分发和开发,并在Xcode上包含(双击)证书。
  • 我已确保推送通知的功能为ON。推送通知的两个步骤也有刻度。
  • 我使用Xcode存档应用程序自动管理登录.Xcode应该为我链接所有正确的证书,包括用于分发和开发的SSL推送通知的证书......对吗?

您对此有何不妥以及解决方案有何看法?感谢。

编辑:

当我尝试使用手动代码签名时,我得到的是:

enter image description here

我无法解决状态问题。我知道调试应该有不同的配置。但就目前而言,这不是主要问题。如果我能解决状态问题,我也可以解决不同的情况。

2 个答案:

答案 0 :(得分:1)

您需要确保adhoc环境中推送通知的证书是否已正确创建。其次,UDID正确地保存在服务器上。

答案 1 :(得分:0)

首先,您应该通过在bash中运行命令security cms -D -i yourprovisionname.mobileprovision来检查ipa中移动设备的uuid是否正确。

  

尾随线
    <密钥GT; UUID< /密钥GT;
    <串GT; XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX< /串GT;

您可以解压缩.ipa文件并在Payload / App中找到embedded.mobileprovision

如果mobileprovision是正确的,您应该检查您的认证。

请注意生产环境的认证与沙箱不同。

检查认证后,您可以检查服务器端。当我们推送到沙箱(开发)时,我们会推送到gateway.sandbox.push.apple.com,并且在分布式环境中,我们推送到gateway.push.apple.com(没有沙箱)。