IOS 打包上线利器,AppStore中应用版本检测工具封装,2.0后更好用哟!增加了强更逻辑和不同的UI弹窗(一句话解决你的更新问题)
前言:
最近开发项目有些功能需要上线才能打开(避免审核中的无效功能,被拒),临时写了一个管理类,AppStoreManager 来监控和区分线上的几种状态(未发布、更新、未更新)。例如:第一次提交审核需要苹果商店发布后才能指定跳转到评论。每次更新都要版本比对,展示滚动引导页,更新弹窗提醒,还有一些隐性功能在审核期间不能公开等一些问题,一句话来解决麻烦。
当然也是有风险的主要是思路,思路,思路。。。。
依赖库:
AFNetworking
介绍:
其实原理很简单获取本地版本号version,然后通过 itunes 的请求地址来获取当前AppStore上的状态,获取info.plist里面的 version 来进行判断,以下是 itunes 地址。
http://itunes.apple.com/lookup?id=%@
使用方法:
- 引用头文件
#import "AppStoreManager.h"
- 使用一下方法
[[AppStoreManager defaultManager] updateVersionWithAppID:@"这里写AppStore里的ID" complete:^(AppStoreType appStoreType ) {
switch (appStoreType) {
case appStoreTypeNot:
{
}
break;
case appStoreTypeUpdata:
{
}
break;
case appStoreTypeNormal:
{
}
break;
case appStoreTypeRequestError:
{
}
break;
default:
break;
}
}];
跳转到App Store去评论显示- 无法连接到AppStore 解决方法
最近突然发现APP内给应用评分功能跳转到App Store之后提示“无法连接到App Store”,研究之后发现是iOS 11系统的适配问题,这里记录下解决方法。
if (@available(iOS 11.0, *)) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://itunes.apple.com/cn/app/idXXXXX?mt=8&action=write-review"]];
}else{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=XXXXX&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8"]];
}
== AppStoreManager 2.0 ==
- 增加了版本验证工具 (同时增加了三个版本号比较,强制更新的逻辑)
//比较版本的方法,在这里我用的是Version来比较的
+ (BOOL)compareVersionsFormAppStore:(NSString*)AppStoreVersion WithAppVersion:(NSString*)AppVersion;
//通过三个版本号来增加强更逻辑 (获取更新状态方法使用:0不提醒,1提醒更新,2强制更新)
+(NSString *)upDataTypeFormAppMaxVersion:(NSString *)maxVersion AppMinVersion:(NSString *)minVersion WithAppVersion:(NSString*)AppVersion;
- AppStoreManager 新增了自定义更新的样式,以及UI弹窗
//
// AppStoreManager.h
// emark
//
// Created by 巩小鹏 on 2018/7/30.
// Copyright © 2018年 neebel. All rights reserved.
//
#import
#import "AppStoreTool.h"
#import "UpdateView.h"
typedef NS_ENUM(NSInteger, AppStoreType){
appStoreTypeNormal = 0,//不更新
appStoreTypeNot = 1,//未上线
appStoreTypeUpdata = 2,//更新
appStoreTypeForceUpdata = 3,//强制更新
appStoreTypeRequestError = 4,//请求错误
};
@interface AppStoreManager : NSObject
+(instancetype)defaultManager;
/**
* @brief isOpenUI 是否使用默认 YES
*/
@property (nonatomic,assign) BOOL isOpenUI;
/**
* @brief appStoreUrl 跳转到appstore指定app更新的地址
*/
@property (nonatomic,copy) NSString * appStoreUrl;
/**
* @brief contentText 更新的内容 (必填)
*/
@property (nonatomic,copy) NSString * contentText;
/**
* @brief appVersion 当前版本号(可不填)
*/
@property (nonatomic,copy) NSString * appVersion;
/**
* @brief appVersion 最大版本号(必填)
*/
@property (nonatomic,copy) NSString * MaxVersion;
/**
* @brief appVersion 最小版本号(必填)
*/
@property (nonatomic,copy) NSString * MinVersion;
/**
* 初始化更新数据 (使用这个方法,以上数据可不填)
*
* @param MaxVersion 最大版本号
* @param MinVersion 最小版本号
* @param contentText 更新内容
*
* @param appStoreUrl 跳转到appstrore地址
* @param complete 返回AppStoreType状态
*
*/
-(void)initWithMaxVersion:(NSString *)MaxVersion
MinVersion:(NSString *)MinVersion
contentText:(NSString *)contentText
appStoreUrl:(NSString *)appStoreUrl
complete:(void (^)(AppStoreType appStoreType))complete;
/**
* @author Roger, 19-06-15 16:09:45
*
* @brief 网络获取appstore版本号进行比对是否更新
*
* @param appID appStoreID里创建的ID
* @param complete 返回AppStoreType状态
*/
- (void)updateVersionWithAppID:(NSString *)appID complete:(void (^)(AppStoreType appStoreType))complete;
/**
* @author Roger, 19-06-15 16:09:45
*
* @brief 版本号进行比对是否更新
*
* @param appVersion 更新版本号
* @param complete 返回AppStoreType状态
*/
- (void)updateAppVersion:(NSString *)appVersion complete:(void (^)(AppStoreType appStoreType))complete;
/**
* @author Roger, 19-06-15 16:09:45
*
* @brief 自定义更新状态.(配合 AppstoreTool 获取更新状态方法使用)
*
* @param versionType 设定的更新状态 例如:0不提醒,1提醒更新,2强制更新
* @param complete 返回AppStoreType状态
*/
- (void)updateAppVersionType:(NSString *)versionType complete:(void (^)(AppStoreType appStoreType))complete;
@end
- 强制更新的使用逻辑
//强更
// NSString * MaxVersion = @"1.0.2";
// NSString * MinVersion = @"1.0.1";
// NSString * Version = @"1.0.0";
//正常更新
// NSString * MaxVersion = @"1.0.2";
// NSString * MinVersion = @"1.0.1";
// NSString * Version = @"1.0.1";
//正常更新
NSString * MaxVersion = @"1.0.3";
NSString * MinVersion = @"1.0.1";
NSString * Version = @"1.0.2";
//强更
// NSString * MaxVersion = @"1.0.2";
// NSString * MinVersion = @"1.0.3";
// NSString * Version = @"1.0.1";
//不更新
// NSString * MaxVersion = @"1.0.2";
// NSString * MinVersion = @"1.0.2";
// NSString * Version = @"1.0.3";
[AppStoreManager defaultManager].appVersion = Version;
[[AppStoreManager defaultManager] initWithMaxVersion:MaxVersion MinVersion:MinVersion contentText:@"
1. 天气预报 -实时获取最新的天气预报,今天、后天、大后天 的天气情况,再也不怕出门没准备了。
2. 照相机 - 美颜滤镜,图片裁剪,以及自定义相册,快捷悬浮相机按钮
3. 图片编辑器 - 自定义添加贴图,文字,以及画板等功能
4. 日记 - 添加图文日记方式,可编辑图片和文字的方式写日志 ,记录生活的点点滴滴
5. 记账( 账单管理 ) - 记录每笔消费,还能以图形化的方式清晰的帮你分析消费方向
6. 节日提醒 - 记录生活中的那些特殊的日子,让准备做的更充足
7. 备忘录 - 动动手,记录下经常因为遗忘而想不起来的小东西的位置或方向,做好记忆储备。" appStoreUrl:@"http://m.baidu.com" complete:nil];
- 以下是 两种弹窗UI的样式 (增加了适配 )
-
正常的弹窗样式
-
强制更新的弹窗样式
Dome下载
(https://gitee.com/Gsohnago/AppStoreStatus.git) 码云
(https://github.com/Gongshaopeng/AppStoreStatus.git)GItHub