# AppStoreStatus **Repository Path**: conquestYour/AppStoreStatus ## Basic Information - **Project Name**: AppStoreStatus - **Description**: 最近开发项目有些功能需要上线才能打开(避免审核中的无效功能,被拒),临时写了一个管理类,AppStoreManager 来监控和区分线上的几种状态(未发布、更新、未更新),一句话来解决麻烦。 - **Primary Language**: Objective-C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-06-11 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AppStoreStatus #### 项目介绍 最近开发项目有些功能需要上线才能打开(避免审核中的无效功能,被拒),临时写了一个管理类,AppStoreManager 来监控和区分线上的几种状态(未发布、更新、未更新),一句话来解决麻烦。 其实原理很简单获取本地版本号version,然后通过 itunes 的请求地址来获取当前AppStore上的状态,获取info.plist里面的 version 来进行判断,以下是 itunes 地址。 http://itunes.apple.com/lookup?id=%@ #### 依赖库: AFNetworking #### 使用说明 + 引用头文件 ``` #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. 正常的弹窗样式 ![1561630269351.jpg](https://upload-images.jianshu.io/upload_images/6884657-88650c4452c18ae8.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 2. 强制更新的弹窗样式 ![1561630225369.jpg](https://upload-images.jianshu.io/upload_images/6884657-873218421d6c5221.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) #####Dome下载 (https://gitee.com/Gsohnago/AppStoreStatus.git)-码云 (https://github.com/Gongshaopeng/AppStoreStatus.git)-GItHub