0

我正在尝试从 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 开始时,我会在后台和前台收到通知。

4

1 回答 1

0

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

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

于 2015-07-24T10:16:57.377 回答