ios提示用户版本升级

作者: 七秒记忆的鱼儿 | 来源:发表于2016-05-14 17:08 被阅读6638次

    本文主要介绍的是两种提示用户的更新的方法,文字比较多。但都是逻辑

    现在苹果审核不能看到版本提示更新的字样以及功能,如果你的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) {
        
    }];
    
    注意:这个方法也是有个缺陷的,就是苹果返回的数据不能变,一变就不好办了。但是个人觉得,苹果更改的话,也会保留原有数据方法的,所以此担心可以忽略。但是该方法什么时候掉是个问题,是每次启动都要访问还是隔段时间访问,个人觉得一星期访问一次就可以了,如果有更新,就该提示用户了。

    APPLE ID的获取位置

    C05498B7-9102-4BAE-9EDD-0C0BFC740E66.png

    相关文章

      网友评论

      • 柳絮风微:方法二拷贝的链接是错误的,一直解析不了
        七秒记忆的鱼儿:@柳絮风微 是的啊,官网写的是Apple ID 我喜欢叫这样叫它而已
        柳絮风微:@七秒记忆的鱼儿 拷贝的链接是app跳转到app store用的,查询版本号的话应该是http://itunes.apple.com/cn/lookup?id=你的appid才对
        七秒记忆的鱼儿:@柳絮风微 目前在使用方法一,当你app上线后,应该是可以解析的
      • 柳絮风微:不行啊,运行崩溃了
        柳絮风微:@七秒记忆的鱼儿 搞错了,是我的url带中文了
        七秒记忆的鱼儿:@柳絮风微 没有吧
      • PGOne爱吃饺子:如果app在审核当中,app内部出现了版本更新字样,会被拒绝么?
        七秒记忆的鱼儿:@4140d18ee6fc 被拒的可能性会很高的
      • 佛前一粒沙:这个方法不对吧? 版本返回的应该是这个 1.0.0 如果比较的话[version floatValue] 的话就变成了1.000000 如果版本号为 1.1.1 的话,则[version floatValue] 的值就变成了 1.100000,所以比较的话肯定有坑!
        佛前一粒沙:@七秒记忆的鱼儿 我知道,我只是提醒一下你的文章写的有问题.谢谢!
        七秒记忆的鱼儿:你的版本是你自己写的,你完全可以把小数点剔除掉,再去比较啊,你也可以获取内部的版本,使用时间戳等
        Cocoaleeo:为啥要用float 比较,直接字符串比较不就行了
      • 假白开水:刚试了一下, 这个接口返回的数据都是0, 请问你现在还在用这个方法吗
        七秒记忆的鱼儿:@玫瑰花瓣的信笺 现在使用的是后台返回线上的最高的版本号和本地的来对比
        玫瑰花瓣的信笺:@七秒记忆的鱼儿 你现在的版本更新用的是什么方法?
        七秒记忆的鱼儿:现在不用了,这个要上架后才会返回数据的
      • Charles___:第二个方法会被拒绝么?
        七秒记忆的鱼儿:@CharlesJF 不会的
      • 九龙:不会被拒吗??
      • 七秒记忆的鱼儿:不会被拒啊,以前都是那样写的
      • dong_liang:那版本更新我这么做你看会被拒吗,就是服务器有个接口,我每次版本上线后,服务器会通过接口将最新的版本号返给我,我再代码获取到当前的版本号,然后通过比较这俩版本号提示跳转appstore更新

      本文标题:ios提示用户版本升级

      本文链接:https://www.haomeiwen.com/subject/lqamrttx.html