【问题标题】:Push notifications not working after switching to Enterprise distribution切换到企业分发后推送通知不起作用
【发布时间】:2015-10-03 19:13:30
【问题描述】:

我在使用 ad hoc 分发的应用程序上工作的推送通知。然后我的客户购买了企业许可证,我生成了新的证书/配置文件,归档了应用程序,现在我们通过企业分发,但推送通知不再起作用。为了让他们在企业版上工作,我必须采取哪些步骤?谢谢!

【问题讨论】:

  • 推送通知是在自己的属性服务器中还是在第三方提供商中?
  • 我不确定你的意思。我正在使用 Apple 的推送通知服务。通知是从我网站上的文本框发送的。

标签: ios push-notification apple-push-notifications provisioning-profile enterprise


【解决方案1】:

根据您的描述,听起来好像您在一个开发者帐户下注册的 AppId 上进行了原始实施,然后尝试将构建迁移到第二个开发者帐户。

在 APNS 用语中,生成推送通知有效负载对象的服务器称为提供者,并且必须注册 APNS 证书密钥对才能在您的服务器和相关 Apple 推送通知网关(沙盒或生产)之间建立安全连接.此密钥对为其注册的 AppId 专有,AppIds 为其注册的开发者帐户专有 - 即使在一个帐户下注册的精确匹配的 AppId 证书也不能转移到第二个帐户。如果可能的话,我可以查看您应用的 AppId,在我自己的帐户中注册该 AppId,然后开始向您的应用发送垃圾邮件推送。值得庆幸的是,Bundle Seed ID 是所有 AppID 的静默元素,可以防止这种情况发生!

我已经回答了一个关于 APNS 配置的类似问题,这可能有助于进一步阐明幕后发生的事情,因此您可以阅读 Why I can't add APNs Development iOS typed certificate to provisioning profile

如果您想查看您的 AppID 实际上是不同的,您可以使用几个终端命令从原始配置文件(工作正常的地方)和企业配置文件(工作不工作的地方)导出信息查看差异:

复制并粘贴以下内容,注意将路径更新为您的特定.mobileprovision

/usr/libexec/PlistBuddy -c 'Print :Entitlements' /dev/stdin <<< $(security cms -D -i /path/to/your/original.mobileprovision)

然后再次运行此命令,更新企业配置文件的路径。

此命令的输出将是一个键值对字典:

Dict {
  get-task-allow = true
  aps-environment = development
  com.apple.developer.team-identifier = ABC1DEF2G3
  application-identifier = XYZW1ABC2D.com.mycompany.niftyapp
  keychain-access-groups = Array {
      XYZW1ABC2D.*
  }
}

您会注意到这两个命令的输出是不同的——application-identifier 部分和 keychain-access-groups 部分将具有不同的捆绑种子 ID。

那我该如何解决呢?

修复非常简单,无需在应用程序内进行额外的开发工作!但是,您可能需要使用新的配置文件重新编译:

  • 因为您已经设置好了,您只需要登录到企业帐户并在您的企业帐户的 AppId 中启用推送通知
  • 在该 AppID 的配置中,您需要生成一个新的 SSL 密钥对并将其提交给 Apple,就像您为原始帐户所做的那样。
  • 在推送服务器上安装新证书和私钥
  • 编辑您的 Enterprise Distribution 配置文件,并将其安装到 Xcode 中,注意删除旧的 Enterprise Distribution 配置文件。
  • 使用新的 Provisioning Profile 重建您的应用程序。

重建可能是必要的,因为如果 Enterprise AppID 未启用推送通知,则 Enterprise Distribution Provisioning Profile 的 Entitlements 块将不包含 aps-environment 密钥,因此被禁止与 APNS 网关连接。

【讨论】:

  • @user3925803 很高兴听到您恢复正常运行!
猜你喜欢
  • 1970-01-01
  • 2013-03-28
  • 1970-01-01
  • 2018-06-13
  • 1970-01-01
  • 1970-01-01
  • 2014-04-01
  • 1970-01-01
  • 2017-10-29
相关资源
最近更新 更多