iOS - 每天只对 TodayViewController(Widget)执行一次操作

iOS - Do action on TodayViewController (Widget) only once a day

我目前正在我们的 Widget 上做一些统计。

我希望能够在小部件的 viewWillAppear 方法中计算访问次数,但一天最多只能计算一次。

首先,我想到了一个布尔值,但是它会被释放,所以我会失去这个布尔值的引用对吗?

然后我想知道 dispatch_once 是否可以解决我的问题。

static dispatch_once_t once;
    dispatch_once(&once, ^ {

    });

大家怎么看?

我不希望我的统计数据不准确,因为用户一天从主页加载和显示小部件数百次。

这就是为什么我只想每天限制计数方法一次。

PS : 我正在开发 Objective C

每次发送事件时只存储当前日期。然后只需检查存储的日期是否为今天。 如果不是,则发送事件并相应地更新存储的日期。

Swift 中的示例(未测试):

let defaults = UserDefaults.standard
let dateOfLastEvent = defaults.string(forKey: "DateOfLastEvent")

let currentDate = Date()
let formatter = DateFormatter()
formatter.dateFormat = "yyyyMMdd"

let currentDateString = formatter.string(from: currentDate)

if (currentDateString != dateOfLastEvent) {
    // Send the event
    defaults.set(currentDateString, forKey: "DateOfLastEvent")
}