第一种,自己服务器提供一个接口,告知相关app的当前版本,是否需要更新,以及更新的地址等信息 。
第二种,就是利用苹果的App Store提供的相关api进行查询更新。
第三种,采用第三方更新服务,如友盟更新。
官方的app采用的是第一种方法,URL:http://www.560315.com/MobileAPI/versionIOS,采用POST请求,参数为nil,返回json数据。
{
"verison": "1.0.5",
"text": "适配了iOS 9.1"
}
通过比较version判断软件是否需要提示更新:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:@"http://www.560315.com/MobileAPI/versionIOS" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
// 获得当前软件的版本号
NSString *currentVersion = [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];
if ([responseObjec[@"verison"] isEqualToString:currentVersion]) {
// 版本相同...
} else {
// 版本不同...
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
下面我讲介绍第二种方法,利用苹果的App Store提供的相关api进行查询更新。
URL:https://itunes.apple.com/lookup?id=990902550,990902550是程序的appid,采用GET请求,参数为nil,返回json数据。
{
"resultCount": 1,
"results": [{
"artistViewUrl": "https://itunes.apple.com/us/developer/tang-shan-cheng-lian-dian/id1031455573?uo=4",
"artworkUrl60": "http://is5.mzstatic.com/image/thumb/Purple69/v4/91/d9/85/91d985a6-402f-9da0-0ea7-83beaff6f8a0/source/60x60bb.jpg",
"artworkUrl100": "http://is5.mzstatic.com/image/thumb/Purple69/v4/91/d9/85/91d985a6-402f-9da0-0ea7-83beaff6f8a0/source/100x100bb.jpg",
"ipadScreenshotUrls": [],
"artworkUrl512": "http://is5.mzstatic.com/image/thumb/Purple69/v4/91/d9/85/91d985a6-402f-9da0-0ea7-83beaff6f8a0/source/512x512bb.jpg",
"screenshotUrls": ["http://a1.mzstatic.com/us/r30/Purple69/v4/df/95/7b/df957bfe-f602-e8f6-9f71-297950ca0eae/screen1136x1136.jpeg", "http://a3.mzstatic.com/us/r30/Purple3/v4/a0/6e/1b/a06e1b80-5378-4028-3592-e5afa563e7c7/screen1136x1136.jpeg", "http://a4.mzstatic.com/us/r30/Purple3/v4/e7/f1/c9/e7f1c936-89d9-6bbe-81bf-c1a05a3fa3b5/screen1136x1136.jpeg", "http://a2.mzstatic.com/us/r30/Purple3/v4/0b/24/45/0b2445eb-86ea-2868-0f78-6268e32bde22/screen1136x1136.jpeg", "http://a5.mzstatic.com/us/r30/Purple69/v4/80/19/c0/8019c07b-b10f-8e8e-3e8a-b771744e7874/screen1136x1136.jpeg"],
"isGameCenterEnabled": false,
"kind": "software",
"features": [],
"supportedDevices": ["iPad2Wifi", "iPad23G", "iPhone4S", "iPadThirdGen", "iPadThirdGen4G", "iPhone5", "iPodTouchFifthGen", "iPadFourthGen", "iPadFourthGen4G", "iPadMini", "iPadMini4G", "iPhone5c", "iPhone5s", "iPhone6", "iPhone6Plus", "iPodTouchSixthGen"],
"advisories": ["Unrestricted Web Access"],
"trackCensoredName": "物流唐山",
"trackViewUrl": "https://itunes.apple.com/us/app/wu-liu-tang-shan/id990902550?mt=8&uo=4",
"contentAdvisoryRating": "17+",
"fileSizeBytes": "22953228",
"languageCodesISO2A": ["EN", "ZH"],
"trackContentRating": "17+",
"currency": "USD",
"wrapperType": "software",
"version": "1.0.5",
"artistId": 1031455573,
"artistName": "唐山成联电子商务有限公司",
"genres": ["Business", "Utilities"],
"price": 0.00,
"description": "找车、找货、找仓储,找物流唐山!\n“物流唐山APP”是唐山市各类物流资源聚合、在线交易的专业物流移动客户端。同名PC版平台是商务部城市共同配送公共信息服务示范平台。\nAPP设有21个功能模块,全面满足不同用户获取货源、车源、库源、专线、配货站、物流园区、配送中心等多样化需求,同时提供地理位置信息、语音发布、呼叫中心等服务支持。\n 【功能特性】\n1、\t基于地理位置时时推送资源信息。\n用户可以基于位置时时获取周边车源、货源、仓储资源、物流公司、配送中心、快递公司、加油站、汽车维修服务等物流及相关资源。\n2、\t语音快捷发布信息。\n无需登录,即可通过语音便捷发布供需信息。\n3、\t运价指数动态呈现。\n时时推送最新运价数据,轻松掌握运价变动。\n4、\t供需互评,构建诚信体系。\n供需双方达成真实交易客观互评,打造安全、诚信的交易环境。\n5、\t专业智能平台、专属人工服务。\n供需资源智能匹配与人工服务完美结合,促成物流资源安全、高效交易。\n客服热线:400-662-9256\nQQ客服群:208699632",
"minimumOsVersion": "8.4",
"genreIds": ["6000", "6002"],
"releaseDate": "2015-05-13T16:30:42Z",
"sellerName": "Tangshan Chenglian E-Business Co., Ltd.",
"bundleId": "com.liwei.app",
"releaseNotes": "物流唐山更新了--\n1,针对iOS9.1做了适配\n2,优化了项目解决了一些地方的卡顿问题\n3,解决了一些信息错乱问题",
"trackId": 990902550,
"trackName": "物流唐山",
"primaryGenreName": "Business",
"primaryGenreId": 6000,
"isVppDeviceBasedLicensingEnabled": true,
"formattedPrice": "Free"
}]
}
我们只需要其中的三个字段即可:
"version": "1.0.5",
"trackViewUrl": "https://itunes.apple.com/us/app/wu-liu-tang-shan/id990902550?mt=8&uo=4",
"releaseNotes": "物流唐山更新了--\n1,针对iOS9.1做了适配\n2,优化了项目解决了一些地方的卡顿问题\n3,解决了一些信息错乱问题"
判断方法与上面没有太大差别:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:@"https://itunes.apple.com/lookup?id=990902550" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSDictionary *dict = [responseObject[@"results"] firstObject];
// 获得当前软件的版本号
NSString *currentVersion = [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];
if ([dict[@"verison"] isEqualToString:currentVersion]) {
// 版本相同...
} else {
// 版本不同...
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
继续介绍第三种方法,采用友盟更新的好处是可以随时设置版本号与更新内容,不同于第一种方法需要自己维护。方便简洁高度集成。
1.首先注册友盟:http://www.umeng.com/users/sign_up
2.创建应用:http://www.umeng.com/apps
3.创建完成以后在左上方全部应用点击,选中刚刚创建的应用,点击组件,再点击自动更新,编辑更新:
说明:app网址就是app在App Store的下载地址。版本号就是你上架的app的版本号。更新日志就是更新了哪些内容。
4.点击左下角iOS 自动更新SDK下载,将SDK导入项目中。
5.在AppDelegate.m文件中import头文件UMCheckUpdate.h,在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;函数中调用友盟更新。
[UMCheckUpdate checkUpdate:@"发现新版本" cancelButtonTitle:@"稍后再说" otherButtonTitles:@"立即去更新" appkey:@"应用的appKey" channel:nil];