https://www.jianshu.com/p/2d3f048511d7

2017.04.17 16:22* 字数 62 阅读 422评论 0喜欢 1

可以在App内部实现检测版本更新并实现安装。

核心代码

#define API_PGYER_UPDATE_URL                                                    @"https://www.pgyer.com/apiv1/app/builds"

#define PGY_API_KEY                                                             @""

#define PGY_APP_ID                                                              @""

- (void)checkForUpdates {

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

NSDictionary *parameters = @{@"aId":PGY_APP_ID,@"page":@1,@"_api_key":PGY_API_KEY};

NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:API_PGYER_UPDATE_URL parameters:parameters error:nil];

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];

AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];

MJWeakSelf

NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {

if (error) {

NSLog(@"Error: %@", error);

return;

}

NSLog(@"%@ %@", response, responseObject);

if (responseObject && [responseObject isKindOfClass:[NSDictionary class]]) {

NSDictionary *responseDictionary = (NSDictionary *)responseObject;

if (responseDictionary && [responseDictionary objectForKey:@"data"]) {

NSDictionary *data = [responseDictionary objectForKey:@"data"];

if (!data || data.count == 0) {

return;

}

NSArray *array = [data objectForKey:@"list"];

if (array) {

BFLarkAppDeatilModel *appDeatil = [BFLarkAppDeatilModel mj_objectArrayWithKeyValuesArray:array].firstObject;

if (appDeatil) {

// 有新版本

if (appDeatil.appVersionNo.integerValue > [[[UIApplication sharedApplication] appBuildVersion] integerValue]) {

dispatch_async(dispatch_get_main_queue(), ^{

[BFAlertView showAlertInViewController:weakSelf.view withTitle:[NSString stringWithFormat:@"Current BuildVersion %@, New BuildVersion %@",[[UIApplication sharedApplication] appBuildVersion],appDeatil.appVersionNo] message:@"旧版就像初恋,很美但再也回不去,快去收获新欢" cancelButtonTitle:@"取消" destructiveButtonTitle:@"残忍拒绝" otherButtonTitles:@[@"欣然前往"] tapBlock:^(RMUniversalAlert * _Nonnull alert, NSInteger buttonIndex) {

// 去更新

if (buttonIndex == 2) {

NSString *urlString = [NSString stringWithFormat:@"itms-services://?action=download-manifest&url=https://www.pgyer.com/app/plist/%@",appDeatil.appKey];

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];

}

}];

});

}

// 当前是最新版本

else {

dispatch_async(dispatch_get_main_queue(), ^{

// 更新界面

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"您的版本是最新的" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];

[alertView show];

});

}

}

}

}

}

}];

[dataTask resume];

});

}

BFLarkAppDeatilModel

#import <Foundation/Foundation.h>

@interface BFLarkAppDeatilModel : NSObject

@property (nonatomic, copy) NSString *appKey;

@property (nonatomic, copy) NSString *appVersion;

@property (nonatomic, copy) NSString *appBuildVersion;

@property (nonatomic, copy) NSString *appName;

@property (nonatomic, copy) NSString *appIcon;

@property (nonatomic, copy) NSString *appCreated;

@property (nonatomic, copy) NSString *appFileSize;

@property (nonatomic, copy) NSString *appIdentifier;

@property (nonatomic, copy) NSString *appType;

@property (nonatomic, copy) NSString *appVersionNo;

@end

API详解

获取App所有版本

API地址

POST http://www.pgyer.com/apiv1/app/builds

POST参数

参数

类型

说明

aId

String

App Id

page

Integer

历史版本分页页数

_api_key

String

API Key

返回数据

返回参数

类型

说明

appKey

String

返回应用最新build的App Key

appType

Integer

