版本號并不是一個數字,而是一個字符串
所謂 暗開關 是指我通過服務端寫接口來控制通過appstore審核的,例如用來屏蔽微博分享或者一些蘋果審核禁止的功能.
1.版本號
版本號的獲取,很簡單
[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]
版本號會有兩個小數點, 形如1.1.1, 故不能用浮點數來判斷版本號大小.
在iOS中用compare:方法判斷字符串.
NSString *currentSystemVersion = kSystemVersion;
if ([currentSystemVersion compare:@"5.1"] != NSOrderedAscending)
{
//當前iOS版本大于5.1
}
else if ([currentSystemVersion compare:@"5.0.1"] != NSOrderedAscending)
{
//當前iOS版本大于5.0.1
}
NSOrdered 說白了,實際上就是>=<, -1,0,1,返回值是一個比較的結果.
NSOrderedAsceding是其中一個枚舉, 詳細參見文檔.
這種比較方法很方便,不僅可以進行5.1與6.1的比較,還可以細化到5.1和5.0.1版本的比較。之所以需要細化,是因為每一個小版本之間,sdk還有有一些差異的,就比如避免文件被備份到iCloud,實現方式在5.1和5.0.1不同。
php中的方法
<?php
if (version_compare("5.2", PHP_VERSION, ">"))
{
//("PHP 5.2 or greater is required!!!");
}
?>
2.暗開關
由于開關是服務器控制, 所以我們不能在開關關閉時關閉所有已經上線的版本. 只能對最新的版本進行操作.
因此參數要傳遞當前版本號, 判斷是否為最新版本, 若為最新版本返回已經設置好的開關, 如果是舊版本則永遠為true,不干涉老版本.