OneWay广告Unity版SDK接入

之前的文章介绍了OneWay广告的注册和测试设备的添加,这篇文章主要介绍如何将OneWay广告集成到游戏项目中去。由于我的游戏是使用Unity引擎开发的,所以主要介绍Unity版SDK的集成过程。
登录OneWay后台,点击技术对接,点击下载Unity版SDK。
在这里插入图片描述
压缩包解压后如下:
在这里插入图片描述
将OneWaySDK-Unity 2.3.5.unitypackage资源导入到项目工程中
在这里插入图片描述
但会报一个关于ios平台的错

在这里插入图片描述
由于我只出Android的apk,因此,将其报错误的脚本关于iOS的代码注释掉即可。
在这里插入图片描述
Android平台需要添加Android v4支持库到项目中,因此需要检查导入的SDK中是否有这份jar包
在这里插入图片描述
如此SDK导入工作完成,接下来开始封装调用广告的API。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/*
 * Author:W
 * OneWay广告管理
 */

//激励视频广告回调
public delegate void OnRewardedAdReadyEvent();
public delegate void OnRewardedAdShowEvent(string placementId);
public delegate void OnRewardedAdClickEvent(string placementId);
public delegate void OnRewardedAdCloseEvent(string placementId,string state);

//插屏视频广告回调
public delegate void OnInterstitialAdReadyEvent();
public delegate void OnInterstitialAdShowEvent(string placementId);
public delegate void OnInterstitialAdClickEvent(string placementId);
public delegate void OnInterstitialAdCloseEvent(string placementId, string state);

//插屏图片广告回调
public delegate void OnInterstitialImageAdReadyEvent();
public delegate void OnInterstitialImageAdShowEvent(string placementId);
public delegate void OnInterstitialImageAdClickEvent(string placementId);
public delegate void OnInterstitialImageAdCloseEvent(string placementId, string state);


public class OneWayAdManager : MonoBehaviour
{
    private static OneWayAdManager _instance;
    

    public static OneWayAdManager Instance
    {
        get
        {
            if (_instance == null)
            {
                _instance = new GameObject("OneWayAdManager").AddComponent<OneWayAdManager>();
                DontDestroyOnLoad(_instance.gameObject);
            }

            return _instance;
        }
    }


    #region 相关申请的ID
    //Android 应用 id
    public const string PublishID_Android = "ed2ba792d70941f8";

    //后台申请的激励视频广告ID
    public const string RewardAd_XXX = "T12WE4T93KK67QMX";
    public const string RewardAd_CCC = "T12WE4T93KK67QMX";

    //后台申请的插屏视频广告ID
    public const string InterAd_XXX = "WLFJFVFI54OLEQJX";
    public const string InterAd_CCC = "WLFJFVFI54OLEQJX";

    //后台申请的插屏图片广告ID
    public const string InterImgAd_XXX = "C4QT9THWMMR8Y14B";
    public const string InterImgAd_CCC = "C4QT9THWMMR8Y14B";

    #endregion


    #region  广告相关回调
    public OnRewardedAdReadyEvent OnRewardedAdReadyEvent;
    public OnRewardedAdShowEvent OnRewardedAdShowEvent;
    public OnRewardedAdClickEvent OnRewardedAdClickEvent;
    public OnRewardedAdCloseEvent OnRewardedAdCloseEvent;


    public OnInterstitialAdReadyEvent OnInterstitialAdReadyEvent;
    public OnInterstitialAdShowEvent OnInterstitialAdShowEvent;
    public OnInterstitialAdClickEvent OnInterstitialAdClickEvent;
    public OnInterstitialAdCloseEvent OnInterstitialAdCloseEvent;


    public OnInterstitialImageAdReadyEvent OnInterstitialImageAdReadyEvent;
    public OnInterstitialImageAdShowEvent OnInterstitialImageAdShowEvent;
    public OnInterstitialImageAdClickEvent OnInterstitialImageAdClickEvent;
    public OnInterstitialImageAdCloseEvent OnInterstitialImageAdCloseEvent;
    #endregion



    void Awake()
    {
        _instance = this;
        DontDestroyOnLoad(_instance.gameObject);

        InitSDK();
    }


