App版本检查更新

  • 之前都是通过后台的api来判断是否需要弹窗提醒用户更新App,但是会有一个问题,我这边发了新版本之后,没有及时对接后台,导致后台没有更新api的返回参数。还有就是更新文案这些。比较麻烦,后面就看了一下可以直接通过iTunes的连接来做这个版本更新,信息还比较全,不依赖后台。方便快捷。

  • 只要App更新并且被App Store收录之后了,就可弹窗。

  • 具体代码如下:

1.需要准备你的App版本更新的url,通过url去获取你需要的数据:http://itunes.apple.com/lookup?id=你的AppID
由于发布了新版本,但是接口没有拿到最新的版本号。这个url 需要注意下:如果你的应用是只发布到中国区那么接口需要添加 /cn:
http://itunes.apple.com/cn/lookup?id=你的AppID
如果没有拿到数据,或者没有拿到最新数据。需要用https,所以最后用下面的接口(modify 2020年05月12日09:57:00)
https://itunes.apple.com/lookup?id=你的AppID

    NSString *url = url // 这里的url是你上面准备的那个url;
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    manager.responseSerializer = [AFJSONResponseSerializer serializer];
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/javascript", nil];

    [manager POST:url parameters:nil progress:^(NSProgress * _Nonnull uploadProgress) {
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSString *newVersion = responseObject[@"results"][0][@"version"];//获取版本号
//        NSLog(@"%@",responseObject);
        BOOL result = [self compareVersionWithNewVersion:newVersion];
        if (result) {
            // 需要更新
            // 进行弹窗
        }else{
            NSLog(@" 已经是最新版本");
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
    }];
  1. 这里会有一个版本号的对比
- (BOOL) compareVersionWithNewVersion:(NSString *) newVersionStr{
    //从info.plist文件获取Version
    NSString *version = [[[NSBundle mainBundle] infoDictionary]objectForKey:@"CFBundleShortVersionString"];
    NSInteger localVersion = [[version stringByReplacingOccurrencesOfString:@"." withString:@""] integerValue];
    //最新版本号
    NSInteger newVersion = [[newVersionStr stringByReplacingOccurrencesOfString:@"." withString:@""] integerValue];
    //这里的话,版本号可能类似:1.2,1.2.1,(如果是1.2.22 和 1.3 这样的比较需要注意补齐位数)
    newVersion = newVersion < 100 ? newVersion *= 10 : newVersion;
    localVersion = localVersion < 100 ? localVersion *= 10 : localVersion;
    
    return localVersion < newVersion ? 1 : 0;
}
  • 再也不用麻烦后台大佬了。

---来自涛胖子的工作笔记

你可能感兴趣的:(App版本检查更新)