应用程序运行时 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 应用程序不会启动,但从终端运行时运行良好