iOS自動檢測版本更新、應(yīng)用評論功能封裝

前言

目前同時維護(hù)了三四個項(xiàng)目、每個項(xiàng)目中都有一些共同的與具體業(yè)務(wù)無關(guān)的模塊。在公司啟動iOS組件化開發(fā)新項(xiàng)目之際、逐步的開始封裝各個項(xiàng)目中與業(yè)務(wù)無關(guān)的模塊。經(jīng)過多個項(xiàng)目的上線審核與用戶校驗(yàn),不斷的進(jìn)行各個組件完善,分享出來供大家參考。

效果圖展示

分組.png

App Store功能封裝需求、業(yè)務(wù)剝離

APP應(yīng)用與App Store交互相關(guān)的功能有:

  • 檢測APP應(yīng)用最新版本、獲取應(yīng)用更新內(nèi)容、提示用戶版本更新。
  • 請求評論視圖,限制每日最多出現(xiàn)次數(shù)、限制每次出現(xiàn)概率、限制最大出現(xiàn)次數(shù)避免用戶反感。
  • 前往App Store評價應(yīng)用,給以星級評論。
  • 系統(tǒng)級APP中應(yīng)用星級評價。

APP版本更新使用簡介

  • 自動根據(jù)BundleId去App Store獲取信息、實(shí)現(xiàn)版本更新。
   //推薦方法、自動檢測APP并彈出更新視圖
   [ZWCheckVersion zw_autoCheckVersion];
  • 自動檢測更新、用戶自定義提示更新視圖。appModel中保存應(yīng)用最新的基本信息。
   //推薦方法、自動檢測APP并彈出更新視圖。
   [ZWCheckVersion zw_autoCheckVersionHandleView:^(ZWAppStoreModel *appModel) {
        //需要更新版本、自定義更新視圖
    }];
  • 根據(jù)APP應(yīng)用的iTunesId實(shí)現(xiàn)版本檢測更新
/**
 *  根據(jù)應(yīng)用itunesId版本更新
 *  appInfo:根據(jù)App Store信息自定義處理更新版本視圖。
 */
+ (void)zw_checkVersionItunesId:(NSString *)itunesId;
+ (void)zw_checkVersionItunesId:(NSString *)itunesId handleView:(BlockAppStoreInfo)appInfo;
  • 判斷是否需要更新方法
+ (BOOL)zw_shouldUpdateApp:(ZWAppStoreModel *)model;
  • 檢測更新版本對比邏輯
    • 本地版本與App Store版本位數(shù)相同、逐位對比。
    • 本地版本與App Store版本位數(shù)不同、位數(shù)補(bǔ)0后逐位對比。
/**
 *  判斷是否需要更新
 */
+ (BOOL)zw_shouldUpdateApp:(ZWAppStoreModel *)model {
    NSMutableArray *currentVersions = [NSMutableArray array];
    NSMutableArray *appStoreVersions = [NSMutableArray array];
    [currentVersions addObjectsFromArray:[APP_Version componentsSeparatedByString:@"."]];
    [appStoreVersions addObjectsFromArray:[model.version componentsSeparatedByString:@"."]];
    NSInteger difference = currentVersions.count - appStoreVersions.count;
    if (difference < 0) {
        for (NSInteger i = 0; i < labs(difference); i++) {
            [currentVersions addObject:@"0"];
        }
    }else if (difference > 0){
        for (NSInteger i = 0; i < labs(difference); i++) {
            [appStoreVersions addObject:@"0"];
        }
    }
    for (NSInteger i = 0; i < appStoreVersions.count; i++) {
        NSInteger currNum = [currentVersions[i] integerValue];
        NSInteger appStoreNum = [appStoreVersions[i] integerValue];
        if (appStoreNum > currNum) {
            return YES;
        }else if (appStoreNum < currNum) {
            return NO;
        }
    }
    return NO;
}

請求應(yīng)用評論視圖封裝

  • 自動檢測APP應(yīng)用的App Store地址、點(diǎn)擊前往對應(yīng)App Store評論頁面。
 //推薦方法、
/**
 *  請求評論視圖
 *  視圖出現(xiàn)邏輯:限制每日最多出現(xiàn)次數(shù)、限制每次出現(xiàn)概率
 *  限制最大出現(xiàn)次數(shù)避免用戶反感。
 */
    [[ZWActionReview instanceReview] zw_actionRequestReview];
  • 根據(jù)APP應(yīng)用的iTunesId請求評論視圖
/**
 *  請求應(yīng)用評論彈窗
 *  自定義iTunesId
 */
- (void)zw_actionRequestReview:(NSString *)itunesId;
  • 直接跳轉(zhuǎn)到應(yīng)用App Store評論頁面
/**
 *  前往當(dāng)前應(yīng)用的App Store評論界面
 */
- (void)zw_skipToAppStoreReview;
  • 前往指定itunesId應(yīng)用的App Store評論界面
/**
 *  前往指定itunesId應(yīng)用的App Store評論界面
 */
- (void)zw_skipToAppStoreReview:(NSString *)itunesId;
  • 評論視圖邏輯控制
/**
 *  請求評論視圖、每次出現(xiàn)的概率(0~1)
 *  默認(rèn):0.1
 */
@property (nonatomic, assign) CGFloat probabilityDaliy;
/**
 *  請求評論視圖、每日最多出現(xiàn)的次數(shù)
 *  默認(rèn):每天最多出現(xiàn)一次
 */
@property (nonatomic, assign) NSInteger maxNumDaliy;
/**
 *  請求評論視圖、一共允許出現(xiàn)的次數(shù)
 *  默認(rèn):一共允許出現(xiàn)最多5次、避免引起用戶反感
 */
@property (nonatomic, assign) NSInteger maxTotalNum;

如何使用封裝SDK

強(qiáng)烈建議您使用pod導(dǎo)入,節(jié)省導(dǎo)入依賴的時間。

  • 使用cocoaPods導(dǎo)入(搜索不到請更新本地倉庫)
pod 'ZWAppStore'
  • 直接將文件夾ZWAppStore拖入工程中
#import "ZWAppStore.h"

源碼

源碼放在GitHub上,歡迎指正,記得star哦!

【V0.0.5】版本更新記錄
  • 【修改】: 修改版本對比邏輯、適應(yīng)版本號位數(shù)不一致導(dǎo)致檢測更新失敗問題。
【V0.0.2】版本更新記錄
  • 【修改】: 應(yīng)用檢測更新視圖圖片偏移bug。
【V0.0.1】版本更新記錄
  • 【新增】: 封裝APP應(yīng)用與App Store交互相關(guān)邏輯。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,030評論 25 709
  • 看不到 誰又能說我愛不存在 你不愛 我獨(dú)自一人黑白橋段 電影院里人滿為患 所有大片我看不堪 選擇默片不要奇怪 有午...
    Mr橘子閱讀 334評論 0 3
  • 千年承古碩,積富惹強(qiáng)侵。 一蹶百歲苦,子孫浴血勤。 逐夢方起航,洗辱戰(zhàn)狼新。 家國今已盛,環(huán)伺何敢臨。
    村客閱讀 179評論 2 17

友情鏈接更多精彩內(nèi)容