【问题标题】:How do I run a function after the nth time opening the app or after n days?如何在第 n 次打开应用程序后或 n 天后运行函数?
【发布时间】:2017-05-25 22:46:55
【问题描述】:

我想在用户第 n 次打开应用程序后运行一个函数/设置一个布尔值(n 是我想要的任何数字)。

同样,我想在首次启动后 n 天后运行一个函数/设置一个布尔值。

我正在考虑为此创建一个框架,但我不知道从哪里开始。是否有任何现有的框架/Cocoapods 可以做到这一点?如果没有,有人可以给我一些提示/建议我如何做到这一点吗?

【问题讨论】:

  • 每次运行脚本时,向文件添加一个值。然后,如果值变得足够大,则运行该函数并重置该值。希望这会有所帮助!

标签: ios swift xcode frameworks cocoapods


【解决方案1】:

我建议您使用UserDefaults 来跟踪用户启动您的应用程序的次数。 有一个框架iRate 允许您选择应用程序启动后和/或天数来提示用户对您的应用程序进行评分。 要跟踪安装后的天数和启动次数,您可以执行类似的操作

// 从appDelegate didFinishLaunching 方法调用的函数

func trackUsage() {
 let defaults = UserDefaults.standard
 let installationDate = defaults.object(forKey: "installationDate") as? Date
 if installationDate == nil { // this is the first launch of the app
   defaults.set(Date(), forKey: "installationDate")
 }
 let usageCount = defaults.integer(forKey: "usageCount") ?? 0
 defaults.set(usageCount + 1, forKey: "usageCount")
 defaults.synchronize()
}

然后在调用你的函数之前你可以做:

if defaults.integer(forKey: "usageCount") ?? 0 > 10 {
    // the app has been launched at least 10 times
}

【讨论】:

  • 感谢您的建议!我最初的想法是这样的。很高兴知道我在正确的轨道上哈哈。
【解决方案2】:

最简单的方法是使用UserDefaults。将其设置在您的主要ViewControllerviewDidLoad 中。

func setNumberOfStarts(){
let defaults = UserDefaults.standard
//will return 0 if not set previously 
var numberOfStarts: Int = defaults.integer(forKey: "starts") 
numberOfStarts = numberOfStarts + 1

defaults.set(numberOfStarts, forKey: "starts")
}

在需要的地方查询。

func getNumberOfStarts() -> Int{
let defaults = UserDefaults.standard
//will return 0 if not set previously 
let numberOfStarts: Int = defaults.integer(forKey: "starts") 
return numberOfStarts
}

根据需要处理结果。

let MAXIMUM_STARTS: Int = 10
func startedEnough() -> Bool{
    var enough = false
    let defaults = UserDefaults.standard
    let numberOfStarts: Int = defaults.integer(forKey: "starts")
    if numberOfStarts > MAXIMUM_STARTS {
        enough = true
    }
    return enough
} 

【讨论】:

  • 对不起 LastMove 我还在打字,看到你已经发了。
  • 感谢您的建议!我会试试的!
猜你喜欢
  • 1970-01-01
  • 2016-05-12
  • 2020-03-09
  • 2019-01-13
  • 2018-07-12
  • 1970-01-01
  • 2016-09-26
  • 1970-01-01
相关资源
最近更新 更多