У меня была та же проблема, описанная mootymoots. Я решил эту проблему, добавив несколько дополнительных параметров в Entitlements.plist.
Я использую TestFlight для развертывания приложения в тестовой группе, поэтому я чувствовал, что важно внимательно следовать инструкциям TestFlight для генерации IAP с использованием Xcode 4. Полное удаление Entitlement .plist казался скорее взломом, чем решением.
Когда я использовал мастер «Новый файл ...» для создания Entitlements.plist, он генерировал следующее:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>get-task-allow</key>
<true/>
</dict>
</plist>
Когда я пытался создать архив, он выдавал предупреждение «Право идентификатора приложения неправильно отформатировано ...».
Благодаря некоторому поиску в Google, я понял, что plist нужны два дополнительных параметра с переменными XCode в качестве значений. См. Фрагмент ниже для включения идентификатора приложения и группы ключей доступа. (Я не думаю, что последний имел какое-либо отношение к проблеме, которая у меня была, хотя)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>get-task-allow</key>
<false/>
<key>application-identifier</key>
<string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
</array>
</dict>
</plist>
Как только я добавил эти параметры, архив прекратил выдавать предупреждение, и я смог распространять его с помощью TestFlight.