Настройка:
Mac OS X 10.8 + Xcode 4.4
Мое простое решение:
- ПереизданиеВаш специальный профиль обеспечения после того, как вы настроили push-уведомления для своего идентификатора приложения и импортировали их в Xcode.
- Просмотрите вашу папку .xcodeproj (щелкните правой кнопкой мыши -> Показать содержимое пакета) и удалите
xcuserdata
папка. - Вот и все;)
Некоторые подсказки по этому вопросу:
После активации Push-уведомлений для моего приложения я вдруг не смогбольше не создавать специальные файлы.Я столкнулся с ошибками в журнале консоли на своем iPhone при попытке установить мое приложение, например:
Apr 1 20:56:10 unknown installd[384] <Error>: entitlement 'keychain-access-groups' has value not permitted by a provisioning profile
Apr 1 20:56:10 unknown installd[384] <Error>: entitlement 'get-task-allow' has value not permitted by a provisioning profile
Apr 1 20:56:10 unknown installd[384] <Error>: entitlement 'application-identifier' has value not permitted by a provisioning profile
Apr 1 20:56:10 unknown installd[384] <Error>: 2ff66000 verify_signer_identity: Could not copy validate signature: -402620394
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 preflight_application_install: Could not verify executable at /var/tmp/install_staging.44jV0O/foo_extracted/Payload/PersonalTrainer-Tester-iPhone.app
Apr 1 20:56:11 unknown com.apple.itunesstored[392] <Notice>: MobileInstallationInstall: failed with -1
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 install_application: Could not preflight application install
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 handle_install: API failed
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 send_message: failed to send mach message of 71 bytes: 10000003
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 send_error: Could not send error response to client
Есть техническая заметка , в которой рекомендуется использовать codesign -d --entitlements - <YourAppName>.app
, чтобы проверить,Ваше приложение правильно подписано для Apple Push-уведомлений.В случае, если выходные данные команды codeign не имеют aps-среды, настроенной на производство или разработку, есть что-то подозрительное!
Насколько я знаю, мои приложения, подписанные с помощью профиля обеспечения adhoc, всегда имеютembedded.mobileprovision
внутри папки <YourAppName>.app
с определенной частью в ней, такой как:
<key>Entitlements</key>
<dict>
<key>application-identifier</key>
<string>ABCDEFGH.com.myappname.tester</string>
<key>aps-environment</key>
<string>production</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>ABCDEFGH.*</string>
</array>
</dict>
После использования codeign я понял, что в настоящий бинарный файл в <YourAppName>.app
также включен некоторый XML, который что-то говоритсильно отличается от моего embedded.mobileprovision
файла:
<!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>ABCDEFGH.com.myappname.tester</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>ABCDEFGH.com.myappname.tester</string>
</array>
</dict>
</plist>
Я предполагаю, что это является причиной сообщения об ошибке, которое мы все испытываем.(хотя эта ошибка может иметь несколько других корней, как и другие посты в stackoverflow, предлагают)
The executable was signed with invalid entitlements.
The entitlements specified in your application's Code Signing Entitlements
file do not match those specified in your provisioning profile. (0xE8008016).
Я предполагаю, что в XCode есть какая-то ошибка, которая препятствует обновлению настроек в вашем списке в ваших схемахчто приводит к тому, что ваше приложение будет подписано с неправильным профилем обеспечения в конце.Таким образом, удаляя папку xcuserdata, вы удаляете все схемы.Поэтому Xcode воссоздает их в следующий раз с правильными настройками, и вы снова счастливы.