我一直在努力创建一个简单的iOS应用程序,可以接收推送通知.我这样做的唯一原因是为其他团队成员建立一个程序,并且无法在网络上的其他地方找到这些指令的最新工作版本.我们的商店对于iOS开发者来说相当新,我个人对iOS开发和Xcode完全缺乏经验.我偶然发现了Apple和其他地方的数十篇教程,文章和问题帖子,我觉得我可能差不多......
这是我必须去的地方(请注意我正在使用Xcode 4.3并尝试最初部署到iOS 5.1,并且我认为最近有些事情可能与早期版本的Xcode有所改变,但我再次对所有人都是新手这 - 并且发现它完全令人困惑和错综复杂):
1)我的iPhone上有配置文件,启用了Push功能
2)在我的测试Xcode项目中,我已选择配置文件作为签名标识(在Build Settings> Code Signing中)

3)我已在"摘要和信息">"自定义iOS目标属性"下正确设置了我的包标识符*(我认为??)
4)我已经在我的委托的didFinishLaunchingWithOptions中调用了registerForRemoteNotificationTypes
5)我的委托中有didRegisterForRemoteNotificationsWithDeviceToken和didFailToRegisterForRemoteNotificationsWithError,设置为分别记录设备令牌或错误
6)我在Summary下检查了Enable Entitlements.
7)在下面,选择的权利文件是Tinker6(我的测试项目的名称),当我选中启用权利时自动生成
8)在Tinker6.entitlements文件中,我得到了以下内容(我收集的内容基于网络上的几个不同帖子是正确的,但是我找不到Apple自己确定的任何内容):

更新
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>
Run Code Online (Sandbox Code Playgroud)
/结束更新
当我尝试在我的设备上运行它时,我在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}
Run Code Online (Sandbox Code Playgroud)
我已经尝试将get-task-allow设置为NO,aps-environment to production,所有四种可能的组合,同样的事情.
我怎么能通过这个?这方面的权威文件在哪里?
- 进一步的背景如下 -
*就bundle ID而言,我仍然不清楚如何在Provisioning配置文件中设置应用程序ID和配置文件ID.在App Ids下的Provisioning门户中,我有这个(再次,扰乱了数字和域):

并且两个地方捆绑id设置我有这个:

