app版本自动更新-iOS忙里偷闲整理系列

原理啊,其实很简单,就是比较app的当前版本号和服务器上的版本号是否一样,不一样就提示更新。

iOS程序自动提示更新的实现方案大致分为两种:
第一种,自己服务器提供一个接口,告知相关app的当前版本,是否需要更新,以及更新的地址等信息 。
第二种,就是利用苹果的appStore 提供的相关api进行查询更新。

代码如下:

#define APPUrl @"http://itunes.apple.com/lookup?id=你应用ID 在itunes上的"

// 检查是否更新
-(void) onCheckVersion
{
   //  1.获取当前版本号
    NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];
    //CFShow((__bridge CFTypeRef)(infoDic));
    NSString *currentVersion = [infoDic objectForKey:@"CFBundleVersion"];

    NSString *URL = APPUrl;
    // 2.发请求 给苹果的api 获取app的info
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:[NSURL URLWithString:URL]];
    [request setHTTPMethod:@"POST"];
    NSHTTPURLResponse *urlResponse = nil;
    NSError *error = nil;
    NSData *recervedData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
    NSDictionary *appInofDic=[NSJSONSerialization JSONObjectWithData:recervedData options:NSJSONReadingMutableLeaves error:&error];
    if (error) {
        NSLog(@"error:%@",[error description]);
    }
    NSArray *resultArray=[appInofDic objectForKey:@"results"];
    if (![resultArray count]) {
        NSLog(@"error:results==nil");
    }

    if ([resultArray count]>0)
    {
        NSDictionary *infoDics=[resultArray objectAtIndex:0];     // 获取appstore最新的版本号
        NSString *latestVersion=[infoDics objectForKey:@"version"];     // 获取应用程序的地址 
        _trackViewUrl=[infoDics objectForKey:@"trackViewUrl"];
        NSString *trackName=[infoDics objectForKey:@"trackName"];

        double doubleCurrentVersion=[currentVersion doubleValue];
        double doubleUpdateVersion=[latestVersion doubleValue];
        if (doubleCurrentVersion<doubleUpdateVersion) {
            NSString *titleStr=[NSString stringWithFormat:@"检查更新:%@",trackName];
            NSString *messageStr=[NSString stringWithFormat:@"发现新版本(%@),是否升级?",latestVersion];
            UIAlertView *alertView=[[UIAlertView alloc]initWithTitle:titleStr message:messageStr
                                                            delegate:self
                                                   cancelButtonTitle:@"取消"
                                                   otherButtonTitles:@"升级", nil];
            alertView.tag=1;
            [alertView show];

        }else{
            NSString *titleStr=[NSString stringWithFormat:@"检查更新:%@",trackName];

            UIAlertView *alertviews=[[UIAlertView alloc]initWithTitle:titleStr message:@"暂无新版本"
                                                             delegate:self
                                                    cancelButtonTitle:@"OK"
                                                    otherButtonTitles:nil, nil];
            alertviews.tag=2;
            [alertviews show];
        }
    }else
    {
        UIAlertView *alertviews=[[UIAlertView alloc]initWithTitle:@"通知"message:@"暂无新版本"
                                                         delegate:self
                                                cancelButtonTitle:@"OK"
                                                otherButtonTitles:nil, nil];
        alertviews.tag=3;
        [alertviews show];

    }
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex==1) {
        [SaveUserInfo saveUserInfo:nil];
        [self.tableView reloadData];
    }
    if (alertView.tag==1) {
        if (buttonIndex==1) {
            //如果有新的版本,那么就跳转AppStore
            [ [UIApplication sharedApplication]openURL:[NSURL URLWithString:_trackViewUrl]];
        }
    }

}

  注意 :

1.应用ID  在这里获取(上架app的地方)

2.容易搞混淆的

info.plist文件里的“Bundle version”字段,供程序调试用,即内部调试版本号,不是显示在appstore上面的,version 对应info.plist文件里的“Bundle versions string, short”字段,这才是真正的版本号,显示在appstore上的。

				
时间: 2024-10-20 18:50:57

app版本自动更新-iOS忙里偷闲整理系列的相关文章

Android实现App版本自动更新