应用类型(1:iOS; 2:Android

appFileSize

Integer

App 文件大小

appName

String

应用名称

appVersion

String

版本号

appVersionNo

Integer

适用于Android的版本编号,iOS始终为0

appBuildVersion

Integer

蒲公英生成的用于区分历史版本的build号

appIdentifier

String

应用程序包名,iOS为BundleId,Android为包名

appIcon

String

应用的Icon图标key,访问地址为 http://o1wh05aeh.qnssl.com/image/view/app_icons/[应用的Icon图标key]

appCreated

String

应用上传时间

参考文档

蒲公英API

转载于:https://www.cnblogs.com/sundaysgarden/p/10318563.html

蒲公英App开发之检测新版本相关推荐

  1. 视力检测app开发一键生成

    视力检测app开发,视力检测app开发一键生成.电子设备的相继问世促使大家可以在网络上获得各种资讯,殊不知针对正处于发展期的青少年儿童来讲,却有一些不好,终究有误的看手机姿态有可能会对视力导致不良影响 ...

  2. 基于yolov5的Android版本目标检测app开发(部署安卓手机)

    基于yolov5的Android版本目标检测app开发(部署安卓手机) 0.项目开发需求 (1)开发app部署到安卓手机 (2)支持VOC数据集上所有的目标检测 1.开发环境搭建 windows10+ ...

  3. ai皮肤检测分数_AI皮肤检测App开发提供更好的护肤

    颜值即正义,长得好看也是一种优势.AI皮肤检测App开发在这个看来你的时代,给用户带阿里不一样的皮肤护理的体验.能够为用户带来智能的皮肤检测,帮助用户更好的爱护他的脸蛋,保养好欧服. AI皮肤检测Ap ...

  4. ai皮肤检测分数_AI皮肤检测App开发如何识别的你的皮肤问题

    AI皮肤检测App开发能够为用户对自己的皮肤的监测提供数据的支持,通过App对用户的脸部皮肤进行拍照取样,然后根据人工智能的识别.监测用户的皮肤,生成结果.这一系列的操作,都是通过AI皮肤检测App功 ...

  5. 云如何让App开发更简单?

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 互联网"下半场",移动App开发对于质量.速度的要求更加苛刻.4月初,腾讯云正式上线移动开发平台MobileLine,借 ...

  6. 收集各种 iOS App 开发可以用到的代码示例

    code4app.com 这网站不错,收集各种 iOS App 开发可以用到的代码示例  cocoacontrols.com/ 英文版本的lib收集  objclibs.com/ 精品lib的收集网站 ...

  7. Android App 开发技术图谱

    Android App 开发技术图谱 转载请注明出处:www.leoyanblog.com 本文出自 LeoYan 的博客 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 LeoYa ...

  8. 移动APP开发中8大安全问题

    每天都有大量的APP发布,并且大部分APP都涉及到重要的用户信息.这些APP容易遭到***的***,***通过钓鱼软件或植入恶意软件获取用户的信息.为了确保用户使用您的APP具有良好的体验,而不受其他 ...

  9. 移动APP漏洞自动化检测平台建设

    前言:本文是<移动APP客户端安全笔记>系列原创文章中的第一篇,主要讲的是企业移动APP自动化漏洞检测平台建设,移动APP漏洞检测发展史与前沿技术,APP漏洞检测工具与平台,以及笔者的一些 ...

最新文章

  1. js实现双击后网页自己主动跑-------Day55
  2. linux进程控制程序设计论文,嵌入式,linux进程控制程序设计
  3. php strtotime 和 date 日期操作
  4. org-mode入门教程
  5. LaTeX的表格标题位置
  6. 不吹牛逼,撸个注解有什么难的
  7. Pytorch 其它有关Tensor的话题,GPU,向量化
  8. mac系统不能使用127.0.0.2的解决方案
  9. 微信小程序云开发教程-WXML入门-基本语法
  10. 从技术雷达看持续交付
  11. 一个接口文档模板的API设计流程
  12. php 上传微信媒体,关于微信公众号API多媒体上传
  13. WanderAndLogData
  14. Consider defining a bean of type ‘com.xingchen.media.service.MediaFileService‘ in your configuration
  15. Centos6.4忘记密码 单机下修改root密码
  16. 内联函数let、also、with、run、apply的用法
  17. 随机地图生成--自己的一次尝试
  18. [RK3288][Android6.0] 调试笔记 --- WiFi芯片AP6356S添加
  19. GeoServer 图层访问控制身份验证
  20. PacBio下机数据解读

热门文章

  1. http中各个状态码的含义
  2. GWAS相关名词解释及基础知识储备[长期更新]
  3. Qt OpenGL 旋转、平移、缩放
  4. Internet——Download——Manager学习记录
  5. Word中如何把同一级编号一次性上升或下降一级或任意级,做到随意调整编号层级?
  6. Netgear WNDR3800 用 LAN口 替换 WAN口
  7. 开机显示Reboot and select proper boot device or insert boot media in selected
  8. ArcGIS快速分别导出大量范围线的坐标到报盘Excel格式
  9. LM5161QPWPTQ1
  10. 解决导出Excel后0丢失的问题