在 Technical Note TN2265 – Troubleshooting Push Notifications 中提到用下列命令来确认 aps-environment 的值:
$ codesign -d --entitlements - <YourAppName>.app
那么这个 <YourAppName>.app 到底在哪里呢?
在 Xcode 中使用菜单 Product – Archive 后来到 Organizer – Archives 列表,在 Validate、Distribute 前我们应该执行该命令来确认一下 aps-environment 的值为 production,然后再 Submit 到 iTunes Connect 等待 Review。
在 Organizer – Archives 列表内,选择将要 Distribute 的 archive,Secondary Click 后选择“Show in Finder”,这会让 Finder 打开路径
/Users/<YourOSUsername>/Library/Developer/Xcode/Archives/<yyyy-MM-dd>
,并选中了
<YourAppName> <M-d-y h.mm a>.xcarchive
, <YourAppName>.app 就在这个选中的文件夹内了,也即
/Users/<YourOSUsername>/Library/Developer/Xcode/Archives/<yyyy-MM-dd>/<YourAppName> <M-d-y h.mm a>.xcarchive/Products/Applications/<YourAppName>.app
(其中的 <yyyy-MM-dd> 是年月日,<M-d-y h.mm.a> 是日期时间。)
使用命令检查 aps-environment 的值,比如,这里查出来其值为“production”:
$ codesign -d --entitlements - '/Users/<YourOSUsername>/Library/Developer/Xcode/Archives/<yyyy-MM-dd>/<YourAppName> <M-d-y h.mm a>.xcarchive/Products/Applications/<YourAppName>.app'
Executable=/Users/<YourOSUsername>/Library/Developer/Xcode/Archives/<yyyy-MM-dd>/<YourAppName> <M-d-y h.mm a>.xcarchive/Products/Applications/<YourAppName>.app/<YourAppname> ??qq? <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>application-identifier</key> <string><Your Team ID>.<Your Bundle ID></string> <key>aps-environment</key> <string>production</string> <key>get-task-allow</key> <false/> <key>keychain-access-groups</key> <array> <string><Your Team ID>.<Your Bundle ID></string> </array> </dict> </plist>