现在很多的App中都会有一个检查版本的功能.例如斗鱼TV App的设置界面下: 当我们点击检查更新的时候,就会向服务器发起版本检测的请求.一般的处理方式是:服务器返回的App版本与当前手机安装的版本号进行对比. (1)如果服务器所返回的版本号大于当前App版本号那么此时手机所安装的App不是最新版.可以提示用户升级. (2)如果不大于当前版本号,可以提示用户为最新版本: 版本升级,也分为两种处理方式: (1)跳转到App某市场(例如:360手机助手),然后根据包名在市场定位到该App,通过市场下

iOS 版本自动更新

AppDelegate.h - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    [self  editionUpdate]; } //版本自动更新 -(void)editionUpdate{    NSString * [email protected]"192.168.......";//获取后台的接口    

iOS中如何知道app版本已更新

主要用于程序升级,开启程序后是否显示新特性两个方面. 1.苹果app版本 苹果规定,程序的版本只能升不能降.例如1.0->1.1可以,1.1->1.0就不可以,不允许上架. 2.app版本存放位置 版本信息存放在Info.plist文件中,在工程的General栏中也可以看到.当app更新后,这里的版本信息会自动修改,因此获取Info.plist中的版本信息即为最新的版本.如果想人为的修改它们在两处的任意一处均可.  3.代码实现(Swift) 程序中将上次的版本保存入沙盒,然后和最新的做比较

iOS开发之一句代码检测APP版本的更新-Swift版本

//新建一个NSObject类,将以下代码拷贝到此类中. // // HKCheckVersionManager.swift // ProjectManager // // Created by isHakan on 2017/12/29. // Copyright ? 2017年 liuhuakun. All rights reserved. // import UIKit class HKCheckVersionManager: NSObject { /// app版本更新检测 /// //

winform版本自动更新

我们在使用软件的时候经常会遇到升级版本,这也是Winform程序的一个功能,今天就大概说下我是怎么实现的吧(代码有点不完美有小BUG,后面再说) 先说下我的思路:首先在打开程序的时候去拿到我之前在网站上写好的xml里边的版本号,判断是否要更新,之后要更新的话就调用更新的exe(ps:这个是单独出来的,因为更新肯定要覆盖当前的文件,文件运行的时候不能被覆盖),然后下载最新的压缩包到本地,调用7z解压覆盖即可 思路明确了之后就开始写代码(所以说思路很重要啊!!!): <?xml version=&quo

微信小程序版本自动更新弹窗提示

代码如下: onLaunch () { if (wx.canIUse('getUpdateManager')) { const updateManager = wx.getUpdateManager() updateManager.onCheckForUpdate(function (res) { if (res.hasUpdate) { updateManager.onUpdateReady(function () { wx.showModal({ title: '更新提示', content

QML 从无到有 3 (自动更新)

新的需求出来啦,需要自动更新功能,不怕程序升级了. 自动更新,QML不好写,需要c++来辅助,这里就涉及QML中调用c++功能(这里就不写了,百度一下,很多). 思路:获取版本>下载程序>安装程序 第一步,获取版本信息,可以通过XMLHttpRequest获取最新版本. 第二步,下载程序,通过Qt c++的QtNetwork: 头文件: 1 #ifndef ZRDOWNLOAD_H 2 #define ZRDOWNLOAD_H 3 4 #include <QObject> 5 #i

【原创】我所理解的自动更新-APP发布与后台发布

发布后台 创建渠道:添加新的渠道,设置渠道名称,自动生成渠道id.    查看渠道:查看渠道基本信息,渠道app版本号,资源版本号,是否开启更新.    创建/更新APP:选择打包ios,android版本,设置渠道所属,设置版本日志,发送消息到APP Publish并等待反馈.    创建/更新资源:设置渠道所属,设置版本日志,发送消息到ResPackageTool并等待反馈. APP打包发布 从VersionServer里获取相应渠道的代码,保存到目录[channel-渠道号-版本号]. 

H5+ app自动更新思路

第一种是一次自动更新 1.在服务器需要一个json或html文件,json最好 1 { 2 "state":"yes",//是否自动更新 3 "mark":"1.0.6",//版本号 4 "url":"http:\/\/xx\/appproject\/mm.apk"//更新的应用下载地址 5 } 2.自动更新函数 t是你当前正在运行的app的版本号 //检查自动更新 function s