    /// <summary>
    /// SDK初始化
    /// </summary>
    private void InitSDK()
    {
        //PublishId :您在我们的开发者平台创建时应用后,所获得的唯一应用ID(区分 iOS/Android)。
        OneWaySDK.configure("PublishID_iOS", PublishID_Android);
       
        //初始化激励广告【如果需要】
        OneWaySDK.initRewardedAd();
        OneWaySDK.onRewardedAdReadyEvent += () => {
            Debug.Log("OneWaySDK RewardedAd Ready");
            if (OnRewardedAdReadyEvent != null)
                OnRewardedAdReadyEvent();
        };

        OneWaySDK.onRewardedAdShowEvent += (placeId) => {
            Debug.Log("OneWaySDK RewardedAd Show for tag: " + placeId);
            if (OnRewardedAdShowEvent != null)
                OnRewardedAdShowEvent(placeId);
        };

        OneWaySDK.onRewardedAdClickEvent += (placeId) => {
            Debug.Log("OneWaySDK RewardedAd Click for tag: " + placeId);
            if (OnRewardedAdClickEvent != null)
                OnRewardedAdClickEvent(placeId);
        };

        OneWaySDK.onRewardedAdCloseEvent += (placeId, state) => {
            Debug.Log("OneWaySDK RewardedAd Close for tag: " + placeId + " state is: " + state);
            if (OnRewardedAdCloseEvent != null)
                OnRewardedAdCloseEvent(placeId, state);
        };




        //初始化插屏视频广告【如果需要】
        OneWaySDK.initInterstitialAd();

        OneWaySDK.onInterstitialAdReadyEvent += () => {
            Debug.Log("OneWaySDK InterstitialAd Ready ");
            if (OnInterstitialAdReadyEvent != null)
                OnInterstitialAdReadyEvent();
        };

        OneWaySDK.onInterstitialAdShowEvent += (placeId) => {
            Debug.Log("OneWaySDK InterstitialAd Show for tag: " + placeId);
            if (OnInterstitialAdShowEvent != null)
                OnInterstitialAdShowEvent(placeId);
        };

        OneWaySDK.onInterstitialAdClickEvent += (placeId) => {
            Debug.Log("OneWaySDK InterstitialAd Click for tag: " + placeId);
            if (OnInterstitialAdClickEvent != null)
                OnInterstitialAdClickEvent(placeId);
        };

        OneWaySDK.onInterstitialAdCloseEvent += (placeId, state) => {
            Debug.Log("OneWaySDK InterstitialAd Close for tag: " + placeId + " state is: " + state);
            if (OnInterstitialAdCloseEvent != null)
                OnInterstitialAdCloseEvent(placeId, state);
        };

        

        //初始化插屏图片广告【如果需要】
        OneWaySDK.initInterstitialImageAd();

        OneWaySDK.onInterstitialImageAdReadyEvent += () => {
            Debug.Log("OneWaySDK InterstitialImageAd Ready ");
            if (OnInterstitialImageAdReadyEvent != null)
                OnInterstitialImageAdReadyEvent();
        };

        OneWaySDK.onInterstitialImageAdShowEvent += (placeId) => {
            Debug.Log("OneWaySDK InterstitialImageAd Show for tag: " + placeId);
            if (OnInterstitialImageAdShowEvent != null)
                OnInterstitialImageAdShowEvent(placeId);
        };

        OneWaySDK.onInterstitialImageAdClickEvent += (placeId) => {
            Debug.Log("OneWaySDK InterstitialImageAd Click for tag: " + placeId);
            if (OnInterstitialImageAdClickEvent != null)
                OnInterstitialImageAdClickEvent(placeId);
        };

        OneWaySDK.onInterstitialImageAdCloseEvent += (placeId, state) => {
            Debug.Log("OneWaySDK InterstitialImageAd Close for tag: " + placeId + " state is: " + state);
            if (OnInterstitialImageAdCloseEvent != null)
                OnInterstitialImageAdCloseEvent(placeId, state);
        };



        //SDK错误事件监听
        OneWaySDK.onOneWaySDKDidErrorEvent += (err, msg) => {
            Debug.LogError("OneWaySDK is err: " + err + " , message: " + msg);
        };

    }


    /// <summary>
    /// 播放激励广告
    /// placementId:用于给开发者标记广告,在代理回调时会带上此参数, 默认为 "default"。
    /// </summary>
    public void ShowRewardedAd(string placementId= "default")
    {
        //判断激励广告是否可以播放
        if (OneWaySDK.isRewardedAdReady())
        {           
            OneWaySDK.showRewardedAd(placementId);                                  
        }
    }


    /// <summary>
    /// 播放插屏视频广告
    /// placementId : 用于给开发者标记广告,在代理回调时会带上此参数, 默认为 "default".
    /// </summary>
    /// <param name="placementId"></param>
    public void ShowInterstitialAd(string placementId = "default")
    {
        //判断插屏视频广告是否可以播放
        if (OneWaySDK.isInterstitialAdReady())
        {
            OneWaySDK.showInterstitialAd(placementId);
        }
    }

    /// <summary>
    /// 播放插屏广告
    /// placementId : 用于给开发者标记广告,在代理回调时会带上此参数, 默认为 "default".
    /// </summary>
    /// <param name="placementId"></param>
    public void ShowInterstitialImageAd(string placementId = "default")
    {
        //判断插屏图片广告是否可以播放
        if (OneWaySDK.isInterstitialImageAdReady())
        {
            OneWaySDK.showInterstitialImageAd(placementId);
        }
    }
}


在这里插入图片描述
测试脚本如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
/*
 * Author:W
 * 广告测试
 */
public class TestAd : MonoBehaviour
{

    public Button RewardAdBtn;
    public Button InterAdBtn;
    public Button InterImgAdBtn;

    void Awake()
    {
        RewardAdBtn.onClick.AddListener(OnRewardAdBtnClick);
        InterAdBtn.onClick.AddListener(OnInterAdBtnClick);
        InterImgAdBtn.onClick.AddListener(OnInterImgAdBtnClick);
    }

    void OnDestroy()
    {
        RewardAdBtn.onClick.RemoveListener(OnRewardAdBtnClick);
        InterAdBtn.onClick.RemoveListener(OnInterAdBtnClick);
        InterImgAdBtn.onClick.RemoveListener(OnInterImgAdBtnClick);
    }

    private void OnRewardAdBtnClick()
    {
        Debug.Log("激励视频广告点击");
        OneWayAdManager.Instance.ShowRewardedAd(OneWayAdManager.RewardAd_CCC);
    }

    private void OnInterAdBtnClick()
    {
        Debug.Log("插屏视频广告点击");
        OneWayAdManager.Instance.ShowInterstitialAd(OneWayAdManager.InterAd_CCC);
    }


    private void OnInterImgAdBtnClick()
    {
        Debug.Log("插屏图片广告点击");
        OneWayAdManager.Instance.ShowInterstitialImageAd(OneWayAdManager.InterImgAd_CCC);
    }
}

打出apk,测试结果如下
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Data菌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值