【问题标题】:Wants to fire an event after 10 days想在 10 天后触发一个事件
【发布时间】:2017-07-05 05:44:12
【问题描述】:

想要在 10 天后触发一个事件,假设我有一个到期日期来显示保存在我的应用文件夹中的图像。我正在节省资产的下载时间,我想在下载时间后 10 天检查该时间。如果超过 10 天,该资产应自动从应用文件夹中删除。

我知道我们有一些选择:

1. GCD:

int parameter1 = 12;
float parameter2 = 144.1;

// Delay execution of my block for 10 seconds.
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 10 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
    NSLog(@"parameter1: %d parameter2: %f", parameter1, parameter2);
});

2。本地通知/EventKit:

注意:它不应该引发任何警报,它应该从应用文件夹中删除后台资产。

有没有办法用持续时间触发方法。

【问题讨论】:

  • 在一段时间内每 10 秒执行一次可能会非常昂贵。您是否希望它在下载后的 10 天(即 864000 秒)后准确触发,还是足以在某一天结束时使其过期?
  • 10天了,假设有10个资产下载并保存到本地文件夹,需要每次检查这10个资产并从缓存文件夹中删除。
  • 我认为只有在应用程序从挂起模式唤醒时才能检查(didBecomeActive 通知)
  • 我们有一些角落场景,比如 youtube。一旦你离线资产,你在同一个离线页面,应用程序在 10 天内没有进入其他屏幕或背景,想象一下。该资产在 youtube 中自动过期,我们需要实现相同的功能。
  • 我建议你做的是让后台服务在一天中的某个时间或应用程序启动时处理删除。但是,如果想在确切的 240 小时后使资产到期,那么假设资产在 1 日 1.01 下载,而您希望它在 10 日的 1.01 到期,那么您将不得不采用不同的方法。

标签: ios objective-c swift xcode


【解决方案1】:

我将文件添加到设备上的日期保存在NSUserDefaults

然后,当 AppDelegate 的 application(_, didFinishLaunchingWithOptions:) 触发时,我会检查上次清除是否已经过去了 10 天。如果是真的我会再次清除,如果是假的我什么都不会做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多