接入 iOS

更新时间:
复制为 MD 格式

添加 SDK

小程序小游戏支持自定义基线 cp_change_56100909.6。

安装组件和依赖

在 podfile 中新增以下组件。

mPaaS_pod "mPaaS_Game"
mPaaS_pod "mPaaS_Canvas"

初始化 mPaaS

参考 mPaaS 接入文档接入方式介绍 实现初始化操作。

启动游戏

启动参数:xriver

 [MPNebulaAdapterInterface startTinyAppWithId:@"appId" params:@{@"xriver":@(YES)}];

账号授权

客户端注入 my.getAuthCode() 能力

参考 自定义 JSAPI 文档注册自定义 JSAPI。

客户端注入 my.getAuthCode() 能力,直接返回 openId。

#import <AriverNebulaPoseidon/NebulaPoseidon.h>

@interface MPJsApiHandler4GetAuthCode : PSDJsApiHandler

@end


@implementation MPJsApiHandler4GetAuthCode

- (void)handler:(NSDictionary *)data context:(PSDContext *)context callback:(PSDJsApiResponseCallbackBlock)callback
{
    // 从App服务端获取authCode/openId
    NSString *authCode = @"";
    NSString *openId = @"";
    NSMutableDictionary *params = NSMutableDictionary.dictionary;
    params[@"authCode"] = authCode;
    params[@"openId"] = openId;
    //回调参数给小程序层
    if (callback) {
        callback(params);
    }
}

广告

初始化时注入广告的小程序 API。

注册 onResizecreateBannerAdcreateInterstitialAdcreateRewardedAdloadAdhideAddestroyAd JSAPI,实现以上 API 时只需要按照以下方式注册后直接回调成功即可。小游戏 cp 按照支付宝规范调用了以上 API,兼容即可。

具体实现如下:

@interface MPJsApiHandler4AdHandler : PSDJsApiHandler

@end


@implementation MPJsApiHandler4AdHandler

- (void)handler:(NSDictionary *)data context:(PSDContext *)context callback:(PSDJsApiResponseCallbackBlock)callback
{
    if (callback) {
        // 回调成功
        callback(@{@"success":@true});
      }
}

注册 showAd,该 JSAPI 为真正展示广告的 API,这里实现显示广告即可。

重要

广告奖励下发时参考代码主动通知小游戏。

入参:adUnitId, 获取到值后通知奖励下发时需要使用。

@interface MPJsApiHandler4ShowAd : PSDJsApiHandler

@end


@implementation MPJsApiHandler4ShowAd

- (void)handler:(NSDictionary *)data context:(PSDContext *)context callback:(PSDJsApiResponseCallbackBlock)callback
{
    if (callback) {
        // showAd success
        callback(@{@"success":@true});

        // showAd 失败
        callback(@{@"error":61201,@"errorMessage":@"xxx"});
}
    
    
    // 广告奖励成功下发后主动通知:
    H5WebViewController *vc = context.currentViewController;
    // adUnitId从data中读,key:adUnitId
    [vc callHandler:@"ON_AD_VIEW_CLOSE" data:@{@"adUnitId":adUnitId ? :@"",@"closeEventId":@"",@"isEnded":@YES} responseCallback:^(id responseData) {
            
    }];
}