-3

是否可以检测是否是用户第一次打开iOS应用程序,使用Objective-C

我想在用户第一次打开应用程序时显示欢迎消息,但之后不再向他们显示。

我正在寻找类似的东西:

BOOL firstTime = [AppDelegate isFirstTimeOpeningApplication]
4

5 回答 5

3

在您的应用程序的首选项中寻找一些价值,或者某个文件的存在。如果您没有找到它,则说明您的应用程序是第一次运行,因此请将预期值写入首选项或创建文件,以便下次运行您的应用程序时您会知道这不是第一次。

如果您存储第一次运行的时间和日期而不仅仅是一个标志,您可以确定自从使用该应用程序以来已经过去了多长时间。如果用户很长时间没有使用您的应用程序,您可能希望您的应用程序表现得像第一次运行一样。

请注意,此技术仅在用户未删除您的应用时才有效。删除应用程序时,会删除其所有数据。如果您想知道您的应用程序之前是否在该设备上运行过,即使它后来被删除,您也需要记录信息以识别其他地方的设备,例如在您自己的服务器上。

于 2013-09-11T14:48:58.087 回答
1

利用NSUserDefaults

//In applicationDidFinishLaunching:withOptions:
BOOL hasLaunchedBefore = [[NSUserDefaults standardUserDefaults] boolForKey:@"AppHasLaunchedBefore"];
if(!hasLaunchedBefore) {
    //First launch
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"AppHasLaunchedBefore"];
}
else {
    //Not first launch
}

希望有帮助!

于 2013-09-11T14:51:30.533 回答
1

您可以在NSUserDefaults.

于 2013-09-11T14:48:46.860 回答
0
- (void)applicationDidFinishLaunching:(UIApplication *)application {
 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSString *firsttime = [defaults stringForKey:@"firsttime"];
    if (firsttime == nil) {

        TheOtherViewController *Other = [[TheOtherViewController alloc] initWithNibName:nil bundle:nil];
        Other.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        [window addSubview: Other.view];        

        [defaults setObject:@"lasttime" forKey:@"firsttime"];
    }   else {  [window addSubview:viewController.view];
        [window makeKeyAndVisible];
    }
}
于 2013-09-11T14:49:21.610 回答
0

使用 NSUserDefaults 存储一个标志,该标志将指示用户之前是否启动过应用程序。如果 flag .. 的值可以说“IsFirstTimeLaunched”为 false,则表示用户之前没有启动过该应用程序。

于 2013-09-11T15:50:59.867 回答