【问题标题】:xcode 8 push notification capabilities and entitlements file settingxcode 8 推送通知功能和权利文件设置
【发布时间】:2017-01-09 01:32:32
【问题描述】:

当使用xcode 8进行推送通知设置时,与xcode 7不同,xcode 8需要开发者打开推送通知功能开关(位于TARGETS -> AppName -> Capabilities,如下图),

然后它会生成如下的 AppName.entitlements 文件

//AppName.entitlements
<key>aps-environment</key>
<string>development</string>

但是对于生产版App,如果我们将字符串改为

//AppName.entitlements
<key>aps-environment</key>
<string>production</string>

然后功能显示警告

而且似乎无论在aps-environment中指定哪个字符串值,我们仍然可以在application:didRegisterForRemoteNotificationsWithDeviceToken:获得推送设备令牌

那么推送通知权利的正确设置是什么? 谢谢

【问题讨论】:

  • 有什么消息吗?我也尝试了“生产”选项,但 XCode 在单击“修复问题”后强制更改为“开发”
  • 我确实存档了应用程序并使用奇怪的development 选项提交到Appstore,并且仍然可以接收远程推送通知。同时,归档应用中的 mobileprovision 文件显示 production aps-environment 选项
  • 在我的应用程序中,当我处于调试状态时,apn 运行良好,当我为企业分发发布时,我 xcode 8.1 iOS 从未收到任何推送通知......

标签: push-notification ios10 xcode8 xcode8-beta6 unnotificationrequest


【解决方案1】:

我今天在 Xcode 8 GM 中遇到了这个问题。在禁用该设置、删除我的开发人员门户配置文件并重新生成它并再次启用该设置后,我能够消除 Xcode 中的警告。请记住,我没有摆弄权利文件。我把它留在了开发环境中,归档后我得到了正确的 aps-environment 设置(生产)。

即使在 GM 中,Xcode 似乎仍然非常错误

【讨论】:

  • 谢谢,我想目前我们必须使用这个奇怪的选项提交应用程序,但仍然可以获得正确的远程推送通知。等待苹果的修复。
  • 这太疯狂了——尽管清除了所有本地配置文件、手动代码签名和导入经过验证的生产配置文件,但我们的团队无法获得改变生产的价值
  • @Shaun 您是尝试在权利文件中更改它还是在归档并尝试提交后在管理器中看到它?如果您在管理器中看到它,请尝试在项目的“常规”选项卡中取消选中“自动管理签名”,然后从下拉列表中选择正确的配置文件。
  • 感谢您回复@Shardon。我们通过在门户上删除我们特定应用程序 ID 的所有证书和配置文件(减去 prod APNS 证书)来让它工作 - 我们还删除了本地配置文件,然后启用了自动代码签名。之后,XCode 8 设置了一个单独的配置文件,用于正常工作的分发。 aps-environment 保持“开发”状态,但在 App Store 本地存档和导出后,我们能够解压缩并验证包含的配置文件是否已将 aps-env 正确设置为生产。通过 TestFlight 构建确认工作
  • 好像已经用正确的证书构建它还不够难。苹果真的搞砸了这个,我不能让它在沙盒模式下工作,这甚至是在发布模式下构建应用程序。
【解决方案2】:

我的问题是我的推送客户端已过时,只能成功推送以调试令牌。我仍在努力解决的其他问题是,我只能通过启用了 legacy-api 的健身房导出应用程序,这不是将 apns 环境设置为“生产”并将其保留为“开发” Embedded-mobile.provision 文件。但是,我现在已经能够通过 xcode 管理器成功部署应用程序以使用 apns(prod)。

【讨论】:

    【解决方案3】:

    我认为更好的解决方案是打开项目包并打开project.pbxproj

    更改CODE_SIGN_ENTITLEMENTS

    CODE_SIGN_ENTITLEMENTS = "your-app/production.entitlements";
    

    【讨论】:

    • 他已经在他的项目中链接了权利文件,问题是Xcode UI显示警告,如果他点击“修复问题”,权利文件将包含值“开发”,这可能是您现在发布应用时想要的。
    猜你喜欢
    • 1970-01-01
    • 2015-11-28
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    相关资源
    最近更新 更多