【问题标题】:Detecting the first ever run of an app检测应用程序的首次运行
【发布时间】:2011-10-13 18:33:07
【问题描述】:

我正在创建一个应用程序,当应用程序首次启动时,我必须在其中创建一个 plist。稍后我将使用 plist 来存储用户稍后输入的详细信息。如何检测应用程序的首次启动?我正在试验 NSUserDefaults 但我认为我做错了什么。

【问题讨论】:

    标签: iphone ios plist nsuserdefaults


    【解决方案1】:

    您可以使用 NSUserDefaults 来做到这一点。但请注意版本号。

    执行以下操作:

    NSString *bundleVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
    
    NSString *appFirstStartOfVersionKey = [NSString stringWithFormat:@"first_start_%@", bundleVersion];
    
    NSNumber *alreadyStartedOnVersion = [[NSUserDefaults standardUserDefaults] objectForKey:appFirstStartOfVersionKey];
    if(!alreadyStartedOnVersion || [alreadyStartedOnVersion boolValue] == NO) {
        [self firstStartCode];
        [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:YES] forKey:appFirstStartOfVersionKey];
    }
    

    选择器 firstStartCode 只会在第一次运行时为每个应用程序版本按时调用。

    好吗?

    【讨论】:

      【解决方案2】:

      我喜欢使用 NSUserDefaults 来存储第一次运行的指示。

      NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];  
      if (![defaults objectForKey:@"firstRun"])
        [defaults setObject:[NSDate date] forKey:@"firstRun"];
      
      [[NSUserDefaults standardUserDefaults] synchronize];
      

      您可以稍后对其进行测试...

      NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];        
      if([defaults objectForKey:@"firstRun"])           
      {
        // do something or not...
      }
      

      取自:Best way to check if an iPhone app is running for the first time

      【讨论】:

      • 那么第一段代码,我是不是把它放在didFinishLaunching下的app delegate中?
      【解决方案3】:

      您可以使用以下内容:

      -(void) firstLaunch {
          //Code goes here
      }
      
      -(void) firstLaunchCheck {
          if(![[NSUserDefaults standardUserDefaults] boolForKey:@"didLaunchFirstTime"]) {
              [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"didLaunchFirstTime"];
              [self firstLaunch];
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-09
        • 1970-01-01
        • 2011-11-05
        • 2012-10-10
        • 2016-01-26
        • 1970-01-01
        相关资源
        最近更新 更多