Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 您如何检测用户是否是第一次打开应用程序_Iphone_Ios - Fatal编程技术网

Iphone 您如何检测用户是否是第一次打开应用程序

Iphone 您如何检测用户是否是第一次打开应用程序,iphone,ios,Iphone,Ios,是否可以使用Objective-C检测用户是否是第一次打开iOS应用程序 我想在用户第一次打开应用程序时显示欢迎消息,但之后不向他们显示 我要找的东西是: BOOL firstTime = [AppDelegate isFirstTimeOpeningApplication] 您可以在NSUserDefaults中保存一个“我以前运行过”标志,以查找应用程序首选项中的某个值,或某个文件是否存在。如果找不到,则表示您的应用程序是第一次运行,因此请将预期值写入首选项或创建文件,以便下次运行应用程序

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

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

我要找的东西是:

BOOL firstTime = [AppDelegate isFirstTimeOpeningApplication]

您可以在
NSUserDefaults

中保存一个“我以前运行过”标志,以查找应用程序首选项中的某个值,或某个文件是否存在。如果找不到,则表示您的应用程序是第一次运行,因此请将预期值写入首选项或创建文件,以便下次运行应用程序时,您会知道这不是第一次

如果您存储第一次运行的时间和日期,而不仅仅是一个标志,那么您可以确定应用程序使用以来的时间和日期。如果用户很长时间没有使用你的应用程序,你可能希望你的应用程序看起来像是第一次运行


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

使用
NSUserDefaults

- (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];
    }
}
//In applicationDidFinishLaunching:withOptions:
BOOL hasLaunchedBefore = [[NSUserDefaults standardUserDefaults] boolForKey:@"AppHasLaunchedBefore"];
if(!hasLaunchedBefore) {
    //First launch
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"AppHasLaunchedBefore"];
}
else {
    //Not first launch
}

希望有帮助

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

到目前为止你试过什么?你提到你在堆栈溢出上尝试了“其他方法”,但没有提到你尝试了什么方法。如果你关闭手机,这些方法就不起作用——这没有任何意义。在应用程序启动之间保存任何数据的唯一方法是将其写入持久存储;如果将其写入永久性存储,则无论您是否在设备上循环电源,它都会存在。放入钥匙链的项目不会随应用程序一起删除,因此这可能是一种在卸载之间存储少量信息的有用方法。@RobNapier我想可能是这样的,但我没有足够的把握提出建议,而且时间太短,无法查找。感谢您添加这一点——使用钥匙链要比为此目的设置服务器容易得多。