首次启动我的应用时,我使用NSUser默认设置来显示我的应用的介绍。
但是,一旦发布并安装了更新,我想在更新后的第一次启动时显示最新的页面。我的问题是NS用户默认值没有重置,每个人都有不同的启动计数。
我可以使用此代码来计算出软件版本......
if ([[NSString stringWithFormat:@"Version %@",[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]]isEqualToString:@"Version 1.0"])
{
// first launch code here
}
...但是我怎么才能在更新后的第一次发布而不是每次发布时才显示最新的页面?
如果需要任何代码,则需要在Objective C中,因为我还没有开始在swift中开发。在此先感谢您的任何帮助。
答案 0 :(得分:3)
使用NSUserDefaults
存储类似"hasShowedUpatePopupForVersionXX"
的布尔值。
在新安装的情况下,不要忘记将其设置为YES
//check if popup has been shown
if (![[NSUserDefaults standardUserDefaults] valueForKey:@"hasShowedUpatePopupForVersionXX"]) {
// Set the value to YES
[[NSUserDefaults standardUserDefaults] setValue:@YES forKey:@"hasShowedUpatePopupForVersionXX"];
}
答案 1 :(得分:3)
对您的应用进行版本检查,并将当前版本存储在NSUserDefaults中。然后在启动时检查以确保该值与当前值匹配。如果没有,则显示您要显示的内容,然后将NSUserDefaults键保存到新值。我不会存储Bool值,而是希望存储您应用的当前版本。
如何获取当前版本
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
答案 2 :(得分:1)
使用上面的代码,我创建了一个完整工作的代码段,可以找到App版本。
如果NSUserdefaults中的应用版本不相同,它将完成segue并更新NSUserdefaults,以便在应用更新之前它不会再次运行。
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
NSLog(@"App Version is %@",version);
if ([[NSString stringWithFormat:@"Version %@",[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]]isEqualToString:@"Version 1.0"])
{
//check if popup has been shown
if (![[[NSUserDefaults standardUserDefaults] valueForKey:@"appVersion"] isEqualToString:version]) {
[self performSegueWithIdentifier:@"showUpdate" sender:self];
// Set the value to YES
[[NSUserDefaults standardUserDefaults] setValue:version forKey:@"appVersion"];
}