将新版本上传到 iTunes 后,我收到推送通知权利问题

Posted

技术标签:

【中文标题】将新版本上传到 iTunes 后,我收到推送通知权利问题【英文标题】:After uploading new build to iTunes I got push notification entitlement issue 【发布时间】:2015-09-03 10:50:30 【问题描述】:

我们发现您最近交付的一个或多个问题 “应用程序名称”。您的交付成功,但您可能希望 在您的下一次交付中更正以下问题:

缺少推送通知权利 - 您的应用似乎包含 用于向 Apple Push Notification 服务注册的 API,但 应用签名的权利不包括“aps-environment” 权利。如果您的应用使用 Apple Push Notification 服务, 确保您的 App ID 在 配置门户,并在使用 包含“aps-environment”的分发配置文件 权利。参见本地和推送中的“配置与开发” 通知编程指南了解更多信息。如果你的应用有 不使用 Apple 推送通知服务,无需任何操作。 您可以从以后的提交中删除 API 以停止此警告。 如果您使用第三方框架,您可能需要联系 开发者获取有关删除 API 的信息。

纠正问题后,您可以使用 Xcode 或 Application 加载程序将新的二进制文件上传到 iTunes Connect。

问候,

App Store 团队

这里的主要信息

如果您的应用使用 Apple 推送通知服务

但我没有添加任何推送通知 API 方法。

如何检查哪个库使用了推送通知方法或框架?

【问题讨论】:

【参考方案1】:

这是 Apple 验证软件中的错误。你可以忽略它。

来自https://forums.developer.apple.com/thread/15011:

我在 MachO View 中调查了这个问题,以确认它是 假阳性。

我可以在 AppDelegate.o 中看到 - 虽然符号表中没有对 application:didRegisterForRemoteNotificationsWithDeviceToken: 的引用..

$ nm ./AppDelegate.o | grep    application:didRegisterForRemoteNotificationsWithDeviceToken  
$  

我确实发现 grep 输出匹配,正如其他评论者的报告中所证实的那样。

$ grep application:didRegisterForRemoteNotificationsWithDeviceToken ./AppDelegate.o  
Binary file ./AppDelegate.o matches  

我将二进制文件加载到 MachO 视图中(见下面的屏幕截图)并找到 application:didRegisterForRemoteNotificationsWithDeviceToken:、application:didFailToRegisterForRemoteNotificationWithError: 和所有其他 UIApplicationDelegate 方法 - 在 __TEXT 段中,__objc_methname 部分 - 存储的 c 字符串文字列表objc 选择器名称

MachO 查看 __TEXT,__objc_methname 部分的屏幕截图,其中包含 UIApplicationDelegate 方法列表: http://imgur.com/JXgCjjm

我在这里用 otool 确认了这个发现:

$ otool -v -s __TEXT __objc_methname ./AppDelegate.o  | grep didRegisterForRemoteNotificationsWithDeviceToken  
000000000000bfbb  application:didRegisterForRemoteNotificationsWithDeviceToken:  

iTunes 的审核过程是基于字符串的,而不是基于 nm 的,因此他们对 didRegisterForRemoteNotificationsWithDeviceToken 的简单 grep 将始终记录误报。

【讨论】:

以上是关于将新版本上传到 iTunes 后,我收到推送通知权利问题的主要内容,如果未能解决你的问题,请参考以下文章

在 iTunes Connect 中上传具有新版本的应用程序时,应用程序图标未更改

TestFlight 发送新的更新通知

更新 iOS 分发证书和推送通知

我正在尝试在 iTunes 连接上更新(新版本)我的应用程序。上传后,苹果开发人员拒绝了我的二进制文件,原因是:-

分发失败,出现错误 iTunes 连接

iTunes Connect:您的应用存在一个或多个问题