即使我没有在我的应用程序中使用 APNS,来自苹果的 APNS 警告
Posted
技术标签:
【中文标题】即使我没有在我的应用程序中使用 APNS,来自苹果的 APNS 警告【英文标题】:APNS warning from apple even though I am not using APNS in my app 【发布时间】:2017-08-16 06:34:20 【问题描述】:缺少推送通知权利 - 您的应用似乎注册了 Apple 推送通知服务,但应用签名的权利不包括“aps-environment”权利。如果您的应用程序使用 Apple 推送通知服务,请确保您的应用程序 ID 在配置门户中启用推送通知,并在使用包含“aps-environment”权利的分发配置文件签署您的应用程序后重新提交。 Xcode 8 不会在构建时自动从配置文件中复制 aps-environment 权利。这种行为是故意的。要使用此权利,请在项目编辑器的“功能”窗格中启用推送通知,或手动将权利添加到您的权利文件中。如需更多信息,请参阅https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html#//apple_ref/doc/uid/TP40008194-CH6-SW1。
当我上传构建以进行试飞时,我收到了来自 Apple 的以下邮件。
自从我集成了 google sdk 并在我的应用中实现了 google 登录后,这种情况就一直在发生。
我没有在我的应用程序中启用推送通知,证书也没有任何问题。即使在功能选项卡中,推送通知也已关闭
我似乎不明白问题出在哪里。我不想启用推送通知,因为我没有在我的应用中使用它。
任何帮助将不胜感激。谢谢。
以下是我的 AppDelegate 供参考
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, GIDSignInDelegate, GIDSignInUIDelegate
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
let console = ConsoleDestination()
log.addDestination(console)
Mixpanel.initialize(token: AppConfig.mixPanelProjectToken)
var configureError: NSError?
GGLContext.sharedInstance().configureWithError(&configureError)
if MixpanelTweaks.assign(MixpanelTweaks.showView)
navigateToView()
if let infoPlist = Bundle.main.infoDictionary,
let config = infoPlist["TwitterKeys"] as? Dictionary<String, AnyObject>
let consumer = config["consumerSecret"] as? NSString
let consumerSecret = config["ConsumerKey"] as? NSString
Twitter.sharedInstance().start(withConsumerKey:consumerSecret as! String, consumerSecret:consumer as! String)
// Override point for customization after application launch.
return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
func navigateToView()
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController = storyboard.instantiateViewController(withIdentifier: "InitialViewNavigationController")
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool
let handled = FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String, annotation: options[UIApplicationOpenURLOptionsKey.annotation])
GIDSignIn.sharedInstance().handle(url,
sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String,
annotation: [:])
Twitter.sharedInstance().application(app, open: url, options: options)
return handled
func sign(_ signIn: GIDSignIn!, didDisconnectWith user: GIDGoogleUser!, withError error: Error!)
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!)
func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!,
withError error: NSError!)
func applicationWillResignActive(_ application: UIApplication)
FBSDKAppEvents.activateApp()
func applicationDidEnterBackground(_ application: UIApplication)
func applicationWillEnterForeground(_ application: UIApplication)
func applicationDidBecomeActive(_ application: UIApplication)
func applicationWillTerminate(_ application: UIApplication)
GIDSignIn.sharedInstance().signOut()
【问题讨论】:
您检查过功能选项卡吗? 您的应用程序包是否包含任何使用推送通知的库? APNS 在功能选项卡中关闭 + 确保只调用一次 [registerUserNotificationSettings:] + 根本不要从 -[AppDelegate application:didFinishLaunchingWithOptions:] 调用它,因为它无法显示权限对话框。 我没有在我的应用中使用这个方法 [registerUserNotificationSettings:] 【参考方案1】:我遇到了同样的问题。但是我的应用程序是一种模块化构建,它具有推送通知代码,但使用我的代码中的一个键明确禁用。每当我需要使用推送通知功能时。我只需要启用该密钥并包含“功能”选项卡中的推送通知权利。
由于那里存在代码,因此我收到了警告,
“缺少推送通知权利 - 您的应用程序包含一个 API,用于 Apple 的推送通知服务,但 aps-environment 权利 应用的签名中缺少。”
。所以我从 Capabilities 中启用了它,但没有从代码中启用它,也没有包含在 Developer Portal/Member Center 的我的 App ID 中。
它成功了,我没有收到任何警告,我的应用在 App Store 上成功运行。
尽管来自 Apple 的此警告已开始来自 Xcode 8。您还可以从以下链接中找到另一个类似的警告和“缺少推送通知权利”的解决方案:
Xcode 8 "the aps-environment entitlement is missing from the app's signature" on submit
【讨论】:
【参考方案2】:这是一个没什么汉堡。在添加 Sentry 作为依赖项后,我得到了这个。但是我自己的本机代码没有调用远程通知。我收到了同样的警告,但我只是在发行说明中向审核团队解释了它,并且构建按预期获得了批准。
【讨论】:
以上是关于即使我没有在我的应用程序中使用 APNS,来自苹果的 APNS 警告的主要内容,如果未能解决你的问题,请参考以下文章