IOS 打包上线利器,AppStore中App版本检测工具封装,2.0后更好用哟!增加了强更逻辑和不同的UI弹窗(一句话解决你的更新问题)

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 <Foundation/Foundation.h>
#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:@"<br>1. 天气预报  -实时获取最新的天气预报,今天、后天、大后天 的天气情况,再也不怕出门没准备了。</br><br>2. 照相机 - 美颜滤镜,图片裁剪,以及自定义相册,快捷悬浮相机按钮 </br><br> 3. 图片编辑器 - 自定义添加贴图,文字,以及画板等功能</br><br>4. 日记 - 添加图文日记方式,可编辑图片和文字的方式写日志 ,记录生活的点点滴滴</br><br>5. 记账( 账单管理 ) - 记录每笔消费,还能以图形化的方式清晰的帮你分析消费方向</br><br>6. 节日提醒 - 记录生活中的那些特殊的日子,让准备做的更充足</br><br>7. 备忘录 - 动动手,记录下经常因为遗忘而想不起来的小东西的位置或方向,做好记忆储备。</br>" appStoreUrl:@"http://m.baidu.com" complete:nil];
    
  • 以下是 两种弹窗UI的样式 (增加了适配 )
  1. 正常的弹窗样式


    1561630269351.jpg
  2. 强制更新的弹窗样式


    1561630225369.jpg
Dome下载

(https://gitee.com/Gsohnago/AppStoreStatus.git) 码云
https://github.com/Gongshaopeng/AppStoreStatus.git)GItHub

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明先生_X自主阅读 15,980评论 3 119
  • 最近在接入各种支付机构,鉴于各种产品业务需求不同,具体开发实现不尽相同,不讨论具体业务实现。银联官方商家技术服务网...
    李不言被占用了阅读 6,450评论 8 13
  • 生病了,在候诊期间来到医院里的鉴真花园闲逛,天空是阴沉的。 这一刻,忽觉得自己一下子静了下来。人有时候就是,不到无...
    三石载润阅读 395评论 0 0
  • 大概已经过了很多天了吧 又听见他和她的声音 像在耳边 几乎听得见他们的呼吸 是刺耳的声音 我确定我能保持笑容 像以...
    觞呃阅读 128评论 0 0
  • 简悦直播教练恬源阅读 200评论 3 2