全部產品
Search
文件中心

Mobile Platform as a Service:接入 iOS

更新時間:Jun 16, 2026

H5 小遊戲目前支援 基於 mPaaS 架構接入基於已有工程且使用 mPaaS 外掛程式接入 和 基於已有工程且使用 CocoaPods 接入 三種接入方式。本文介紹了採用上述方式接入 H5 小遊戲和使用 H5 小遊戲的過程。

前置條件

添加 SDK

H5 小遊戲目前已在定製基準 cp_change_56100909 版本中提供支援。根據您採用的接入方式,請選擇相應的添加方式。

  • 使用 mPaaS Xcode Extension

    此方式適用於採用了 基於 mPaaS 架構接入基於已有工程且使用 mPaaS 外掛程式接入 的接入方式。

    1. 單擊 Xcode 功能表項目 Editor > mPaaS > 編輯工程,開啟編輯工程頁面。

    2. 選擇 Ariver 小程式,儲存後單擊 開始編輯,即可完成添加。

  • 使用 cocoapods-mPaaS 外掛程式

    此方式適用於採用了 基於已有工程且使用 CocoaPods 接入 的接入方式。

    1. 在 Podfile 檔案中,指定基準號為 cp_change_56100909,並使用 mPaaS_pod "mPaaS_Ariver" 添加 H5小遊戲組件依賴。

    2. 執行 pod mpaas update cp_change_56100909 命令更新基準。

    3. 在命令列中執行 pod install 即可完成接入。

初始化配置

初始化 mPaaS 架構

如果 App 的生命週期並沒有交給 mPaaS 架構託管,而是指定為您自己定義的 delegate(如下圖所示),那麼還需手動初始化 mPaaS 架構。

說明

mPaaS 架構託管是指 App 的 delegate 設定為 DFClientDelegate,此時無需手動初始化 mPaaS 架構。

image.png

  1. 在應用的 windownavigationController 建立完成後,調用以下方法初始化 mPaaS 架構。

    image.png

  2. DTFrameworkInterfacecategory 中重寫 shouldInheritDFNavigationController 方法並返回 NO,支援導覽列控制器可不繼承 DFNavigationController

    image.png

  3. 若 App 有多個導覽列,且需要在不同導覽列中開啟不同小遊戲,在切換導覽列後需重新設定容器的導覽列。

    image.png

初始化容器

為了正確啟動小遊戲,需要在 App 啟動完成後調用 SDK 介面,對容器進行初始化。必須在 DTFrameworkInterface- (void)application:(UIApplication *)application beforeDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中進行初始化。

- (void)application:(UIApplication *)application beforeDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // 初始化容器
    [MPNebulaAdapterInterface initNebula];
}

注意事項

cp_change_56100909 基準中如果使用 mPaaS 架構的託管模式和隱私彈框的情況下,設定了開關配置代理 [MPNebulaAdapterInterface shareInstance].configDelegate = self;,則需要同時在以下兩個方法中進行設定開關代理;如果沒有使用到開關代理,請忽略。

image.png

image.png

遊戲配置和啟動

帳號授權

初始化配置中添加如下內容:

#import <AriverMPNebulaAdapter/MPNebulaGameInterface.h>

- (void)application:(UIApplication *)application beforeDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{

    //初始化容器
    [MPNebulaAdapterInterface initNebula];
     //開啟     
    [MPNebulaGameInterface shareInstance].shouldSupportGameJsBridge = YES;
     //設定回調代理
    [MPNebulaGameInterface shareInstance].gameDelegate = self;
     

}


#pragma mark----MPNebulaAdapterInterfaceGameProtocol

/*
 jsapi: getUserInfo 的實現方法
 data: h5傳給原生的參數
 context: h5容器上下文
 callback: 原生給h5的回調 @{@"userId":@"xxx",@"name":@"xxx"}
 */
- (void)getUserInfoHandler:(NSDictionary *)data context:(id)context callback:(void (^)(id res))callback
{
    NSLog(@"MPJsApi4GameGetUserInfo : %@",data);
    if (callback) {
        callback(@{@"userId":@"123456",@"name":@"jack"});
    }
}

/*
 jsapi: showRewardAd 的實現方法
 data: h5傳給原生的參數
 context: h5容器上下文
 callback: 原生給h5的回調 @{@"key1":@"value1",@"key2":@"value2"}
 */
- (void)showRewardAdHandler:(NSDictionary *)data context:(id)context callback:(void (^)(id))callback
{
    NSLog(@"showRewardAdHandler : %@",data);
}

廣告

/**
 *  從Native調用H5頁面JS函數
 *
 *  @param data        函數參數 @{@"detail":@{@"action":@"onAdShow或onAdReward、onAdClosed"}}
 *  @param webVC       H5WebViewController(可以通過(H5WebViewController *)context.currentViewController擷取)
 *  @param callback    JS端執行完後回調處理block
 */
- (void)callHandlerData:(id)data webViewController:(UIViewController *)webVC
   responseCallback:(void(^)(id resData))responseCallback;




調用傳參:@{@"action":@"onAdShow"} 或者 @{@"action":@"onAdClosed"}、 @{@"action":@"onAdReward"}

 [[MPNebulaGameInterface shareInstance] callHandlerData:@{@"action":@"onAdShow"} webViewController:self  responseCallback:^(id  _Nonnull resData) {
            
        }];

啟動遊戲

//線上 H5 遊戲:
[[MPNebulaAdapterInterface shareInstance] startH5ViewControllerWithParams:@{@"url":@"https://m.hellobike.com/AppGameCenterH5/latest/pr_outIndex_outHome.html#/outHome"}];


//離線 ID 遊戲:
 [[MPNebulaAdapterInterface shareInstance] startH5ViewControllerWithNebulaApp:@{@"appId":@"xxxx"}];