2017-03-08 17 views
0

我正在开发一个使用推送通知的应用程序。当在开发设备上进行测试时(例如使用连接到Mac的电缆进行安装),它可以正确接收推送通知。但是当它使用临时手段安装时,不会收到推送通知。如果推送通知可以在开发设备上成功发送,为什么安装ad-hoc时应用程序无法收到推送通知?

但是,应用程序可以在开发和临时场景中都获得设备ID。这通过在服务器上接收并记录的设备ID来证明。服务器在开发和临时方案中均接收设备ID。但即使如此,如果应用程序是使用临时手段安装的,它不会收到来自服务器的任何推送通知。

PS:

  • 我使用的Xcode 8.2.1和斯威夫特3.
  • 我一直在使用SSL推送通知的分布和发展创建的证书,并已列入(双击)证书在Xcode上。
  • 我确保推送通知功能处于开启状态。推送通知的两个步骤也有滴答。
  • 我使用Xcode自动存档应用程序自动管理登录。Xcode应该为我链接所有正确的证书,包括用于分发和开发的SSL推送通知证书......对吗?

你对这个问题有什么想法,并解决这个问题?谢谢。

编辑:

当我试图用手工代码签名,这里就是我的了:

enter image description here

我解决不了的地位问题。我知道调试应该有不同的配置。但现在,这不是主要问题。如果我可以解决状态问题,我也可以解决不同的配置文件。

+0

您是否试图通过选择正确的证书和供应手动存档应用程序? –

+0

@HuseinBehboodiRad我无法手动存档应用程序,因为显然Xcode 8比Xcode 7更加繁琐。在Xcode 8中工作的一些旧步骤不适用于Xcode 8.例如,当我选择我的配置文件时,它会一直说''Provisioning profile 不包括签名证书“​​iPhone Distribution:''。这在Xcode 7中不会发生,我不知道如何解决这个问题。现在我使用Xcode自动生成的配置文件(XC iOS Adhoc )手动创建存档文件。祝我好运 –

+0

@HuseinBehboodiRad即使使用Xcode自动生成的配置文件,它仍然无法正常工作 –

回答

1

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

+0

“确保adhoc证书创建正常“ - >如何确保?如何发现它没有被正确创建?但是,“UDID正确地保存在服务器上” - >我可以确保它正确保存。 –

+0

当您从服务器传递UDID时,它会为您提供日志,您是否可以共享该日志。从这一点,你将会了解你的证书。 –

0

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

后线
<关键> UUID < /键>
<串> XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX < /串>

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

如果mo bileprovision是正确的,你应该检查你的认证。

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

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