应用程序运行时 didReceiveRemoteNotification 未运行(前景)

Posted

技术标签:

【中文标题】应用程序运行时 didReceiveRemoteNotification 未运行(前景)【英文标题】:didReceiveRemoteNotification is not running when app is running (FOREGROUND) 【发布时间】: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: 方法不同,它是 仅当您的应用程序在前台运行时调用,系统 当您的应用在前台运行时调用此方法或 背景。

【问题讨论】:

【参考方案1】:

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

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

正如文档解释的那样:

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

【讨论】:

以上是关于应用程序运行时 didReceiveRemoteNotification 未运行(前景)的主要内容,如果未能解决你的问题,请参考以下文章

从 Dock 运行时打包的 Electron 应用程序不会启动,但从终端运行时运行良好

ASP.NET运行时错误

如何在VxWorks启动时自动运行自己的程序

C#中,运行程序时提示:无法直接启动还有类库输出类型的项目?

DB2问题,程序运行时不定时出现以下sql报错问题!

应用程序运行时 didReceiveRemoteNotification 未运行(前景)