如何检测用户是不是是第一次打开应用程序 [重复]

Posted

技术标签:

【中文标题】如何检测用户是不是是第一次打开应用程序 [重复]【英文标题】:How can you detect if it is the first time a user opens an app [duplicate]如何检测用户是否是第一次打开应用程序 [重复] 【发布时间】:2013-09-11 14:45:47 【问题描述】:

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

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

我正在寻找类似的东西:

BOOL firstTime = [AppDelegate isFirstTimeOpeningApplication]

【问题讨论】:

到目前为止您尝试过什么?你提到你在堆栈溢出时尝试了“其他的”,但没有尝试过什么方法 如果你关闭手机,它们就不起作用——这没有任何意义。在应用程序启动之间保留任何数据的唯一方法是将其写入持久存储;如果它被写入持久存储,无论您是否重启设备,它都会在那里。 【参考方案1】:

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

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

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

【讨论】:

放置在钥匙串中的项目不会随您的应用程序一起删除,因此这可能是在卸载之间存储少量信息的有用方法。 @RobNapier 我认为可能是这种情况,但不确定是否建议这样做,而且查找时间太短。感谢您添加 - 使用钥匙串比为此目的设置服务器要容易得多。【参考方案2】:

使用NSUserDefaults

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

else 
    //Not first launch

希望有帮助!

【讨论】:

【参考方案3】:

您可以在NSUserDefaults 中保存“我之前跑过”标志。

【讨论】:

【参考方案4】:
- (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];
    

【讨论】:

【参考方案5】:

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

【讨论】:

以上是关于如何检测用户是不是是第一次打开应用程序 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Android通知会多次打开,而不是只打开一次

如何在请求会话之前检测用户是不是有 iOS 集成 Facebook 帐户设置?

php函数检测该网站是不是在手机或计算机浏览器中打开[重复]

检测用户是不是打开或关闭了 Wifi 或蓝牙 [关闭]

如何检测PDF文档是不是损坏了?

检测低电量警告ios [重复]