添加 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。此升级模式适用于下线客户端旧版本、强制用户升级到新版本的场景。