我完全不确定这些是否正确,或者是否应将其中一个或两个设置为12355456A7.com.whatever.tinker,尽管我在此过程中尝试过这些但没有成功...
注意我意识到有许多帖子具有相似的标题,但是它们似乎都是根据文件名和反过来给出的,并且事实上没有一个解决方案似乎有用.我希望我给出的更高水平的细节将保证质量响应.我可能会尽快分配奖金,如果你给出一个高质量的答案导致解决方案,我将奖励你的奖金,并通过推特和我的博客推广你的答案.特别是如果你发布一个非常好的crosspost帖子"这里有你需要的确切的 500步骤,以便在你的博客或其他任何东西上获得一个简单的推送通知应用程序,包括配置和其他任何"文章.
notifications push-notification apple-push-notifications ios
我有一个提交的应用程序,当它被拒绝,我得到了消息
缺少推送通知权利 - 您的应用似乎向Apple推送通知服务注册,但应用签名的权利不包括"aps-environment"权利.如果您的应用使用Apple推送通知服务,请确保在配置门户中为推送通知启用了您的应用ID,并在使用包含"aps-environment"权利的配置配置文件对应用进行签名后重新提交.
我检查了我的ad-hoc provisiong,然后我找到了aps-environment和production,但是当我打开我的发行版配置时,我找不到这样的.
这是导致此错误消息和苹果拒绝的原因,我该如何解决?
在提交二进制版本后,我收到了Apple的警告邮件.
Missing Push Notification Entitlement - Your app appears to include API used to register with the Apple Push Notification service, but the app signature's entitlements do not include the "aps-environment" entitlement.
If your app uses the Apple Push Notification service, make sure your App ID is enabled for Push Notification in the Provisioning Portal, and resubmit after signing your app with a Distribution provisioning profile that includes the "aps-environment" entitlement.
See "Provisioning and Development" in the Local and Push …Run Code Online (Sandbox Code Playgroud) 最近我的申请在上传时遭到拒绝.Apple审核小组称我的应用程序是"缺少推送通知权限"
这是他们提供的信息:
缺少推送通知权利 - 您的应用程序向Apple推送通知服务注册,但应用程序签名的权利不包括所需的"aps-environment"权利.确保您已为此应用启用了推送通知服务,并且您已下载包含"aps-environment"权利的分发配置文件.
我的应用程序的早期版本曾经有推送通知,我的应用程序二进制文件从未因此而被拒绝.我该怎么办?
我使用Apache Cordova将我的应用程序提交到Apple Store,我从苹果那里收到一条警告:"缺少推送通知权限".
但似乎我从未在我的应用程序中使用"推送通知".如何从我的应用程序中删除它?它是Apache Cordova的默认设置吗?
早上好!
我正在努力让我的应用程序接收来自 Firebase 云消息传递的推送通知。当我将构建添加到 testflight 时,我收到一封警告电子邮件,其中包含错误代码:ITMS-90078: Missing Push notification Entitlement,我允许 xcode 管理我的个人资料,该个人资料具有 aps-environment 权利和推送通知功能,和一个开发签名证书,正如您在 Xcode 的屏幕截图中看到的那样:
幸运的是,这只是一个警告,所以我仍然可以将此构建推送给我的 testflight 测试人员,但他们不会收到推送通知。我可以确认 Firebase 云消息传递正在生成设备消息传递令牌,并且它很好地存储在我的 Firebase 数据库中,所以我认为这不是问题。
我还确认我已分配给此捆绑包 ID 的生产 Apple 推送通知 SSL 证书,如下所示:

拍摄此屏幕截图后,我还尝试添加开发 SSL 证书,但问题仍然存在。
我在苹果开发者论坛和 Stack Exchange 上找到了许多其他帖子,但大多数都是 4 年前的帖子,并且不再相关。示例:缺少推送通知权利警告
我缺少什么?感谢您提前抽出时间并提供帮助!
更新
我现在还尝试使用我设置的配置文件来解决此问题,而不是让 xcode 为我管理它。它是一个“App Store Distribution”配置文件。
同样的问题,收到相同的电子邮件错误,并且任何已安装的应用程序都不会收到推送通知。有什么建议么?谢谢!
push-notification apple-push-notifications ios firebase-cloud-messaging
将Flutter应用上传到App Store Connect之后,我收到以下电子邮件警告:
亲爱的开发人员,
我们发现您的应用“ [[APP NAME]””最近交付时出现了一个或多个问题。您的交付成功,但是您可能希望在下一次交付中更正以下问题:
缺少推送通知权利 -您的应用似乎已在Apple推送通知服务中注册,但应用签名的权利不包括“ aps-environment”权利。如果您的应用程序使用Apple Push Notification服务,请确保在Provisioning Portal中为您的Push ID启用了您的App ID,并在使用包含“ aps-environment”权利的Distribution Provisioning配置文件对您的应用程序进行签名后重新提交。Xcode不会在构建时自动从供应配置文件复制aps环境权利。此行为是故意的。要使用此权利,请在项目编辑器的“功能”窗格中启用“推送通知”,或将权利手动添加到您的权利文件中。有关更多信息,请参见 https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html#//apple_ref/doc/uid/TP40008194-CH6-SW1。
解决问题之后,可以使用Xcode或Application Loader将新的二进制文件上传到App Store Connect。
最好的祝福,
App Store团队
我没有在应用程序中使用推送通知吗?为什么会收到此警告?我如何删除“ aps-environment”权利,无论其在何处以及什么地方?
注意:这个App Store问题在SO上已经出现过多次,有时是因为人们需要添加推送通知(请参阅this和this),有时是因为他们没有这样做(请参阅this和this)。不过,在我看来,这与Flutter有关,所以我添加了一个新问题。