iOS 本地通知 - 在后台时回调
Posted
技术标签:
【中文标题】iOS 本地通知 - 在后台时回调【英文标题】:iOS Local Notification - Callback when in Background 【发布时间】:2016-12-09 16:27:55 【问题描述】:上下文: 我的 ios 应用程序使用本地通知 我安排本地通知,然后在通知触发时通过 didRecieveLocalNotifications 收到回电。
当应用程序位于 前台 时,这工作正常,但是当应用程序进入 后台 时,我收到 iOS 通知 但没有回调 .
我的问题: 当应用处于后台时,如何从 iOS 获取回调。
这是回调代码 -
- (void)application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification
//call your method that you want to do something in your app
NSLog (@"Received Notification");
[UIApplication sharedApplication].applicationIconBadgeNumber = 1;
[myRootController HandleLocalNotifications:notification];
【问题讨论】:
你在前台得到什么“回调”?请出示您的代码,以便我们知道您在说什么。 更新显示回调代码 很好,谢谢。看我的回答。 【参考方案1】:您正在描述application:didReceiveLocalNotification:
。这在 iOS 10 中已弃用。您应该更新到 UserNotification 框架。
那么现在。
如果您的应用程序位于 最前面,则用户不会收到任何警报。相反,你得到application:didReceiveLocalNotification:
。
如果您的应用不在最前面,则用户会收到警报。因此,您不会收到application:didReceiveLocalNotification:
,因为通知已触发。但是,如果用户收到通知并通过点击通知警报召唤您的应用,您确实会收到它。如果用户这样做,即使在后台,您也会收到application:didReceiveLocalNotification:
。
但是,如果您的应用在后台终止,您将收到 application:didFinishLaunchingWithOptions:
(您可以查看 options
以了解您正在因为通知而被启动)。
如果您的应用程序在后台或未运行,并且用户确实没有点击通知并召唤您的应用程序,您将一无所获,也无法知道通知被解雇了。这是因为通知不是为了您的利益,而是一种向用户发送消息的方式。 (从您的问题看来,您可能误用本地通知作为向您自己发送消息的一种方式。这不是它们的用途。)
【讨论】:
啊哈 - 谢谢我现在明白了。跟进 - 假设您的应用程序需要在每天中午做某事,只要它在前台或后台。实现这一目标的最佳方法是什么? 这不是你问的。如果我的回答是对的并且对你有帮助,希望你能采纳。如果你有不同的问题,我希望你能提出一个新问题——除了不要问那个问题,因为它已经在 Stack Overflow 上被问过很多次了。 谢谢 - 已接受回答。你能指出我跟进的答案吗?大多数答案建议为此使用 UILocalNotification ,因此我的原始问题 我认为这不是一个好的答案。阅读后,我觉得当应用程序处于后台时收到通知回调是非法的。尽管在某些情况下,回电会很好。例如,我将手表与 iPhone 配对。当应用程序处于后台/被杀死时,通知会发送到 iPhone。我想检查手表上通知中所说的内容。但显然我的手表不可能知道通知已在 iPhone 上触发,因为后台有应用程序。这是不对的。 嗨@Shalugin到底是什么问题?以上是关于iOS 本地通知 - 在后台时回调的主要内容,如果未能解决你的问题,请参考以下文章