即使在应用程序被“删除”后,有没有办法跟踪经过的时间?
Posted
技术标签:
【中文标题】即使在应用程序被“删除”后,有没有办法跟踪经过的时间?【英文标题】:Is there a way to keep track of elapsed time even after app is "Deleted"? 【发布时间】:2013-08-01 16:43:39 【问题描述】:我正在开发一个应用程序(仅限 iPAD),从用户“第一次”安装该应用程序开始,每 3 天(业务需求)显示一个弹出框。我正在使用 NSTimer 来做到这一点。如果用户在三天前删除应用程序并重新安装应用程序,则实施中断。在这种情况下,3 天的计数器将重新启动。我知道使用 Date 可能不是一个好主意,因为用户可以从设置中更改它。
有没有办法让 NSTimer(或类似的东西)即使在应用程序被删除后也能继续运行?
NSTimer* msgTimer = [NSTimer scheduledTimerWithTimeInterval: 259200 target: self selector: @selector(showMsg:) userInfo: nil repeats: NO];
【问题讨论】:
我不会担心他们更改系统日期,但您仍然需要保存安装日期,并且这些设置会在您的应用被清除时被清除。 【参考方案1】:我能想到的唯一方法是每次关闭应用程序时都会在钥匙串中保存最后一次通知时间的字符串表示。删除应用程序时不会清除钥匙串。虽然这在技术上是对钥匙串的滥用,但它可能会起作用,我怀疑你会遇到任何商店提交问题。
每当应用程序启动时,检查它是否是自上次安装以来第一次启动(将此信息保存为默认值)。如果是第一次,请检查钥匙串时间戳,与当前时间戳进行比较,然后从那里开始。
假设用户删除了应用并在第二天安装。检查钥匙串,您会看到它在 23 小时前被删除,然后在减去 23 小时的情况下启动您的计时器(因此它将在 2 天 1 小时内通知)。希望一切都有意义。
否则,如果应用程序通常连接到互联网,您可以使用某种服务器。
【讨论】:
谢谢。我正在使用类似的方法来解决我的问题。【参考方案2】:您的应用不会被沙盒化,当应用被删除时,您所做的任何事情都会消失。你需要某种网络服务的帮助来实现你想要的行为
【讨论】:
你能看到的一切【参考方案3】:我不这么认为,但我可能是错的(有人可以纠正我)。即使有可能,尽管这听起来像是做这种事情的坏方法。
使用本地推送通知来实现这样的事情怎么样?看起来很适合这种情况。
Relevant Appl docs for setting up scheduled notifications
【讨论】:
本地通知会在应用被移除时被移除。 你当然是对的,我应该澄清我对这个直接问题的回答是第一句话。在那之后,我的意思是使用预定通知似乎比使用带有弹出窗口的计时器更简单,如果它只是提供信息的话。他的业务需求可能需要交互,在这种情况下,他可以继续在应用内进行。【参考方案4】:您还可以使用iCloud's key-value data 存储来存储初始安装日期。如果您将日期存储在本地并从 iCloud 同步,那么用户将很难避免获取更新,除非他们远离互联网。
当然,这取决于他们在设备上登录 iCloud,并且需要 ios 5 或更高版本。
【讨论】:
以上是关于即使在应用程序被“删除”后,有没有办法跟踪经过的时间?的主要内容,如果未能解决你的问题,请参考以下文章