我创建了一个使用APNS的应用程序。当我使用开发人员证书并且工作正常时,我收到了推送通知。我通过Adhoc方法安装它。现在我需要将我的应用程序上传到appstore。我使用分发证书构建我的应用程序,并将相同的内容放在服务器中,但没有收到任何通知。这是我第一次这样做。我经历了这么多论坛,我遇到了很多情况。一个是,令牌ID(我认为它与设备令牌相同)在开发和生产模式下应该是不同的,但我得到相同的令牌ID。但我仍然不确定这个问题。 所以我有一些问题,我上传到appstore时应该在我的应用程序和服务器上使用哪个证书?我应该使用Sandbox还是生产服务器? 请让我清楚地了解所有这些。 感谢
答案 0 :(得分:2)
沙箱证书用于开发,生产证书用于提交AppStore的应用程序。正确的证书链接到开发配置文件或分发(AppStore)配置文件。
要记住的一件事是,如果您创建推送证书 AFTER 创建原始配置文件,则重新创建配置文件。如果为您的应用启用了推送,则配置文件应包含“aps-environment”字符串,否则推送将无效。如果您的应用最初不包含推送(此功能 - 包括证书 - 稍后添加),那么开发和AppStore的配置文件将不包含'aps-environment'字符串,因此推送不会工作
您可以在文本编辑器中打开配置文件,并查找“aps-environment”字符串以确保它存在。这是我一直遇到的推动的主要问题,所以我猜你也遇到了这个问题。
简历的重新创建很简单,只需在Apple Developer门户上打开它们,更改一些设置并保存即可。下载并安装新配置文件以使用它。
编辑:好吧,我推动使用Ad-Hoc配置文件。首先,我建议您从github下载以下项目,这对于测试开发和生产推送非常方便:
https://github.com/Zambiorix/Apple-Push-Notification-Test
接下来我想知道你是否能够调试应用程序。如果您能够调试应用程序,那么您就不会使用Ad-Hoc配置文件。当您尝试使用Ad-Hoc配置文件进行调试时,应用程序将启动,然后崩溃(某些消息涉及 get-task-allow )。
答案 1 :(得分:2)
Wolfgang Schreurs
提到的所有上述内容,除此之外,请确保在测试您使用的adhoc软件包的推送通知时
ssl://gateway.push.apple.com:2195
而不是
ssl://gateway.sandbox.push.apple.com:2195
由于Apple也使用AdHoc配置文件的生产标识符,如果您使用文本编辑器打开它,以下将是adhoc / distribution配置文件中的详细信息。
<key>Entitlements</key>
<dict>
<key>application-identifier</key>
<string>something.com.yourappname</string>
<key>aps-environment</key>
<string>production</string> <--Notice This
如果你检查开发资料,那就像是,
<key>Entitlements</key>
<dict>
<key>application-identifier</key>
<string>something.com.yourappname</string>
<key>aps-environment</key>
<string>development</string> <--Notice This