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

时间:2015-09-03 10:50:31

标签: ios apple-push-notifications

  

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

     

缺少推送通知权利 - 您的应用似乎包含   API用于注册Apple推送通知服务,但是   应用签名的权利不包括“aps-environment”   权利。如果您的应用使用Apple推送通知服务,   确保您的App ID已启用推送通知   配置门户,并在使用a签名您的应用程序后重新提交   包含“aps-environment”的分发配置文件   权利。请参阅本地和推送中的“供应和开发”   通知编程指南了解更多信息。如果你的应用程序   不使用Apple推送通知服务,不需要采取任何措施。   您可以从将来的提交中删除API以停止此警告。   如果您使用第三方框架,则可能需要联系   开发人员获取有关删除API的信息。

     

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

     

此致

     

App Store团队

这里的主要信息

  

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

  

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

     

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

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

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

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

我将二进制文件加载到MachO View中(见下面的截图)并找到了应用程序: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将始终注册误报。