【问题标题】:didReceiveRemoteNotification is not running when app is running (FOREGROUND)应用程序运行时 didReceiveRemoteNotification 未运行(前景)
【发布时间】:2016-05-14 23:15:54
【问题描述】:

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

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

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

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

我正在运行 ios v9.3

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

与 application:didReceiveRemoteNotification: 方法不同,它是 仅当您的应用程序在前台运行时调用,系统 当您的应用在前台运行时调用此方法或 背景。

【问题讨论】:

    标签: swift apple-push-notifications ios9


    【解决方案1】:

    您实施了错误的方法。实施:

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

    正如文档解释的那样:

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

    【讨论】:

      猜你喜欢
      • 2015-03-06
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-16
      相关资源
      最近更新 更多