应用程序运行时,didReceiveRemoteNotification未运行(FOREGROUND)

时间:2016-05-14 23:15:54

标签: swift apple-push-notifications ios9

我有一个奇怪的案例。我的swift ios应用程序已连接到Cloudkit。如果应用程序没有运行(背景状态),我每次都会收到通知徽章并提醒! 如果应用程序正在运行,则不会收到任何通知!我知道它没有击中遥控器,因为我这样做: 1.在didReceiveRemoteNotification事件中添加断点 2.在插入的iphone中运行xcode 3. NSLog("检测到didReceiveRemoteNotification"),所以最终代码看起来像这样

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]){
  NSLog("detected didReceiveRemoteNotification")
}

我知道错误不是来自cloudkit或来自APNS,因为我确实在手机处于后台状态时收到警报横幅和徽章。

你能引导我为前景状态正确设置吗??

我正在运行ios v9.3

更新#1 我认为文件的措辞很差。它清楚地表明两者都在前景上运行,这就是我所关心的;尽管如此,修复程序比文档更准确!

  

与应用程序不同:didReceiveRemoteNotification:方法,即   只有当您的应用程序在前台即系统中运行时才会调用   当您的应用在前台运行或运行时调用此方法   背景

1 个答案:

答案 0 :(得分:4)

你实施了错误的方法。实现:

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

正如文档所解释的那样:

  

application:didReceiveRemoteNotification:方法不同,...当您的应用在前台或后台运行时,系统会调用此方法。