添加 SDK 后,要將實時發布接入 iOS 客戶端,還需完成以下步驟:
檢測新版本:在代碼中調用 SDK 接口方法檢查是否有新版本可升級。
配置灰度白名單:設置更新提示、灰度等選項。
重要如果移除了 UTDID 依賴會造成時間窗灰度發布無法生效。
線上發布:在 mPaaS 控制臺生成 ipa 文件,并發布新版本。
操作步驟
檢測新版本
升級檢測 SDK 提供檢查應用是否更新的接口文件,方法頭文件在 AliUpgradeCheckService.framework > Headers > MPCheckUpgradeInterface.h
文件中。
typedef NS_ENUM(NSUInteger, AliUpdateType) {
AliUpgradeNewVersion = 201, /*當前使用的已是最新版本*/
AliUpgradeOneTime, /*客戶端已有新版本,單次提醒*/
AliUpgradeForceUpdate, /*客戶端已有新版本,強制升級(已廢棄)*/
AliUpgradeEveryTime, /*客戶端已有新版本,多次提醒*/
AliUpgradeRejectLogin, /*限制登錄(已廢棄)*/
AliUpgradeForceUpdateWithLogin /*客戶端已有新版本,強制升級*/
};
/**
自定義 UI 時調用檢測升級的成功回調
@param upgradeInfos 升級信息
@{upgradeType:202,
downloadURL:@"itunes://downLoader.xxxcom/xxx",
message:@"新版本更新,請升級",
upgradeShortVersion:@"9.9.0",
upgradeFullVersion:@"9.9.0.0000001"
needClientNetType:@"4G,WIFI",
userId:@"admin"
}
*/
typedef void(^AliCheckUpgradeComplete)(NSDictionary *upgradeInfos);
typedef void(^AliCheckUpgradeFailure)(NSException *exception);
@interface MPCheckUpgradeInterface : NSObject
/**
單次提醒時的時間間隔,單位為天,默認為 3
*/
@property(nonatomic, assign) NSTimeInterval defaultUpdateInterval;
/**
修改默認彈框提示 UI 的代理
*/
@property (nonatomic, weak) id<AliUpgradeViewDelegate> viewDelegate;
/**
* 初始化實例
*/
+ (instancetype)sharedService;
/**
主動檢查是否有更新,若有更新,使用 mPaaS 默認提示 UI 自動彈框顯示
*
*/
- (void)checkNewVersion;
/**
主動檢查是否有更新。不會自動彈框提示,一般用于自定義 UI、檢查是否有更新、提醒紅點等情況
@param complete 成功回調,返回升級信息字典
@param failure 失敗回調
*/
- (void)checkUpgradeWith:(AliCheckUpgradeComplete)complete
failure:(AliCheckUpgradeFailure)failure;
@end
開發者可在應用啟動完成后調用相應接口檢查應用是否更新,建議在首頁出現后調用,以免影響 App 啟動速度。根據展示升級提示信息的 UI 需求不同,提供以下三種調用方式:
使用 mPaaS 默認彈框展示升級提示信息:
- (void)checkUpgradeDefault { [[MPCheckUpgradeInterface sharedService] checkNewVersion]; }
在 mPaaS 默認彈框 UI 的基礎上,自定義彈框圖片、網絡提示 toast 或網絡請求組進度條等內容:
- (void)checkUpgradeWithHeaderImage { MPCheckUpgradeInterface *upgradeInterface = [MPCheckUpgradeInterface sharedService]; upgradeInterface.viewDelegate = self; [upgradeInterface checkNewVersion]; } - (UIImage *)upgradeImageViewHeader{ return APCommonUILoadImage(@"ilustration_ap_expection_alert"); } - (void)showToastViewWith:(NSString *)message duration:(NSTimeInterval)timeInterval { [self showAlert:message]; } - (void)showAlert:(NSString*)message { AUNoticeDialog* alertView = [[AUNoticeDialog alloc] initWithTitle:@"Information" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alertView show]; }
若 mPaaS 提供的彈框樣式不滿足您的需求,可調用以下接口獲取升級信息,自定義 UI 進行展示:
- (void)checkUpgradeWIthCustomUI { [[MPCheckUpgradeInterface sharedService] checkUpgradeWith:^(NSDictionary *upgradeInfos) { [self showAlert:[upgradeInfos JSONString]]; } failure:^(NSException *exception) { }]; }
配置灰度白名單
要使用發布管理中的白名單灰度功能,確保服務端已獲取客戶端的唯一標識??蛻舳诵枰?MPaaSInterface 的 category 中配置用戶唯一標識,根據應用實際情況,在 userId
方法中返回 App 的唯一標識,例如用戶名、手機號、郵箱等。
@implementation MPaaSInterface (Portal)
- (NSString *)userId
{
return @"mPaaS";
}
@end
mPaaS 控制臺配置白名單的具體步驟,請查看 實時發布 > 白名單管理。
線上發布
生成 ipa 文件
您可直接使用 Xcode 生成一個 ipa 安裝包:
您也可以使用 mPaaS 插件提供的打包功能,生成 ipa 安裝包,此包會放在當前工程的
product
目錄下。Bundle Identifier:必須與云端配置文件中的
bundle Id
保持一致。Bundle Version:必須與工程
info.plist
中的Production Version
保持一致。Provisioning Profile:簽名配置文件,必須與
bundle Id
匹配,否則會打包失敗。Debug:是否生成 debug 安裝包。
App Store:是否生成 App Store 發布包。
發布新版本
使用發布平臺的發布管理功能,發布新版本。具體流程請參考 發布管理。
升級模式:
在 mPaaS 控制臺創建發布任務時,可選擇升級模式,主要分為三種:
單次提醒:當 mPaaS 控制臺發布新版后,客戶端調用一次版本升級接口,在靜默周期內只彈框一次,以避免打擾用戶。
此升級模式適用于新版本剛上線引導用戶升級的場景。
默認的靜默期為 3 天,即 3 天內只能提醒用戶一次;若需修改此靜默值,可在調用升級檢測接口前設置以下屬性:
- (void)checkUpgradeDefault { [MPCheckUpgradeInterface sharedService].defaultUpdateInterval = 7; [[MPCheckUpgradeInterface sharedService] checkNewVersion]; }
多次提醒:當 mPaaS 控制臺發布新版后,客戶端調用一次版本升級接口,就彈框一次。此升級模式適用于新版本上線一段時間后,盡快引導用戶升級到新版的場景。
強制提醒:當 mPaaS 控制臺發布新版后,客戶端調用一次版本升級接口,就彈框一次,且無取消按鈕,即不升級則不可使用 App。此升級模式適用于下線客戶端舊版本、強制用戶升級到新版本的場景。