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 
#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的样式 (增加了适配 )
  1. 正常的弹窗样式


    IOS 打包上线利器,AppStore中App版本检测工具封装,2.0后更好用哟!增加了强更逻辑和不同的UI弹窗(一句话解决你的更新问题)_第1张图片
    1561630269351.jpg
  2. 强制更新的弹窗样式


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

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

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