Xcode 8 APS环境权限无法设置为生产环境

40
我已经在我的应用程序上实现了推送通知。我想提交新的应用更新,但遇到了APS环境未设置的错误。我点击“修复问题”,它创建了包含开发环境设定的授权文件。

为了提交应用程序,我显然希望将其设置为生产环境。我将值更改为“production”,然后继续归档应用程序以进行提交。在推送通知的功能部分中,它会抛出一个错误,最后一部分“将推送通知授权添加到您的授权文件中”变成了红色。

因此,当我点击“修复问题”时,它会将APS环境的值更改为开发环境。我找到了一个建议,即检查配置文件并查找APS环境属性。我按照流程进行了存档和选择“上传到应用商店”。

当我最终到达摘要时,我点击附加到二进制文件和授权文件的配置文件。
我在文本编辑器中打开了配置文件,并查找了APS环境属性。我确实找到了该属性,并且在配给文件中被设置为"production"。
我决定尝试另一个建议,那就是重新创建分发配置文件。我确实新建了一个,但这个方法也行不通。

据我所知,APS环境属性基于授权文件中的值。希望能得到任何帮助。谢谢。
4个回答

18

关闭Capabilities中的“推送通知”,然后重新构建。

更新

经过数小时的调试,无论你如何配置Xcode8或使用任何方案(调试或生产),你总会从APNS获得一个用于开发环境的设备令牌。我尝试从Xcode8.1直接在我的测试设备上构建具有生产方案的应用程序。然后我从App Store安装了我的应用程序,这个应用程序是两周前使用相同配置从Xcode8.1存档的,App Store版本的通知服务运行良好,这证明Xcode确实为生产环境设置了正确的授权值。因此,解决方案是:不要修改授权文件,在Capabilities中保持“推送通知”开关打开,对Xcode提供的任何修复进行处理。希望这可以帮到你。


1
这个苹果的东西真是让人困惑。我快速搜索了一下“aps-environment”入口的文档,提供的信息几乎没有。你知道其他的资源吗?也许有一些SO的回答? - Zoltán
很遗憾,我没有相关资料,对此感到抱歉。我确实阅读了一些相关的帖子,但这些文章中没有提及或引用任何苹果公司的官方文件。 - yuchen
1
我可以确认,这个描述是正确的。触发器决定使用APN“沙盒”还是“生产”服务器,似乎是证书(例如预配配置文件)用于签署应用程序(开发=沙盒/Ad-hoc和分发=生产)。 - leviathan

7

对于我来说,XCode 8的“自动管理签名”功能会根据我们选择的部署方法的配置文件,在归档时自动并正确地完成。


4

尝试在项目设置中重新启用“推送通知”功能,这对我有用。如果这不能帮助您,请尝试删除项目中的权限文件,然后再次在项目设置中启用“推送通知”功能。


我尝试了你提供的两个建议,但仍然无法在归档时获得摘要上的授权。感谢你的帮助。 - user2337981
也许阅读以下内容会有所帮助: https://pewpewthespells.com/blog/migrating_code_signing.html https://dev59.com/-VkS5IYBdhLWcg3ww45d?answertab=votes#tab-top - Mr.Fingers
5
根据我理解,新的苹果签名方式不需要你自己更改 ***.entitlements 文件。当你使用 XCode 进行归档构建并导出(通过组织者)时,XCode 会为你完成这个步骤,就像是创建 ad-hoc 或分发到 App Store。它将设置正确的环境。 - Mr.Fingers
2
感谢您的帮助,Fingers先生。根据我的研究,我同意您所说的话。 - user2337981
如果我为企业分发编译一个ipa文件,然后打开它,集成的授权文件会在aps-enviroment键下显示开发。 - matti157
@Mr.Fingers 是的,那也是我看到的。不幸的是,依赖未记录的行为可能是... - onmyway133

0

在尝试了Stack Overflow上的所有答案后,发现问题出在entitlement.plist文件中,can be debugged标志被设置为TRUE

  1. 尝试在Xcode目标能力中禁用重新启用推送通知。
  2. Can be debugged标志应该设置为NO以提交到AppStore。

构建和归档。您应该能够看到环境设置为生产环境。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接