【问题标题】:Objective C: Recognize if user is opening app for first time目标 C:识别用户是否是第一次打开应用程序
【发布时间】:2011-02-03 19:41:24
【问题描述】:

我发出了一个随机出现的警报,提醒用户给应用评分,然后将键 BOOL 设置为 YES,这样当用户点击评分时它就不会弹出。我需要最初将其设置为 NO。是否有函数或变量知道用户是否第一次打开应用程序?

【问题讨论】:

  • “我发出了一个提醒,提醒用户对应用程序进行评分[并不断弹出,直到用户这样做]”我可以保证我会给你的应用程序打一星这样的一个警报。
  • 不知道为什么会有敌意。这是大量应用程序使用的标准做法。

标签: objective-c cocoa cocoa-touch ios


【解决方案1】:

如果您使用NSUserDefaults 存储此BOOL,那么当您询问boolForKey: 的默认值时,如果默认值中不存在BOOL,它将自动返回NO

【讨论】:

  • 虽然这完全适合特定情况,但我认为有人应该指出-[NSUserDefaults registerDefaults:],这是指定基线默认值的一般方法。所以我在这里做。 :-)
【解决方案2】:

设置 BOOL firstTimeAppLaunch; firstTimeAppLaunch = TRUE;然后[[NSUserDefaults standardUserDefaults] setBool:firstTimeAppLaunch forKey:@"firstTimeFlag"];

然后阅读它

BOOL tempFirstAppLaunch = [[NSUserDefaults standardUserDefaults] boolForKey:@"firstTimeFlag"];
    if(tempFirstTimeAppLaunch==TRUE)
    {
          //doSomething
        }

【讨论】:

  • 这如何表明它不是第一次发布?如果自动设置为YES,然后设置standardUserDefaults中的值,然后读取值,每次都会得到相同的结果!
  • 为此,您可以在方法中将值设置为 NO! BOOL tempFirstAppLaunch = [[NSUserDefaults standardUserDefaults] boolForKey:@"firstTimeFlag"]; if(tempFirstTimeAppLaunch==TRUE) { //doSomething RIGHT HERE [[NSUserDefaults standardUserDefaults] setBool:@NO ForKey:@"firstTimeFlag"]; }
【解决方案3】:

如果您在使用应用程序时保存了任何类型的首选项、任何配置文件或其他任何内容,您可以检查该数据是否存在,并假设首次使用或设备恢复并重新安装(如果该数据不存在) t 在应用启动时出现。

这听起来很明显。关键是您可以保存一些数据进行检查,一个很好的例子是一个计数器,它指示应用程序启动(或重新唤醒)的次数,确保您至少在之后才要求评分第三次发射。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多