xcode 8 推送通知功能和授权文件设置

xcode 8 push notification capabilities and entitlements file setting

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

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

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

但对于生产版本应用程序,如果我们将字符串更改为

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

然后 Capabilities 显示警告

而且似乎无论在aps-environment中指定哪个字符串值,我们仍然可以在application:didRegisterForRemoteNotificationsWithDeviceToken:

处获取推送设备令牌

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

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

似乎 Xcode 即使在 GM

中也仍然有很多错误

我的问题是我的推送客户端已过时,只能成功推送到调试令牌。我仍在努力解决的另一个问题是,我只能通过启用了 legacy-api 的 gym 导出应用程序,这并没有将 apns-environment 设置为 'production' 并将其保留为'development' 在 'embedded-mobile.provision' 文件中。但是,我现在已经能够通过 xcode 组织者成功部署该应用程序以使用 apns(prod)。

我觉得比较好的解决办法是打开工程包然后打开project.pbxproj

改变CODE_SIGN_ENTITLEMENTS

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