현재 디바이스에 설치된 앱이 App Store에 출시된 최신 버전인지 체크하는 방법이다.
+ (BOOL)needsUpdate
{
NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSString* appID = infoDictionary[@"CFBundleIdentifier"];
NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"http://itunes.apple.com/lookup?bundleId=%@", appID]];
NSData* data = [NSData dataWithContentsOfURL:url];
NSDictionary* lookup = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
BOOL result = NO;
if ([lookup[@"resultCount"] integerValue] == 1){
NSString* appStoreVersion = lookup[@"results"][0][@"version"];
NSString* currentVersion = infoDictionary[@"CFBundleShortVersionString"];
NSArray *versionArray = [currentVersion componentsSeparatedByString:@"."];
NSArray *appStoreArray = [appStoreVersion componentsSeparatedByString:@"."];
for (int i=0; i<appStoreArray.count; i++) {
int bundleStat = [versionArray[i] intValue];
int serverStat = [appStoreArray[i] intValue];
if (bundleStat == serverStat) {
result = NO;
continue;
} else if (bundleStat > serverStat) {
result = NO;
break;
} else {
result = YES;
break;
}
}
}
return result;
}
참고로 lookup 변수에는 앱스토어 등록되어있는 나의 앱에 대한 여러 정보들을 갖고있더라.
'iOS > iOS 기본기' 카테고리의 다른 글
[Apple Document] iOS - The App Life Cycle (0) | 2019.11.21 |
---|---|
[iOS] 현재 뷰 컨트롤러가 모달(Modal)인지 체크해보쟈 (0) | 2016.11.23 |
[iOS9] Search API - Core Spotlight (0) | 2016.03.01 |
[iOS] NSString 문자열 Token으로 자르기 (0) | 2016.02.03 |
[iOS] Supporting IPv6 in iOS 9 ( IPv4 지원 중단 및 IPv6 필수 ) (2) | 2016.01.05 |