ส่วนวิธีการทำนั้นสามารถทำได้หลายวิธี ยกตัวอย่าง (ที่คิดออกตอนนี้นะ)
1. ใช้ Server ส่วนตัว แล้วให้แอพ Request ทุกครั้งก่อนใช้งาน เพื่อตรวจสอบเวอร์ชั่นล่าสุด ถ้าไม่ใช่ล่าสุด ก็ให้ขึ้น Alert เพื่ออัพเดทก่อนใช้งาน
2. ไม่ต้องมี Server ส่วนตัวให้วุ่นวาย ใช้วิธีการ Request ไปที่ iTunes แทน เพื่อดูเวอร์ชั่นล่าสุดของแอพเราที่อยู่บน App Store ถ้าไม่ใช่ล่าสุด ก็ให้ขึ้น Alert เพื่ออัพเดทก่อนใช้งาน
โดยวิธีที่ผมจะแนะนำวันนี้คือแบบที่ 2
สิ่งที่เราต้องเตรียมคือ
1.App ID ของแอพที่เราต้องการตรวจสอบ
ดูง่ายๆ จาก https://itunes.apple.com/th/app/thai-tunes-tv-free/id454349366
App ID = 454349366
2. เนื่องข้อมูลที่ใช้เราจะได้กลับมาเป็น JSON ก็ต้องใช้ Lib กันหน่อย :) ที่ผมใช้ประจำก็ SBJson
พร้อมแล้วก็สร้าง Xcode Project กันขึ้นมาเลยครับ โดยการใช้งานจะตรวจสอบทุกครั้งเมื่อเปิดแอพ ให้
เรานำ คำสั่งที่จะตรวจสอบเวอร์ชั่นไว้ใน Method นี้
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { }
โอเคจากนั้นเราก็ทำการตรวจสอบเวอร์ชั่นละ จาก API นี้
http://itunes.apple.com/lookup?id=AppID
ในส่วนของโค้ด ก็จะเป็นแบบนี้
NSData * data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:[[NSString stringWithFormat:@"http://itunes.apple.com/lookup?id=%@",Your_App_ID] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]]; NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; if ([[[jsonString JSONValue] objectForKey:@"resultCount"] integerValue] == 1) { dispatch_async(dispatch_get_main_queue(), ^{ NSLog(@"%@",[[jsonString JSONValue] objectForKey:@"results"]); NSArray *resultArray = [[jsonString JSONValue] objectForKey:@"results"]; float latestVersion = [[[resultArray objectAtIndex:0] objectForKey:@"version"] floatValue]; float appVersion = [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] floatValue]; if (appVersion < latestVersion) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"คุณกำลังใช้ %@ เวอร์ชั่นเก่า",[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"]] message:@"เพื่อใช้งานคุณสมบัติใหม่ คุณจำเป็นต้องอัพเดทเวอร์ชั่นล่าสุดในตอนนี้" delegate:self cancelButtonTitle:@"ปิด" otherButtonTitles:@"อัพเดท",nil]; [alert show]; [alert release]; } }); } [data release];
ในส่วนแรกจะทำการ Request ไปที่ iTunes ถ้าไม่มีอะไรผิดพลาด API จะ Return ข้อมูลมาเป็น 1 จากนั้นก็ทำการเปรียบเทียบ App Version กับ iTunes Version ดู ถ้า App Version น้อยกว่า iTunes Version ก็ Alert ให้อัพเดท แต่ถ้าเท่ากันแล้วก็ผ่าน แบบนี้ครับ
ผมแนบตัวอย่าง Souce Code ไว้ด้วย ใครอยากลองดาวโหลดไปเล่นดูก็ตามสบายนะครับ อธิบายอาจจะงงๆ หน่อยนะ ไว้มีโอกาสจะมีเขียนเป็น Tutorial ดีๆ ไปละครับ :)