我一直非常非常努力营造一个简约不简单iOS应用可以收到推送通知。 我这样做的唯一原因是要建立一些其他团队成员使用的程序,而一直没能找到一个最新的,其他地方在网络上工作的这种指令的版本。 我们的店是相当新的到iOS开发,我个人与iOS开发和Xcode中完全没有经验。 我已经通过数万教程,文章,以及来自苹果麻烦的职位和其他地方的迷迷糊糊,我觉得我可能是将近有...
这里是我得(注意:我使用的Xcode 4.3,并试图开始部署只是到iOS 5.1,而据我了解,有些东西可能已经VS早期版本的Xcode最近变了,但我又是新来的所有这一点 - 和发现它完全混乱和令人费解):
1)我有已启用推送在我的iPhone供应配置文件
2)在我的测试Xcode项目我有选择的签约身份是供应配置文件(在构建设置>代码签名)
3)我有我的包标识符下总结和信息>自定义的iOS终端的属性设置不当*(我想?)
4)我有registerForRemoteNotificationTypes被称为在我委托的didFinishLaunchingWithOptions
5)我有didRegisterForRemoteNotificationsWithDeviceToken和didFailToRegisterForRemoteNotificationsWithError在我的委托,成立了分别以日志的设备令牌或错误
6)我有启用应享权利下总结检查。
7)右下面所选择的应享权利文件是Tinker6(当我检查启用应享权利这是自动生成的我的测试项目),名称
8)在Tinker6.entitlements文件我有以下的(我已经是基于几个不同岗位所有网站上正确云集,但我无法从苹果本身)找到任何明确的:
更新
9)另外,我已经试过了整个事情没有权利的文件,并获得基本相同的结果。
10)我的mobileprovision文件,内容包括权益正确(我炒的号码和域名,但在结构上是相同的):
<key>application-identifier</key>
<string>12355456A7.com.whatever.tinker</string>
<key>aps-environment</key>
<string>development</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>12355456A7.*</string>
</array>
/结束更新
当我尝试在设备上运行,我得到在Xcode输出以下错误:
2012-06-11 12:45:23.762 Tinker6[13332:707] Failed to get token, error:
Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment'
entitlement string found for application" UserInfo=0x24a3b0
{NSLocalizedDescription=no valid 'aps-environment' entitlement string
found for application}
我试图获取任务,允许NO,APS-环境设定到生产,全部四种可能的组合,同样的事情。
我怎样才能突破这个? 哪里是最终文件上呢?
- 进一步的背景如下: -
*至于包ID,我还没有就如何实现这一有关应用ID和个人资料的ID在部署配置文件中设定明确。 在根据应用IDS的部署门户我有这样的(同样,炒的数量和域):
而且,这两个地方包ID设为我有这样的:
我不敢肯定这是正确的,还是一方或双方应设置为12355456A7.com.whatever.tinker,虽然我已经试过在这个过程中这些早期没有成功...
注意:我知道有类似的头衔很多帖子,但他们似乎都出基于给定的文件名和问题等等日期,以及解决方案的事实,似乎都不是有用的。 我希望细节我已经给会保证质量响应的更高水平。 我可能会尽快分配赏金越好,如果你给一个高品质的答案,导致一个解决方案,我会奖励你的恩惠,也可以通过Twitter和我的博客推广你的答案。 特别是如果你crosspost发布一个真正的好“这里有精确的 500步,你需要得到一个简单的推送通知的应用程序的工作,包括提供和其他任何”文章你的博客或什么的。
Answer 1:
如果在配置之前创建您的provisioning profile app ID
为推动,尝试重新开通个人资料。
iOS的供应门户网站 - >配置 - >您的证书 - >编辑 - >进行一次修改 - >下载新配置
为我工作。 现在我可以使用推。
Answer 2:
首先,除非您要添加的是没有在配置配置文件是否存在自定义键/值对您不需要的权利文件。 当您开发的应用,从供应配置文件的任何权利都将被复制到应用程序。
既然你仍然可以看到有关缺少权利的错误消息,我只能假设代码签名选项在构建设置正确。
您需要确保正确的配置文件中选择了“调试”配置,并且是安全的,你选择了正确的配置文件用于“调试”和子节点标有“任何的iOS SDK”:
虽然这个屏幕截图显示选择了“自动开发者”的个人资料,选择从下拉想要的确切的provisioning profile,只是为了测试目的。 这可能是因为Xcode中自动选择比你想要的一个不同的配置文件。
另外,一定做一个干净的构建,从您的设备完全删除的应用等,这是只是为了确保你没有一些旧的绒毛游逛。
Answer 3:
我面临这个问题在Xcode 8.您必须使靶> capabilities->推送通知。 检查屏幕截图。
Answer 4:
最简单的方法是从你的账户的Xcode这样做:
头以上的Xcode - >首选项 - >选择帐户选项卡 - >查看详细信息 - >底部点击刷新按钮左 - >完成。
再次建立,它应该工作。
Answer 5:
好吧,我之前遇到过的问题。 由于推送通知,需要服务器端执行,对我来说重新创建配置文件是不是一种选择。 所以,我发现这个解决方案,而无需创建新的供应配置文件。
Xcode中没有正确选择正确的供应曲线虽然我们正确地选择它。
首先去的组织者。 在设备选项卡,从库列表配置文件,请选择我们正在尝试使用预期的轮廓。 右键单击它,然后选择“在Finder中显示个人资料”。
正确的配置文件将在打开的Finder窗口中进行选择。 注意名称。
现在去的Xcode>日志导航。 为“全部”和“全部消息”选择过滤器。 现在,在最后阶段(构建目标),找到名为“ProcessProductPackaging”展开的步骤。 请注意配置文件名称。 他们不应该相匹配,如果您有错误。
现在,在打开的Finder窗口中删除其中的Xcode使用流氓供应配置文件。 现在,再次建立。 错误应该可以解决。 如果不重复的过程中找到另一个流氓的个人资料删除它。
希望这可以帮助。
Answer 6:
答案是:重新开始,尽一切相同,但创建一个新的供应曲线,并进行安装。 这工作。 检查所有的细节(移动规定的权利)看起来完全一样,在我这里的问题一切。 但现在它的工作原理。 苹果:WAT?
当然,这本来是很明显这样做, 如果有可能删除配置文件。 但因为这是不可能的,我不想扰乱我们的团队一连串测试配置文件。 尽管如此,终于失去了耐心,并试图也无妨,它结束了工作。 Whatevs。
Answer 7:
在Xcode的组织者删除旧的供应配置文件。
于是,产生了iOS中配置门户网站同捆ID的新的provisioning profile(已启用后推)。
导入新的provisioning profile在Xcode中,将其设置为你的应用程序建立的设置。
构建,运行,它的工作原理。
我刚刚做完。
我花了10分钟便可到错误走向成功。
Answer 8:
6.1.1的XCode和多个苹果开发者帐户
这已经相当全面组合的另一个答案:我碰到这个问题,今天又来了,这一次是因为有多个帐户的苹果我。 我需要在XCode中首先添加第二个开发者帐号>首选项>帐户> +
确保推送通知的能力是ON
接下来,我需要真正明确启用应用程序内购买的应用程序(我并不需要事先做到这一点)。 的XCode>(应用程序窗口)>目标>能力>内置购买ON(并且在此阶段,我是给选择正确的证书的选项)
请注意,我已经通过双击它在Finder中加入推送启用了证书。
Answer 9:
(Xcode中5)好了,花一个小时后,我解决我的问题。 即使你在Xcode 5重新生成的配置文件,您应该手动更新您的帐户。 我只是改变了管理选项卡没有工作设置文件时,Xcode保持建立与旧的配置文件。
所以去
的Xcode>首选项>帐户>查看详细信息(选择您的帐户)
然后刷新置备文件。
Answer 10:
我的问题是简单的,我是用Xcode的管理通配符供应配置文件签署。
我创建了一个应用程序特定的配置文件后(并下载它,双击它,并确保提交给它我的构建设置),我成功地获得了APNS设备令牌。
Answer 11:
我有同样的问题是其他人,并尝试了所有的招数以上,毫无效果。 我甚至删除,并开始用新鲜不同的开发者账户。
到底是什么工作对我来说是
- 做上述的建议,并创建APP ID
- 然后创建配置简介
- 不要在供应的开发部分不使用通配符团队轮廓(由Xcode的一个管理)。 你需要使用你已经取得了推送通知活跃了该应用程序ID单独的一个。 这时候你开发它的方式将有建于推送通知功能。
我不知道你是否可以启用,对于一个通配符应用程序,而是试图在至少12组不同的建议,失去了几天后,我希望这可以帮助别人
Answer 12:
你提到一个供应配置文件,但我没有看到苹果的推送模式的任何提及。
要使用推送你必须有一个推送模式(有两种,一种为开发,一个用于发布)。 你已经创造了它之后,你需要确保它包含了相关的证书(请参阅下面的EDIT部分)。
这是将引导您完成所有的步骤的优秀教程:
http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12
这将需要我,或者其他人,几个小时写这样的教程彻底详细的解答,所以我不会去尝试,也宣称自己的奖金时,本教程中已经存在。
PS我相信你不需要任何的权利更多,这是一个旧的东西。
编辑:您也应该检查你的设备上所需的配置文件 - 去的设置,那么一般情况下,配置文件,检查您的配置文件中列出,特别是当然的推送模式。 您也可以在Xcode的组织者段检查。 在主办单位有两节是说提供档案 - 一个在顶部留在库(这是您用来签名等的XCode配置文件),您也将看到一个区间调用预置描述文件的连接设备,这是安装在手机上的个人资料。 如果没有他们在手机上安装,你可以从供应门户网站进行下载,然后点击添加按钮在管理器窗口的底部。
而在配置门户,你也应该检查苹果推送模式包括证书: - 点击调配左侧菜单上 - 你会看到你的个人资料列表,选择要编辑的苹果推送模式 - 你会看到一个证书部分,与开发人员或测试人员等,你在你的项目中有一个列表,确保复选框被选中他们。 - 你还可以看到一个设备部分,确保你正在测试的设备已被添加。
如果您有任何旧配置文件中XCode中或设备上删除和下载/更新/从配置门户网站安装所有新的配置文件
Answer 13:
遇到了这个同样的问题我自己。 对我来说,问题是,我的产品名称($ TARGET_NAME)没有资本由苹果公司提供的证书中介绍的方法相同。 比如我而苹果证书使用com.companyid.apndemo有com.companyid.APNDemo。
我改变了我的目标是小写和它的工作。 注:我的线索是在代码签名生成设置设置设置为我的默认开发者证书; 不是APNTest供应曲线。
Answer 14:
很多上述答案都是正确的。 然而,似乎与此打交道时,不止一个可能的错误。
一个我已经是一个资本问题,我的应用程序ID。 由于某种原因,我的应用ID不是资本,但我的应用程序了。 一旦我重新大小写正确的应用程序ID,它的所有工作顺利进行。 希望这可以帮助。 令人沮丧的是地狱,但。
PS如果仍然不行,请尝试编辑签名标识字段的代码以“编辑”手动。 更改与正确的供应配置文件名的名称,第二行。
Answer 15:
我花了时间来解决这个问题。 鉴于有人在使用自定义脚本签名,虽然别人都在用自己的Xcode包,只有一个检查什么在你的应用程序结束的方式。 转储您的权利
codesign --display --entitlements :- path/to/MyApp.app
并检查aps-environment
和application-identifier
。
Answer 16:
当你的证书已过期,可能会出现此错误。
解决的办法是更新证书,并与它签署申请。
Answer 17:
你需要确保你在你的供应配置文件( https://developer.apple.com/account/ios/profile/ )在iOS分布曲线。
当你在Xcode到App Store上传,请确保您有APS-环境的权利。 如果不是,从查看账户进行下载 - >查看详细信息 - >下载所有。
Answer 18:
我有一个类似的问题。 我一直的XCode 7和8之间为反弹的原因有多种。 一旦你开始使用8打造,您将需要使用8.我只是用Xcode中8和应用一些上述建议的变化和它的工作。
Answer 19:
Answer 20:
似乎有与在Xcode 4.6的“自动”的权利一些古怪。
没有为每个SDK在Entitlement.plist文件:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/Entitlements.plist
我想出了一个变通的解决办法是编辑这个文件,并手动添加偷偷摸摸的APS-环境的关键,像这样:
<?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>application-identifier</key>
<string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
<key>aps-environment</key>
<string>development</string>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
</array>
</dict>
</plist>
然后,Xcode是产生正确Xcent文件,其中包含在APS-环境的关键:
/Users/mySelf/Library/Developer/Xcode/DerivedData/myApp-buauvgusocvjyjcwdtpewdzycfmc/Build/Intermediates/myApp.build/Debug-iphoneos/myApp.build/myApp.xcent
你可以找到,其中使用Xcode的日志导航创建了Xcent文件,
寻找“ProcessProductPackaging”。
不幸的是,这是我发现的唯一方法是修复该问题 。
(终于能正常得到令牌现在推)
只是想知道,如果另一个更优雅的解决方案是可用的。
请参阅我的SO问题上,更多的细节:
Xcode的4.6自动获得不工作- “没有有效的APS-环境”
Answer 21:
删除和再生AppIDs /配置文件之前,请确保您的库和设备安装相同的(正确)型材。
我开始迁移到新计算机后看到此错误。 按已正常工作之前迁移。
问题是(废话),我还没有导入配置文件,以在新机器上的Xcode的库(在管理/下图书馆 - 设备>部署配置文件)。
混乱的部分是该设备已经有了正确的配置文件,并且出现了像预期的那样构建设置,所以一切看起来正确的有,但Xcode的图书馆没有他们,所以它被签署应用程序与...? ?
Answer 22:
这是什么固定对我来说。 (我已经尝试切换开/关功能,重新创建供应配置文件等)。
在Build Settings选项卡,在代码签名权利 ,我.entitlements文件没有被链接的所有部分。 有一次,我把它添加到任何SDK部分,错误得到解决。
Answer 23:
我想在这里列出的所有答案,但没有一个人解决了我的问题。 在我的情况下,这个错误是由于我在创作APPID愚蠢的错误。 我用通配符应用程序ID而不是使用显式应用程序ID引起的问题
如果你想要一个应用程序来接收远程通知(推送通知),那么你需要使用一个明确的App ID,如com.tutsplus.push,而不是com.tutsplus。*
请找截图,
文章来源: How to fix “no valid 'aps-environment' entitlement string found for application” in Xcode 4.3?