1

摘要:如果我的应用程序是通过 XCode 安装的,推送通知总是可以正常工作,但如果通过 iTunes 安装,那么它们是否工作取决于用于签署分发的配置文件。但是一些曾经有效的配置文件组合不再有效,而有些现在无效。

我的主要问题是应该使用哪种配置文件组合来签署使用推送通知的临时分发,次要问题是为什么我观察到随着时间的推移行为不一致。

详细信息:我正在开发一个使用 APNs 的应用程序,并且当应用程序作为临时应用程序分发并通过 iTunes 安装时,在获取通知到达时遇到问题。这些问题显然与它没有使用正确的配置文件签名有关,但过去几周的一些观察让我对我应该使用哪些配置文件来签署分发感到困惑。

我一直认为在需要签名的两个阶段都应该使用 ad-hoc 配置文件 - 首先在构建存档时将其设置为 XCode 中的代码签名身份,然后对分发进行签名。我一直在这样做并且它一直在工作 - 设备已经能够接收推送通知。

几周前,设备停止接收推送通知,尽管如果构建使用我的开发配置文件签名并通过 XCode 安装,则能够接收它们,但只有 ad-hoc 发行版停止接收它们。经过几天的尝试,我最终删除了推送和临时配置文件并创建了新的配置文件,一切都恢复正常了……直到几天前发生了同样的事情。

我再次创建了一个新的临时配置文件,但我仍然无法让临时分发接收推送通知(尽管如果应用程序是通过 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 安装,我将代码签名身份设置为我的开发配置文件。对于临时分发,我将存档的代码签名身份设置为临时配置文件,然后在存档的分发部分再次使用临时或推送对其进行签名。OR 的存在是因为有时一种组合有效,有时另一种组合有效,因此我的整个问题是它应该是哪种组合以及为什么我观察到哪种组合有效而哪种无效的不一致。

谢谢

编辑:这是一个配置文件列表,即如果我登录到 Apple 配置门户,然后单击配置选项卡,然后单击开发选项卡,它会列出这些:

1) Apple Push Profile - 需要启用 APNs

2) NNN Development profile(其中NNN是项目名称)

3) iOS 开发简介

4) iOS 团队配置文件

如果我单击配置选项卡,然后在分发选项卡上列出这些:

1) 临时

在我几个月来对书籍、文档、论坛的所有广泛搜索中,我还没有找到明确的解释,说明在什么情况下应该使用上述哪些组合以及哪些考虑推送通知。一个问题是大多数文档和示例都没有考虑推送通知,这是一个关键的遗漏,因为如果没有以正确的顺序正确组合配置文件,应用程序可以安装到设备上,但永远不会收到推送通知。

4

3 回答 3

3

我也有过类似的痛苦。

我回应如下:

  • 我是否应该使用 a) 存档的 ad-hoc 配置文件,然后在签署存档的分发时再次使用 ad-hoc 配置文件或 b) 存档的 ad-hoc 配置文件和推送配置文件签署档案的分发?

使用 ad-hoc 或开发对归档构建进行签名并不重要。不同之处在于 Organizer-Archives 中分发按钮时的签名。

使用开发供应标识对其进行签名。不是临时的。

我发现签名令人困惑,因为有 2 个以上的地方可以定义签名操作。但是在这种特定情况下,我已经完成了受控测试,并发送了临时分发,我什至不知道是否有可能在应用正式发布之前将远程通知发送到这些应用中,并且可以使用生产网关推送.

尽管如此,我相信在应用商店发布之前推动临时分发应该是可能的。

于 2012-11-27T02:24:56.817 回答
2

两天后试图找出同样的问题出了什么问题,我发现当通过xcode安装时,通知与开发(gateway.sandbox.push.apple.com)url一起工作。将其导出为 ipa (ad-hoc) 并手动安装需要从生产 url gateway.push.apple.com 发送通知(包括生产密钥)。因此,在创建了这两个密钥之后,我设法在处理 xcode 时使用开发 url 发送通知,并在从导出的 ipa 安装时使用生产发送通知。

于 2015-05-26T23:29:44.533 回答
0

如果您处于使用开发应用程序证书和配置的开发阶段,您还应该为 PUSH 通知生成开发证书,该证书必须安装在服务器上以通过 Apple 测试 APNS 进行身份验证。
如果处于预生产或生产阶段,您应该使用分发证书和 ADHOC 或 APPSTORE 配置为您的应用程序签名,您还应该生成一个分发 PUSH 证书,该证书必须安装在与苹果 APNS 通信的服务器上。我可以建议您密切注意防火墙阻止的端口(这种痛苦也是因为苹果的 apns 具有广泛的 ip 范围)并注意您的应用程序的苹果 ID 必须与曾经用于生成推送证书的 ID 匹配。希望这会有所帮助,
安德里亚

于 2012-10-30T15:32:44.913 回答