使用两个生产 APN 证书

Posted

技术标签:

【中文标题】使用两个生产 APN 证书【英文标题】:Use two production APN Certificate 【发布时间】:2019-09-05 08:00:32 【问题描述】:

我正在开发一个有两个目标的应用程序,一个用于企业内部分发,另一个用于 Appstore。 Apple dev 帐号有两种,一种是企业版(用于企业目标),另一种是标准版,用于 Appstore。

我使用内部目标仅用于测试目的(我有很多测试设备,所以我正在使用它)。我有一个 Appstore 目标的生产推送通知证书,我也想为内部目标添加一个新证书。我很好奇这是否会成为我的 Appstore 目标的问题?

所以我的问题是:我可以有两个沙盒和生产 apn 证书,一个用于 Appstore,另一个用于内部?通知会混合吗?

【问题讨论】:

问题:你是如何用两个不同的账户注册同一个bundle ID的? 它们没有相同的捆绑 ID。一个是“com.mycompany.myappinhouse”另一个是“com.mycompany.myapp” 【参考方案1】:

如果您对每个应用程序有不同的捆绑 ID,那么每个 APNS 证书 将是不同的,因为它们被视为两个不同的应用程序。

所以,是的您可以拥有两个沙盒和生产 APNS 证书(每个捆绑 ID 一个); 通知不会混合。

【讨论】:

有官方文档吗?谢谢。 这里是官方 APNs 证书创建文档的链接:developer.apple.com/documentation/usernotifications/… 它没有关于两个生产证书以及它们将如何使用的任何信息。 通过拥有不同的捆绑 ID,您实际上拥有了两个独立的应用程序。因此,请按照程序为每个捆绑包 ID 创建一个生产证书。【参考方案2】:

没有专门用于处理同一项目中的单独目标的官方 APNs 文档,因为 APNs 与您的项目/目标设置无关。

正如您在Setting Up a Remote Notification Server 中看到的那样,

远程通知的传递涉及几个关键组件:

贵公司的服务器(称为提供商服务器) Apple 推送通知服务 (APN) 用户的设备 您的应用(在用户设备上运行)。

以上列表中的每一项都由

标识 Apple 推送通知服务(生产或沙盒/开发):用于从服务器触发 APN 的 URL 用户的设备:您的应用在registers for remote notification 时获得的设备令牌 您的应用(在用户设备上运行):捆绑 ID 和用于运行应用的配置文件 (dev/appstore/adhoc/inhouse) 您公司的服务器:APNs certificate you create,在开发门户中为您提供捆绑 ID(如上所述),并用于触发对特定设备的远程通知

如您所见,对于哪个服务器可以触发哪个远程通知,或者应用代码、项目或目标的设置方式没有限制。

单个服务器(甚至是开发人员机器,从命令行使用curl)可以针对上述条件的所有正确组合触发推送通知。您可以确保为正确版本的应用程序使用正确的证书。例如如果您将 InHouse 应用的 APNs 证书与 AppStore 应用的设备令牌一起使用,则会失败,等等。

许多开发人员(包括我自己)已经从命令行触发推送通知,发送到同一应用的多个版本,具有不同的目标并且它可以工作。

【讨论】:

所以我可以用不同的服务器触发不同的推送通知,不同的应用程序目标都用于生产? 是的,绝对......你的服务器、你的应用和苹果的 APNs 是完全不同的实体,它们不需要知道任何关于彼此的东西......除了我上面提到的标识符......所以如果你有一个开发服务器为您的所有环境提供正确的证书和设备令牌的推送通知......它仍然可以工作(不建议,但可以工作)【参考方案3】:

如果你有两个目标,那么是的。只要确保你的应用在使用时处于正确的目标。当你将你的应用放入 App Store 时,使用 Appstore 目标。

【讨论】:

以上是关于使用两个生产 APN 证书的主要内容,如果未能解决你的问题,请参考以下文章

FCM 生产 APN 不起作用

apn 证书已过期,推送通知不再起作用

苹果推送通知不再到达

Apple 开发者推送通知 APN 证书因过度使用而被吊销(被 Apple 禁止)?

即使 http2 返回代码 200,iOS APNS 也不会在设备上用于开发和生产

APN 和 Ad-Hoc 构建