iOS 提示用户版本升级
2017-03-10 本文已影响69人
无奈iOSer
现在苹果审核不能看到版本提示更新的字样以及功能,如果你的APP里面有这个功能还有字样,那么恭喜你,你会被拒绝的。但是“操蛋”的策划,还必须让我们实现,给他解释也解释不清楚,他就会说:“别人的怎么有,别人的怎么能通过审核”。听到这是不是有种想打人的冲动。好吧,废话扯得有点多了,还是言归正传吧。我给大家推荐两个思路。
方法一:
1.需要后台的配合,当您的APP还没上架的时候,后台给你返回的数据里面,是没有审核那个字段的。当你的APP上架的时候,让后台返回您的数据里面有这个字段。
注意:这个方法是有个毛病的,如果升级改怎么办呢?升级的时候你的APP是上架状态啊。靠还是搞不定啊。
解决方法:
还是需要后台的配合,你可以发送请求的时候,把你当前的版本号,发送给后台,让后台去判断,该不该返回更新版本信息。(本人思想,能让后台做的,前台就不去搞)
09465884-FEEF-42FB-B333-C72EA6CE2F72.png
方法二:
1.这个就不需要后台了,需要自己代码实现。现在后台都是比较牛逼的,所以只有自己去实现了。
实现的思路:
1.你要获取你在APP store上面的版本号和你程序的版本号进行比较下就OK了,小了就提示用户更新。直接看代码吧。
/**获取程序的版本号*/
NSString *version = [[[NSBundle mainBundle]infoDictionary] objectForKey:@"CFBundleVersion"];
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
[mgr.responseSerializer setAcceptableContentTypes: [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", nil]];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
// dict[@"id"] = @"1073033949";// 上架的ID
dict[@"id"] = App_ID;// 你程序的apple ID号
[mgr POST:App_URL parameters:dict success:^(NSURLSessionDataTask * _Nonnull task, id _Nonnull responseObject) {// App_URL http://itunes.apple.com/lookup
NSArray *array = responseObject[@"results"];
if (array.count != 0) {// 先判断返回的数据是否为空 没上架的时候是空的
NSDictionary *dict = array[0];
self.dictM = dict;
[array writeToFile:App_URLPath atomically:YES];// 这是我保存到本来了 后面的功能要使用
if ([dict[@"version"] floatValue] > [version floatValue]) {//判断版本大小了
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"更新" message:@"有新的版本更新,是否前往更新?" delegate:self cancelButtonTitle:@"关闭" otherButtonTitles:@"更新", nil] ;
alert.delegate = self;
[alert show];
}
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
}];
注意:这个方法也是有个缺陷的,就是苹果返回的数据不能变,一变就不好办了。但是个人觉得,苹果更改的话,也会保留原有数据方法的,所以此担心可以忽略。但是该方法什么时候掉是个问题,是每次启动都要访问还是隔段时间访问,个人觉得一星期访问一次就可以了,如果有更新,就该提示用户了。