没有为应用程序找到有效的'aps-environment'权利字符串

bas*_*han 82 objective-c apple-push-notifications

我正在尝试配置我的应用程序以支持推送通知,但不断收到此错误:无法获取令牌,错误:错误Domain = NSCocoaErrorDomain Code = 3000"找不到有效的'aps-environment'应用程序的权限字符串"UserInfo = 0x1f818fc0 { NSLocalizedDescription =找不到应用程序的有效'aps-environment'权利字符串}

  • 我确实启用了我的应用程序以支持推送通知(此时仅用于开发).
  • 我确实在启用推送通知后创建了配置文件.
  • 我的包标识符与配置文件中显示的相同.
  • 在我的个人资料文件中有一个字符串:aps-environment
  • 我确保在"代码签名标识"部分的项目和目标中,所有值都被选为我的配置文件.

还有什么想法吗?谢谢.

Dre*_*rew 64

就我而言,我的配置文件中的内容:

security cms -D -i ~/Downloads/spolskyDevelop.mobileprovision 
...
<key>application-identifier</key>
<string>P5GM95Q9VV.com.dca.spolsky</string>
<key>aps-environment</key>
<string>development</string>
Run Code Online (Sandbox Code Playgroud)

与实际构建的应用程序中的内容不同(您可以通过查看Xcode的"日志"选项卡找到它的构建位置)

codesign -d --entitlements - '/Users/drew/Library/Developer/Xcode/DerivedData/spolsky-bdbtdfjeeywhqzccpmmceqvnhgtm/Build/Products/Debug-iphoneos/spolsky-ios.app'
<dict>
    <key>application-identifier</key>
    <string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string>
    <key>get-task-allow</key>
    <true/>
    <key>keychain-access-groups</key>
    <array>
        <string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string>
    </array>
</dict>
Run Code Online (Sandbox Code Playgroud)

即使代码签名身份下的"当前匹配"提示文本指示了正确的配置文件,这也是如此- 很奇怪,是吧?为了制作一个奇怪的故事,我运行时在设备上安装了正确的配置文件,(设置 - >常规 - >配置文件)让我相信配置文件是正确的 - 但它又回到了通配符ID当应用程序实际启动时.

线索是这两个命令输出的差异:

Y2X6Z7Z2GR .com.dca.spolsky-ios vs P5GM95Q9VV .com.dca.斯波斯基

当我将粗体部分匹配时,斜体部分会自动更改为匹配.此外,安全性和协同设计的输出是一致的,并且没有更多的aps-entitlement错误.

我的猜测是,XCode在我的非通配符ID上使用了通配符式匹配.("spolsky"毕竟是非常"spolsky-ios"),这解释了"当前匹配"输出.但是构建链中的某些内容对此更加严格,因此它在构建期间会回退到实际的通配符ID.

  • 我遇到了类似的问题:项目"构建设置"与目标"构建设置"不同...在我的情况下,我的目标设置默认为错误的配置文件. (7认同)
  • 仅供记录:要使推送通知起作用,必须使用**特定的**配置文件,使用应用程序的软件包ID,****不要**使用__*__通配符. (6认同)

Rap*_*tor 37

问题是由于当前的Provisioning Profile不包含APNS信息,因为创建APNS证书之前创建了Provisioning Profile .

因此,要解决此问题,请创建新的Provisioning Profile并选择Xcode中的Provisioning Profile以清除错误.


Ore*_*ren 29

推送通知已在我的设备上运行后,我遇到了同样的问题.看起来像Xcode缓存的东西不正确,所以刷新它解决了我的问题:

  1. Xcode - >首选项 - >帐户
  2. 查看开发者帐户的详细信息
  3. 只需单击"设置配置文件"的"刷新"几次.我每次刷新都会看到这些变化.保持清爽,直到他们停止变化.


小智 9

我收到此错误,并没有创建新的配置文件; 创建了一个新的,然后不得不重新启动xCode,但现在工作!


sud*_*udo 9

请注意,捆绑标识符必须以区分大小写的方式与配置文件匹配.它应该是com.Firstlast.appname之类的com.FirstLast.appname.好吧,这让我忙了好一阵子.


err*_*404 9

我通过启用推送通知功能来解决此问题.

选择项目>目标>功能>打开推送通知

看看图像