首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS (iPhone)开发-在应用程序未运行时随机触发本地通知

iOS (iPhone)开发-在应用程序未运行时随机触发本地通知
EN

Stack Overflow用户
提问于 2012-09-17 19:54:03
回答 1查看 2.3K关注 0票数 1

我们遇到了一个非常奇怪的问题,在本地通知触发时,我们的应用程序没有运行。不运行,我的意思是它是完全终止的(当你双标签主按钮时不会出现在任务列表中)。

在正常运行条件下,当应用程序处于后台时,如果设备在超过X秒的时间内不动,应用程序将生成一个本地通知,并发出警告声音。15秒后,如果没有采取任何行动,则生成另一个带有紧急消息的本地通知。

在应用程序被终止几个小时或几天后,设备似乎会随机地报告一份警告通知,然后大约15秒后发出紧急通知,就像应用程序在后台正常运行一样。如前所述,我们已经证实,应用程序没有列在运行的任务列表中,并且似乎已经完全终止。

该应用程序是为定位、音频和VOIP的长期背景处理模式注册的.

当应用程序终止时(在applicationWillTerminate中),我们执行清理,包括关闭和取消定时器,取消本地通知等。

我有两个理论:

  1. 我想知道这些“鬼”通知是否只是在应用程序运行时排队的旧通知,但直到现在才被执行(我的问题是,为什么警告通知和紧急通知之间的时间差仍然受到尊重)。
  2. 该应用程序是否有可能“秘密地”运行在深背景的某个地方。如果是这样的话,似乎设备会周期性地“唤醒”应用程序;如果是这样的话,该设备作为“唤醒调用”的标准是什么。

我想知道是否有人遇到这个奇怪的问题,若然,我们如何解决这个问题?

P.S -我们是iOS开发的新手,如果我们忽略了一些显而易见的东西,那么请提前道歉

使用通过的日志消息更新#1,我观察到应用程序通过任务栏闭包关闭时一直在调用applicationWillTerminate。然而,对于这种行为是否能被信赖,似乎确实有很多争论,所以我不会确切地说我是否相信我的观察结果是一致的,但我倾向于这个方向。但是,如果你对此有进一步的了解,我们将不胜感激!

我昨晚尝试了一种新的方法;直到现在,我们还在使用[application scheduleLocalNotifications]方法调度一个“立即”的通知,并将日期设置为当前时间。相反,我使用了[application presentLocalNotificationNow]方法,并且没有提供日期/时间。该应用程序仍然正常工作,但它没有解决问题,因为“鬼”通知昨晚是随机触发的,而该应用程序没有运行。我现在想知道这个问题是不是少了一个‘旧通知’相关的问题,而更多的原因是由于我们的长期背景执行注册的一些触发而导致的应用程序被“唤醒”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-17 20:30:02

一旦你的应用程序计划好了一个UILocalNotification,它们就由操作系统来处理,而不是你的应用程序。因此,即使你的应用程序失败了,它们仍然会关闭。

所以不,你的应用程序还没有在后台秘密运行,这些只是你已经计划好的通知。您是否可能在通知中设置repeatInterval?

可以通过以下方法清除所有通知:

代码语言:javascript
复制
 [[UIApplication sharedApplication] cancelAllLocalNotifications];

正如onnoweb所述,在你的应用程序被杀死之前,你的applicationWillTerminate可能不会被调用。我不确定当用户关闭任务栏中的应用程序时,它是否总是被调用。

编辑以回应评论:

我的第一个想法是,您似乎在用不正确的火日期安排UILocalNotifications。我建议你检查一下你安排他们的方式。在你的应用程序被杀一天后,他们唯一的方法就是在你的应用程序还在运行的时候安排它们。

编辑以答复进一步的评论:

我认为当你杀死应用程序时,applicationWillTerminate可能会被调用,但并不一定会被调用。据我所读,如果您的应用程序处于暂停状态,则不会调用该方法。我不知道长时间运行后台任务的应用程序是如何工作的,但也许它会在后台状态和挂起状态之间切换。我没有把握。但问题是,打电话

代码语言:javascript
复制
[[UIApplication sharedApplication] cancelAllLocalNotifications];

会取消你所有的通知。因此,如果在那之后发生了变化,这就是方法没有被调用的证据。我想另一种可能是这个方法被调用了,但是应用程序没有足够的时间在它被杀死之前取消所有的通知。我不太确定你有多少时间在那里做事情。不过,我想再次建议,你最好的办法是先弄清楚这些通知为什么要排在第一位。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12466214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档