确定您当前是否已安装自己的应用程序

时间:2015-06-12 18:52:46

标签: ios objective-c appdelegate

我正在我的某个应用中创建一个新功能,以显示"新功能"页。我将这一切按预期工作,并将最后一个版本(存储)与当前版本进行比较,然后在显示功能列表后更新当前版本。

这一切都很有效并且符合预期。我现在的问题是确定用户是否已安装该应用程序。

案例1)如果用户是全新用户且是他们第一次下载应用程序,则不应显示新功能列表。

案例2)如果他们已经安装了应用并将他们的应用更新为新版本,那么我们需要显示新的功能列表。

我需要帮助的部分是案例2.如何确定用户是否已安装该应用程序,而不必仅为了事先设置currentInstalledVersion变量而发布次要更新?

2 个答案:

答案 0 :(得分:0)

if(currentInstalledVersion)
{
   if(currentInstalledVersion < actualCurrentVersion)
   {
      // user upgraded
   }
}
else
{
   if(someOtherDataSavedOnDiskExists)
   {
      // user had the app with a version before you implemented currentInstalledVersion and is updating
   }
   else
   {
     // fresh install
   }
}

根据以下评论进行更新

好的,在这种情况下,没有内置的机制可以帮助你解决这个问题。在你自己实施一种方式(带有这个标志)之前,你无法检查。但是,如果您有任何其他标记或数据,例如您已写入NSUserDefaults,则可以在启动时立即检查这些标记或数据,看看是否设置了这些值,这些值会告诉您它是现有用户刚刚安装了应用程序(如果未设置currentInstalledVersion,则仅检查其他标志)。如果您尚未将任何数据写入磁盘或NSUserDefaults,那么您对此功能的初始版本运气不佳。

我更新了上面的代码以反映这一点。

答案 1 :(得分:0)

您可以使用NSUserDefault并设置bool来检查它是否是新用户。 例如:

if(![[NSUserDefaults standardUserDefaults] boolForKey:@"user"]){
  // it's a new user
  [[NSUserDefaults standardUserDefaults] setBool:YES ForKey:@"user"];
}

如果未设置默认值,boolForKey:方法将返回NO