捆绑标识符和推送证书… aps-environment授权错误
我读过xcode从哪里获取应用程序的标识符? , 来自{PRODUCT_NAME}的XCode包标识符格式设置 ,并加载更多,但…
我试图得到推送通知,并得到可怕的
“错误域= NSCocoaErrorDomain代码= 3000”没有有效的应用程序find“aps环境”权利string“UserInfo = 0x15b200 {NSLocalizedDescription =没有有效的'aps环境'权限stringfind应用程序}”错误。
我相当肯定,我已经正确地遵循了所有步骤,其中包括:
- 在提供证书之前做好推送证书
- 做了一个'Entitlements.plist'
- 添加一个get-task-allow布尔值,并将其设置为true(即席发布)
唯一的想法,我不能让我的头左右是捆绑标识符
推送证书是
XXXXXXXXXX.com.julianbaker.pwcnewsuk
PwCNewUK-Info.plist中的Bundle标识符是for
com.julianbaker.${PRODUCT_NAME:rfc1034identifier}
如果我手动将其更改为
com.julianbaker.pwcnewsuk
由于该应用被视为PwCNewsUK,我得到一个UDID不匹配的错误
当我谷歌search这似乎有一些困惑,但似乎他们必须匹配?
题:
Bundle Indentifer是什么要匹配推送证书的
XXXXXXXXXX.com.julianbaker.pwcnewsuk?
题:
我是否需要为供应configuration文件添加“aps-environment”权限,如果是,在哪里以及如何? (参见http://www.airplaysdk.com/node/3174等等)
爱iPhone的发展,但她可以成为一个headbanger有时!
当我正在从一个开发环境转移到一个正在开发的应用程序上的生产环境中时,我发现了这个问题。 这个过程涉及创build一个新的configuration文件,一个新的应用程序ID等。我创build了应用程序ID和一个configuration文件,但团队代理不得不configuration推送通知。 当我尝试使用新configuration文件恢复testing(在configuration了推送通知的应用程序之后)时,遇到了“无效的”aps-environment“应用程序的权限string”问题。 然后我记得在文档中读一点警告:
“您必须以某种方式修改configuration文件(例如,切换选项)以生成新的configurationconfiguration文件。如果configuration文件不是如此”变脏“,则会为您提供没有推送权利的configuration文件。 “
来源: 本地和推送通知编程指南
对我来说,“弄脏”configuration文件并重新安装是解决问题所需要的。 根据文档,这是必需的,因为configuration文件是在应用程序configuration为推送通知之前创build的。 这可能会或可能不会帮助任何人,但是这可能解释(并消除)需要手动添加任何内容到configuration文件。
我遇到了同样的“无效”aps环境“应用程序的权利string”问题,但上述解决scheme并不适合我。
我找不到关于这个错误的很好的文档,甚至只是关键的“APS环境”。
经过一番修改之后,这里是为我解决了这个问题:
使用文本编辑器打开开发configuration证书“Appname.mobileprovision”,查找关键字“权利”,然后将所有在这里find的值添加到您的代码签名权利设置所引用的权利文件中。
这是一个你可以在里面find什么键/值的例子:
<key>application-identifier</key> <string>xyz.com.xyz.xyz</string> <key>aps-environment</key> <string>development</string> <key>com.apple.developer.ubiquity-container-identifiers</key> <array> <string>xyz.*</string> </array> <key>com.apple.developer.ubiquity-kvstore-identifier</key> <string>xyz.*</string> <key>get-task-allow</key> <true/> <key>keychain-access-groups</key> <array> <string>xyz.*</string> </array>
将所有这些值添加到我的权利文件后,我的应用程序成功build立,我终于可以回到工作推送通知。
我不确定这些值是否应该由XCode自动添加到您的权利文件,但他们当然不是在我的项目中为我生成的。
build立:
Mac OS X 10.8 + Xcode 4.4
我的简单解决scheme
- 在为您的应用程序ID设置推送通知并将其导入Xcode之后,重新发出您的临时设置configuration文件。
- 看看你的.xcodeproj文件夹(右键单击 – > Show Package Contents)并删除
xcuserdata
文件夹。 - 而已 ;)
关于这个问题的一些提示:
在为我的应用程序激活推送通知后,我突然无法再创build临时文件。 我尝试安装我的应用程序时遇到了我的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
有一些技术说明build议使用codesign -d --entitlements - <YourAppName>.app
来检查您的应用程序是否正确签署Apple推送通知。 如果codignign命令的输出没有设置为生产或开发的aps环境,那么有些东西是可疑的!
据我所知,到目前为止,使用adhoc供应configuration文件签名的应用程序始终在<YourAppName>.app
文件夹内具有embedded.mobileprovision
,其中包含特定的部分,如:
<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>
在使用<YourAppName>.app
之后,我意识到<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>
我认为这是我们都遇到的错误信息的原因。 (虽然这个错误可以有一些不同的根源以及其他post上的提示)
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中存在一些错误,它会使您的plist中的设置不能在您的计划中更新,最终会导致您的应用程序使用错误的置备configuration文件进行签名。 所以通过删除xcuserdata文件夹你删除所有的scheme。 因此,Xcode会在下次重新创build它们,并进行适当的设置,您将会很高兴。
基本上,答案与其他人所说的一样模糊
- 确保你有一个“Entitlements.plist”(新文件/代码签名/权利)
- 将“get-task-allow”(布尔closures)添加到Entitlements.plist
- 将“aps-environment”“production”对添加到Entitlements.plist中 – 这最后一步可能是不必要的,但这是我在工作之前所做的一个步骤
- 从iPhone / iPod中删除旧的mobileprovision文件(在设置/常规)中,
- 从XCode Organizer中删除旧的mobileprovision文件
- 从iPhone / iPod删除应用程序
- 退出XCode
- 下载configuration证书的新副本
- 使用文本编辑器在证书中检查“aps-environment”“production”对
- 启动XCode
- 拖动到XCode Doc图标,添加新的mobileprovision文件
- 确保您已在“目标信息:代码签名:代码签名身份”中重新分配/分配了正确的证书
- 仔细检查生成结果看到它使用正确的configuration文件,并签署正确
冷静地重复这些步骤直到它工作,带走了我五个各种各样的组合。 我也从开发切换到临时,这显然是没有必要的,但确实保证一个新的mobileprovision文件。
使用XCode4和接收相同的“没有有效的”APS环境“授权stringfind应用程序”我必须做到以下几点:
- 从pipe理器的库+设备面板中删除旧的设置configuration文件
- 在开发者门户网站上重新启用APN dev的新configuration文件
- 确保新configuration文件已添加到“pipe理器”的“库+设备”面板中
- 手动删除我的应用程序closures我的设备(持有,直到它跳动和击中X)
- CMD + OPT + SHIFT + K(清理生成文件夹)和CMD + SHIFT + K(清理)
- 在Project> Build Settings> Code Signing下设置适当的configuration文件
- 确保在“目标”>“摘要”下未选中“使用权利”
在“项目” – >“生成设置” – >“代码签名”下,确保您select了正确的预configurationconfiguration文件(启用了推送的configuration文件)。
这就是我需要改变才能使其工作。
以上都没有为我工作!
- 删除Xcode Organizer中的所有configurationconfiguration文件
- 删除钥匙串中的所有开发人员证书
- 删除iPhone设备中的所有configurationconfiguration文件
- 在iOS Provisioning Portal中 ,删除由Xcode自动创build的开发调配configuration文件
- 通过分配正确的(证书/ AppID /设备)组合来创build新的供应configuration文件
- 下载新的供应configuration文件
- 将新的供应configuration文件导入到Xcode Organizer中
- CMD + Option + Shift + K
- CMD + Shift + K
- CMD + R
- 万岁 🙂
确保您正在以configuration文件正确的方式使用该应用程序。
我的意思是,如果你已经启用你的应用程序的推送通知只分发,并且你正试图通过build立与XCode推动通知工作,这是行不通的。
我遇到了这个问题,并通过为App ID开发推送通知,然后使用开发configuration文件,我不再有错误,正确的警报视图询问我是否想要推送通知。
10.8 Xcode 4.4的解决scheme是打开appname.entitlements
文件
如果DataProtectionClass
键的值为NSFileProtectionComplete
,则将其删除!
删除这个键允许我在设备上testing来自Xcode的应用程序(它不影响仿真)。
我有同样的问题。 对我来说,修正是这样的:
- 从组织者中删除并重新加载configuration文件。
- 在项目设置 – >代码签名下select我的指定configuration文件。 不知何故,它想要使用blabla。*身份。
当您尝试运行启用APN的应用程序时,通配符configuration文件([prefix]。*)不会执行,您需要指定启用APN的configuration文件。
几个小时之后,我才明白这一点,所以除了JulianB所说的,
- 确保你有一个应用程序图标 。 你可能有一个,但当我们之间的图标版本时,我碰巧添加推。 我尝试了所有不同的东西,最终只花了这么多,所以它甚至可能不是证书或签名设置问题。
- 我也读过一个腐败的图像文件,也可能是原因
- 我没有在我的entitlements.plist中添加/查看aps-environment密钥
- 在构build之前清理所有目标
对于我来说,它将包标识符更改为随机的东西后工作。 确保签名错误确实显示出来(从组织者和设备中删除所有提供configuration文件,然后进行清理生成CMD + OPT + SHFT + K
然后CMS + SHFT + K
,然后CMD + R
),然后将包标识符更改回适当的一个。
我的解决scheme是删除并重新创build开发configuration文件 。 它被列为“无效” – 没有过期,也更新失败(Xcode 4.3.2和iOS 5.1)
确保你select了正确的。 供应configuration文件。 我发现我正在尝试使用Team Provisioningconfiguration文件。( 对于应用程序标识符:* )在列表中进一步向下,该应用程序是正确的。
我的问题是这个。 我创build了configuration推送通知的应用程序,并在应用程序委托中注册了推送通知:
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
但是在发布应用之前,我不得不在其他开发者平台上创build新的configuration文件。 我创build了新的App Id,用于开发和分发的新configuration,下载了新的configuration,在应用程序目标中设置了正确的configuration。 另外我更改了包标识符。 但是我得到了这个错误。
问题是新的AppId没有configuration推送通知,但调用
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
正在创build错误。 当我configuration推送通知错误没有再显示。
我有这个问题,情况是:
我已经安装了一个应用程序ID没有推送通知支持。 我正在使用Xcode 5.1 + iOS 7.1
之后,编辑应用程序ID以在开发和生产中添加推送通知。
为两者创build了APNs证书。
当您使用连接到Xcode的设备testingPN时,一切正常。 当您将应用程序发布到生产时,会出现问题,您不断收到:
"Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x15b200 {NSLocalizedDescription=no valid 'apsenvironment' entitlement string found for application}" error.
为我工作的解决scheme是 :
- 删除开发和分发的configuration文件(Xcode和开发者门户)。
- 删除您的应用程序ID(开发人员门户)。
- 用推送通知支持开发和生产创build一个新的应用程序ID。
- 使用新的应用程序ID创build新的供应configuration文件。
- 在Xcode上安装它们。
- testing开发和分发版本。
使configuration文件正确,这为我工作。希望这个帮助。
在我的情况下,这个错误的解决schemecertificate是经过数小时的证书修补后的简单…
在项目configuration的Capabilities
选项卡中,我必须启用Push Notification
标志才能生成环境文件。
macOS Sierra 10.12 – Xcode 8.1
其实你的临时configuration文件已从苹果开发者网站删除,你得到的错误