有没有办法跟踪经过的时间,即使应用程序是"已删除"?

时间:2013-08-01 16:43:40

标签: ios objective-c ipad ios6

我正在开发一个应用程序(仅限iPAD),它在安装应用程序的“第一次”时间后每3天(业务要求)向用户显示一个弹出框。我正在使用NSTimer来做到这一点。如果用户删除应用程序并在三天之前重新安装应用程序,则实现会中断。在这种情况下,计数器重新启动3天。我知道使用Date可能不是一个好主意,因为用户可以从设置中更改它。

有没有办法让NSTimer(或任何类似的东西)在删除应用后保持运行?

NSTimer* msgTimer = [NSTimer scheduledTimerWithTimeInterval: 259200 target: self selector: @selector(showMsg:) userInfo: nil repeats: NO];

4 个答案:

答案 0 :(得分:7)

我能想到这样做的唯一方法就是每次关闭应用程序时,保存钥匙串中最后一次通知时间的字符串表示。删除应用程序时,不会清除钥匙串。虽然这在技术上是对钥匙串的误用,但它可能会起作用,我怀疑你会有任何商店提交问题。

每当启动应用程序时,请检查它是否是自上次安装以来第一次启动(以默认值保存此信息)。如果是第一次,请检查钥匙串时间戳,与当前时间戳进行比较并从那里开始。

假设用户删除了应用并在第二天安装它。检查钥匙串,你会发现它已被删除23小时前,然后减去23小时开始你的计时器(所以它会在2天1小时内通知)。希望一切都有意义。

否则,如果应用程序通常连接到互联网,您可以使用某种服务器。

答案 1 :(得分:1)

当您的应用程序被删除时,您所做的任何内容都不会被删除。您需要某种Web服务的帮助来实现您期望的行为

答案 2 :(得分:0)

我不相信,但我可能是错的(有人可以纠正我)。即使有可能,这听起来像是做这样的事情的坏方法。

使用本地推送通知如何实现这样的目标?似乎是适合这种情况的理想选择。

Relevant Appl docs for setting up scheduled notifications

答案 3 :(得分:0)

您还可以使用iCloud's key-value data存储来存储初始安装日期。如果您在本地存储日期并从iCloud同步,则用户将难以避免获取更新,除非他们不在互联网上。

当然,这取决于他们在设备上登录iCloud并需要iOS 5或更高版本。