蒲公英App开发之检测新版本
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开发之检测新版本相关推荐
- 视力检测app开发一键生成
视力检测app开发,视力检测app开发一键生成.电子设备的相继问世促使大家可以在网络上获得各种资讯,殊不知针对正处于发展期的青少年儿童来讲,却有一些不好,终究有误的看手机姿态有可能会对视力导致不良影响 ...
- 基于yolov5的Android版本目标检测app开发(部署安卓手机)
基于yolov5的Android版本目标检测app开发(部署安卓手机) 0.项目开发需求 (1)开发app部署到安卓手机 (2)支持VOC数据集上所有的目标检测 1.开发环境搭建 windows10+ ...
- ai皮肤检测分数_AI皮肤检测App开发提供更好的护肤
颜值即正义,长得好看也是一种优势.AI皮肤检测App开发在这个看来你的时代,给用户带阿里不一样的皮肤护理的体验.能够为用户带来智能的皮肤检测,帮助用户更好的爱护他的脸蛋,保养好欧服. AI皮肤检测Ap ...
- ai皮肤检测分数_AI皮肤检测App开发如何识别的你的皮肤问题
AI皮肤检测App开发能够为用户对自己的皮肤的监测提供数据的支持,通过App对用户的脸部皮肤进行拍照取样,然后根据人工智能的识别.监测用户的皮肤,生成结果.这一系列的操作,都是通过AI皮肤检测App功 ...
- 云如何让App开发更简单?
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 互联网"下半场",移动App开发对于质量.速度的要求更加苛刻.4月初,腾讯云正式上线移动开发平台MobileLine,借 ...
- 收集各种 iOS App 开发可以用到的代码示例
code4app.com 这网站不错,收集各种 iOS App 开发可以用到的代码示例 cocoacontrols.com/ 英文版本的lib收集 objclibs.com/ 精品lib的收集网站 ...
- Android App 开发技术图谱
Android App 开发技术图谱 转载请注明出处:www.leoyanblog.com 本文出自 LeoYan 的博客 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 LeoYa ...
- 移动APP开发中8大安全问题
每天都有大量的APP发布,并且大部分APP都涉及到重要的用户信息.这些APP容易遭到***的***,***通过钓鱼软件或植入恶意软件获取用户的信息.为了确保用户使用您的APP具有良好的体验,而不受其他 ...
- 移动APP漏洞自动化检测平台建设
前言:本文是<移动APP客户端安全笔记>系列原创文章中的第一篇,主要讲的是企业移动APP自动化漏洞检测平台建设,移动APP漏洞检测发展史与前沿技术,APP漏洞检测工具与平台,以及笔者的一些 ...
最新文章
- js实现双击后网页自己主动跑-------Day55
- linux进程控制程序设计论文,嵌入式,linux进程控制程序设计
- php strtotime 和 date 日期操作
- org-mode入门教程
- LaTeX的表格标题位置
- 不吹牛逼,撸个注解有什么难的
- Pytorch 其它有关Tensor的话题,GPU,向量化
- mac系统不能使用127.0.0.2的解决方案
- 微信小程序云开发教程-WXML入门-基本语法
- 从技术雷达看持续交付
- 一个接口文档模板的API设计流程
- php 上传微信媒体,关于微信公众号API多媒体上传
- WanderAndLogData
- Consider defining a bean of type ‘com.xingchen.media.service.MediaFileService‘ in your configuration
- Centos6.4忘记密码 单机下修改root密码
- 内联函数let、also、with、run、apply的用法
- 随机地图生成--自己的一次尝试
- [RK3288][Android6.0] 调试笔记 --- WiFi芯片AP6356S添加
- GeoServer 图层访问控制身份验证
- PacBio下机数据解读
热门文章
- http中各个状态码的含义
- GWAS相关名词解释及基础知识储备[长期更新]
- Qt OpenGL 旋转、平移、缩放
- Internet——Download——Manager学习记录
- Word中如何把同一级编号一次性上升或下降一级或任意级,做到随意调整编号层级?
- Netgear WNDR3800 用 LAN口 替换 WAN口
- 开机显示Reboot and select proper boot device or insert boot media in selected
- ArcGIS快速分别导出大量范围线的坐标到报盘Excel格式
- LM5161QPWPTQ1
- 解决导出Excel后0丢失的问题