全部产品
Search
文档中心

移动开发平台mPaaS:使用 SDK

更新时间:Jul 12, 2023

添加 SDK 后,要将实时发布接入 iOS 客户端,还需完成以下步骤:

  1. 检测新版本:在代码中调用 SDK 接口方法检查是否有新版本可升级。

  2. 配置灰度白名单:设置更新提示、灰度等选项。

    重要

    如果移除了 UTDID 依赖会造成时间窗灰度发布无法生效。

  3. 线上发布:在 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。此升级模式适用于下线客户端旧版本、强制用户升级到新版本的场景。

相关链接

代码示例