# 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值


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://tyson.gitbook.io/vigamedoc/cn/ke-hu-duan-jie-ru/ye-wu-jie-kou/2.-guang-gao-neng-li.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
