内容: 如果我的应用程序是通过XCode安装的,推送通知始终可以正常工作,但如果通过iTunes安装,那么它们是否有效取决于用于签署分发的配置文件。 但是一些以前不再工作的配置文件组合,以及现在没有的一些配置文件组合。
我的主要问题是应该使用哪种配置文件组合来签署使用推送通知的临时distrubtion,而次要问题是为什么我观察到一段时间内行为的不一致。
详情: 我正在开发一个使用APN的应用程序,并且当应用程序作为临时应用程序分发并通过iTunes安装时,无法收到通知。这些问题显然与它没有使用正确的配置文件签名有关,但过去几周的一些观察结果让我对我应该使用什么配置文件签署分配感到困惑。
我的印象是,ad-hoc配置文件应该在需要签名的两个阶段使用 - 首先在构建存档时将其设置为XCode中的代码签名标识,然后再签署分配。我一直这样做,并且一直在工作 - 设备已经能够收到推送通知。
几个星期前,设备停止接收推送通知,但如果使用我的开发配置文件签署了构建并通过XCode安装,则能够接收到它们,只有特定的发布才停止接收它们。经过几天的尝试后,我最终删除了推送和临时配置文件并创建了新的配置文件,一切都恢复了......直到几天前发生同样的事情。
我再次创建了一个新的ad-hoc配置文件,但我仍然无法获得ad-hoc distrubtions来接收推送通知(尽管如果应用程序是通过XCode安装的,设备会再次收到它们)。最后,我改变了从使用ad-hoc配置文件签署分发到使用apple推送配置文件,并且事情再次开始工作。 所以现在我很困惑:
- am I supposed to sign ad-hoc distrubtions using a) the ad-hoc profile for the archive and then ad-hoc profile again when signing the distribtion of the archive or b) the ad-hoc profile for the archive and the push profile when signing the distribution of the archive?
对于XCode安装,我将代码签名标识设置为我的开发配置文件。对于ad-hoc distrubtions,我将归档的代码签名标识设置为ad-hoc配置文件,然后在归档的distrubtion部分使用ad-hoc OR push再次签名。 OR是存在的,因为有时一个组合有时候其他组合起作用,因此我的整个问题是它应该是哪种组合,为什么我观察到哪种组合起作用而哪种组合起作用不一致。
由于
编辑: 这是一个配置文件列表,即如果我登录到Apple配置门户,然后单击配置选项卡,然后单击它列出的开发选项卡:
1)Apple推送配置文件 - 需要启用APN
2)NNN开发简介(其中NNN是项目名称)
3)iOS开发资料
4)iOS团队配置文件
如果我单击配置选项卡,然后在分发选项卡上列出这些:
1)Ad-hoc
在我多年来对书籍,文档,论坛的广泛搜索中,我还没有找到权威的解释,说明在什么情况下应该使用上述哪些组合和将推送通知考虑在内的。 一个问题是大多数文档和示例都没有考虑推送通知,这是一个重要的遗漏,因为如果没有正确顺序的配置文件的正确组合,应用程序可以安装到设备上,但永远不会收到推送通知。
答案 0 :(得分:3)
我有一些类似的痛苦。
我回复了以下内容:
- am我应该使用a)对存档的ad-hoc配置文件签名ad-hoc distrubtions,然后在签名时再次使用ad-hoc配置文件 分发档案或b)档案的临时档案 签署存档分发时的推送配置文件?
使用ad-hoc或开发来签署存档构建并不重要。 所有不同之处在于Organizer-Archives中的分发按钮时的签名。
使用开发配置标识对其进行签名。不是临时的。
我发现签名令人困惑,因为有2个以上的地方可以定义签名操作。但在这个特定情况下,我已经完成了受控测试,并发送了临时发行版,我甚至不知道在应用程序正式发布之前是否可以在这些应用程序中获取远程通知,并且可以使用生产网关推送。
尽管如此,我认为应该可以在app-store发布之前推广ad-hoc发行版。
答案 1 :(得分:2)
经过两天试图弄清楚同一问题出了什么问题,我发现通过xcode安装时,通知与开发(gateway.sandbox.push.apple.com)网址一起使用。将其导出为ipa(ad-hoc)并手动安装需要从生产url gateway.push.apple.com(包括生产密钥)发送通知。因此,创建了两个密钥后,我设法在处理xcode时使用开发URL发送通知,并在从导出的ipa安装时使用生产。
答案 2 :(得分:0)
如果您处于使用开发应用程序证书和配置的开发阶段,则还应为服务器上安装必须安装的PUSH通知的开发证书,以便通过Apple测试APNS进行身份验证。
如果处于预生产或生产阶段,您应该使用分发证书和ADHOC或APPSTORE配置为您签署应用程序,您还应该生成必须安装在与Apple的APNS通信的服务器上的分发PUSH证书。
我可以建议你留意防火墙阻塞的端口(这样的痛苦也因为苹果的apns有很宽的ip范围),并注意你的应用程序的苹果ID必须与用于生成推送证书的曾经一致。
希望这有帮助,
安德烈