首先需要獲得當(dāng)前軟件的版本號(hào),通過和'舊'版本號(hào)比對(duì)判斷出 app 是否第一次打開,是否需要展示當(dāng)前軟件的新特性引導(dǎo)頁面.
版本號(hào)在主資源包的 Info.plist 文件中.
- 但是在 info.plist 中存儲(chǔ)的鍵值不是真實(shí)的,所以我們通過查看 Source Code 的方式獲得版本號(hào)的真實(shí)鍵值
我們?cè)诘谝淮未蜷_軟件時(shí),將當(dāng)前版本存入用戶偏好設(shè)置.
下次打開的時(shí)候,拿出上次手動(dòng)存儲(chǔ)的版本號(hào)與軟件版本號(hào)進(jìn)行比對(duì).就可以判斷出當(dāng)前軟件是否第一次打開.
實(shí)現(xiàn)代碼如下
@implementation XBVersion
+ (instancetype)chooseRootViewController{
// 取出當(dāng)前軟件版本號(hào)
NSString *curVersion = [NSBundle mainBundle].infoDictionary[@"CFBundleShortVersionString"];
NSLog(@"Current Version -- %@",curVersion);
// 取出上次手動(dòng)存儲(chǔ)的版本號(hào)
NSString *oldVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"VersionKey"];
NSLog(@"Old Version -- %@",oldVersion);
// 比對(duì)當(dāng)前軟件是否第一次打開
if ([curVersion isEqual:oldVersion]){
NSLog(@"沒有新特性");
} else {
NSLog(@"有新特性");
// 手動(dòng)將當(dāng)前版本存入偏好設(shè)置
[[NSUserDefaults standardUserDefaults] setValue:curVersion forKey:@"VersionKey"];
}
return nil;
}
@end
代碼運(yùn)行效果如下
- 由于第一次打開, Old Version 的內(nèi)容我們還沒有手動(dòng)添加,明顯可以看到當(dāng)前軟件是第一次打開.
- 成功讀取版本信息,可以有效的避免新特性被重復(fù)多次的展示.