CloudKit 订阅错误:apsd[81] <警告>:静默推送:拒绝应用程序不可用

Posted

技术标签:

【中文标题】CloudKit 订阅错误:apsd[81] <警告>:静默推送:拒绝应用程序不可用【英文标题】:CloudKit subscription Error: apsd[81] <Warning>: Silent Push: Deny app not available 【发布时间】:2015-07-23 19:58:48 【问题描述】:

我正在尝试从 CloudKit 获得静默推送。但它仅在我的应用程序在前台时有效(或者当它从 Xcode 启动时,在这种情况下通知也在后台传递)。

我已启用所有相应的背景模式。

注册remoteNotifications并在didFinishLaunchingWithOptions中指定后台fetchInterval

    UIApplication.sharedApplication().setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)

    application.registerForRemoteNotifications()

我得到 didRegisterForRemoteNotificationsWithDeviceToken 没有问题。

我已经实现了处理远程通知的方法:

  func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) 
        NSLog(__FUNCTION__)

        let identifier : UIBackgroundTaskIdentifier = UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler()
        
        CoreDataStack.sharedInstance.ensemblesSynchronizeWithCompletion()

            UIApplication.sharedApplication().endBackgroundTask(identifier)
            completionHandler(UIBackgroundFetchResult.NewData)
        
    

我尝试将 CloudKit 容器切换到生产环境并使用 TestFlight 进行测试。 结果总是相同的:在前台我收到 CKNotifications,但对于控制台中的背景,我看到了:

错误:apsd[81]:静默推送:拒绝应用不可用

另外我已经尝试过: 完全更换容器 - 不走运。

我也相应地编辑了我的 AppID,但我认为 CloudKit 通知没有必要(或者是吗?):

在设置中一切都已启用:

从设备启动时的控制台输出(不是来自 Xcode)

应用程序运行前台:

应用运行后台:

从 Xcode 启动时,我会在后台和前台收到通知。

【问题讨论】:

是请求用户权限使用push的情况吗?可能您的应用在“设置”应用中没有权限。 后台应用刷新,设置中允许通知。 您想通过从后台状态执行的方法内部使用后台任务来完成什么?从您的代码中并不清楚。 【参考方案1】:

如果您强制退出应用程序,ios 将停止在后台向您的应用程序发送推送通知。当您从 Xcode 运行您的应用并想要退出时,请确保您从 Xcode“停止”该进程,而不是从设备上的应用切换器向上滑动。

您可能只需要重新启动手机即可让静音推送通知重新开始工作。

【讨论】:

谢谢,我知道了。

以上是关于CloudKit 订阅错误:apsd[81] <警告>:静默推送:拒绝应用程序不可用的主要内容,如果未能解决你的问题,请参考以下文章

CloudKit“订阅重复”错误 - 获取 SubscriptionId

CloudKit 推送通知订阅不起作用

CloudKit 订阅不能在代码中创建吗?

cloudKit:CKSubscription 错误“此请求需要经过身份验证的帐户””

tvOS 中的 CloudKit 订阅

未收到来自 CloudKit 订阅的推送通知