> For the complete documentation index, see [llms.txt](https://tyson.gitbook.io/vigamedoc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tyson.gitbook.io/vigamedoc/cn/ke-hu-duan-jie-ru/ye-wu-jie-kou/2.-guang-gao-neng-li.md).

# 2.广告能力

## 2.1 设置广告打开回调

### Android

```java
ADNative.setAdResultCallback(AdParamCallback callback);
```

示例：

```java
//设置广告回调
ADNative.setAdResultCallback(new ADManager.AdParamCallback() {

    @Override
    public void onStatusChanged(ADParam arg0, int status) {
        // TODO Auto-generated method stub
        Log.d(TAG,"onStatusChanged:"+status);
    }

    @Override
    public void onRequestAddGameCoin(ADParam arg0, int arg1, int arg2,
            String arg3) {
        // TODO Auto-generated method stub
        Log.d(TAG,"onRequestAddGameCoin");

    }

    @Override
    public void onOpenResult(ADParam adParam, int result) {
        // TODO Auto-generated method stub
        Log.d(TAG,"onOpenResult:"+result);
        //判断广告类型是否是视频
        if(adParam.getType().equals(ADDef.AD_TypeName_Video)){

        }

        if(result== ADParam.ADOpenResult_Success){//广告打开成功

        }
        else {//广告打开失败

        }
    }
});
```

回调方法说明：\
AdParamCallback .onOpenResult(onOpenResult(ADParam adParam , int result)) ：广告打开结果通知

* adParam:广告相关参数（可获取广告ID，广告状态，广告代理商）
* result:广告打开结果：0成功 1失败 2取消

AdParamCallback.onRequestAddGameCoin(ADParam adParam, int result, int num, String reason)：积分墙类广告的钻石奖励通知

* adParam:广告相关参数 &#x20;
* result：奖励结果类型：0成功 1失败 2取消 &#x20;
* num：奖励数量 &#x20;
* reason：通知字符串

## 2.2 打开广告

### 2.2.1 打开普通广告（插屏/视频/横幅/开屏）

#### Android

```java
ADNative.openAd(String adPositionName);
```

#### iOS

```objectivec
[IOSLoader openAd:@"adPositioname"];
```

```objectivec
 [IOSLoader openAd:@"adPositioname" adCallback:^(BOOL flag, KTMADType type) {
        if (type == KTMADTypePlaque) {
            //插屏
        }
        if (type == KTMADTypeVideo) {
            //视频
        }
    }];
```

回调方法说明：

adCallback:^(BOOL flag, KTMADType type)：广告打开结果回调。

* flag：true-打开成功 false-打开失败（插屏不需要处理flag）视 频下发奖励依据flag（flag为true下发奖励，flag为false不下发奖励）
* type ： KTMADTypePlaque（插屏），KTMADTypeVideo（视频）

> 因插屏和视频需要广告展示时关闭背景音，广告关闭时恢复背景音。故可根据type进行判断。

参数：

* adPositionName： 广告位名称

#### Unity

```
Wb.ADManager.Instance.OpenAd(string adPositionName, Action<bool> callBackFun);
```

示例：

```
Wb.ADManager.Instance.OpenAd("home_mfzs", result =>
{
        if (result)
        {
            ShowToast("视频广告打开成功", false);
        }
        else
        {
            ShowToast("视频广告打开失败", true);
        }
});
```

参数：

* adPositionName： 广告位名称
* callBackFun：广告打开回调

#### Creator

```
Wb.Ad.openAd(adPositionName: string, callBackFun: Function);
```

示例：

```
Wb.Ad.openAd("home_mfzs", function (result: boolean) {
            if (result)
        {
            ShowToast("视频广告打开成功", false);
        }
        else
        {
            ShowToast("视频广告打开失败", true);
        }
 });
```

参数：

* adPositionName： 广告位名称
* callBackFun：广告打开回调

### 2.2.2 打开原生广告

#### Android

```java
ADNative.openYsAd(String adPositionName,int width, int height, int x, int y);
```

参数：

* adPositionName： 广告位名称
* width：宽度，单位-像素
* height：高度，单位-像素
* x：左上角横坐标，单位-像素
* y：左上角纵坐标，单位-像素

#### iOS

```objectivec
[IOSLoader openYsAd:string width:int height:int x:int y:int];
```

参数：

* adPositionName： 广告位名称
* width：宽度，单位-像素
* height：高度，单位-像素
* x：左上角横坐标，单位-像素
* y：左上角纵坐标，单位-像素

#### Unity

```
Wb.ADManager.Instance.OpenYsAd(String adPositionName,int width, int height, int x, int y);
```

参数：

* adPositionName： 广告位名称
* width：宽度，单位-像素
* height：高度，单位-像素
* x：左上角横坐标，单位-像素
* y：左上角纵坐标，单位-像素

```
Wb.ADManager.Instance.OpenYsAd(RectTransform rect, string adPositionName);
```

参数：

* adPositionName： 广告位名称
* rect：Unity的坐标区域

```
Wb.ADManager.Instance.OpenYsAd(string adPositionName, float width, float height, float x, float y, float winSizeW, float winSizeH);
```

参数：

* adPositionName： 广告位名称
* width：设计分辨率宽度
* height：设计分辨率高度
* x：设计分辨率左上角横坐标
* y：设计分辨率左上角纵坐标
* winSizeW：设计分辨率屏幕宽度
* winSizeH：设计分辨率屏幕高度

#### Creator

```
Wb.Ad.openYsAd(adPositionName: string, width: number, height: number, x: number, y: number, callback: Function);
```

参数：

* adPositionName： 广告位名称
* width：宽度，单位-像素
* height：高度，单位-像素
* x：左上角横坐标，单位-像素
* y：左上角纵坐标，单位-像素
* callBackFun：广告打开回调

## 2.3 查看广告是否就绪

### Android

```
ADNative.isAdReady(String adPositionName);
```

```
ADNative.isAdReady2(String adPositionName, String type);
```

### iOS

```
[IOSLoader isAdReady:@"adPositioname"];
```

```
[IOSLoader isAdReady:@"adPositioname" type:@"type"];
```

### Unity

```
Wb.ADManager.Instance.IsAdReady(string adPositioname)
```

参数：

* adPositionName:广告位名称
* type: 广告类型 (plaque-插屏 video-视频 banner-横幅 wall-积分墙 splash-开屏 msg-信息流广告)

### Creator

```
Wb.Ad.isAdReady(adPositionName: string);
```

参数：

* adPositionName:广告位名称

## 2.4 关闭广告

### Android

```
ADNative.closeAd(String adPositioname);
```

### iOS

```
[IOSLoader closeAd:@"adPositioname"];
```

### Unity

```
Wb.ADManager.Instance.CloseAd(string adPositioname);
```

参数：

* adPositionName： 广告位名称

### Creator

```
Wb.Ad.closeAd(adPositionName: string);
```

参数：

* adPositionName： 广告位名称

## 2.5 获取视频限制次数

### Android

```
ADNative.getVideoLimitOpenNum();
```

### iOS

```
[IOSLoader getVideoLimitOpenNum];
```

### Unity

```
Wb.ADManager.Instance.GetVideoLimitOpenNum();
```

返回值：

返回可播放次数，-1表示无限次。

### Creator

```
Wb.Ad.getVideoLimitOpenNum();
```

返回值：

返回可播放次数，-1表示无限次。

## 2.6 广告位是否已打开（不推荐）

### Android

```
ADNative.isAdOpen(String adPositionName);
```

### iOS

```
[IOSLoader isAdOpen:@"adPositionName"];
```

返回值：

* true-广告已被打开&#x20;
* false-广告未被打开

## 2.7 某关卡是否出现广告

### Android

```
ADNative.isAdBeOpenInLevel(String adPositionname,int lv);
```

### iOS

```
[IOSLoader isAdBeOpenInLevel:@"adPositionName" level:lv];
```

### Unity

```
Wb.ADManager.Instance.IsAdBeOpenInLevel(string adPositionname,int lv);
```

参数：

* adPositionname：广告位名称&#x20;
* lv：关卡编号(1-无限) &#x20;

返回值：

* true-可出现&#x20;
* false-不可出现

### Creator

```
Wb.Ad.isAdBeOpenInLevel(adPositionname: string, lv: number);
```

参数：

* adPositionname：广告位名称&#x20;
* lv：关卡编号(1-无限) &#x20;

返回值：

* true-可出现&#x20;
* false-不可出现

## 2.8 查询某种广告类型是否存在

### Android

```
ADNative.isAdTypeExist(String adType);
```

### iOS

```
[IOSLoader isAdTypeExist:@"adType"];
```

### Unity

```
Wb.ADManager.Instance.IsAdTypeExist(string adType)
```

参数：

* adType：广告类型 （plaque-插屏 video-视频 banner-横幅 wall-积分墙 splash-开屏 msg-信息流广告） &#x20;

返回值：

* true-存在&#x20;
* false-不存在

### Creator

```
Wb.Ad.isAdTypeExist(adType: string);
```

参数：

* adType：广告类型 （plaque-插屏 video-视频 banner-横幅 wall-积分墙 splash-开屏 msg-信息流广告） &#x20;

返回值：

* true-存在&#x20;
* false-不存在

## 2.9 获取广告位控制参数

### Android

```
ADNative.getAdPositionParam(String positionName,String key);
```

### iOS

```
[IOSLoader getAdPositionParam:@"positionName" valueName:@"key"]
```

### Unity

```
Wb.ADManager.Instance.GetAdPositionParam(string positionName,string key);
```

参数：

* positionName-广告位名称
* key-控制字段名称

返回值：

key对应的value值

### Creator

```
Wb.Ad.getAdPositionParam(positionName: string, key: string);
```

参数：

* positionName-广告位名称
* key-控制字段名称

返回值：

key对应的value值
