Unity加入Unity Ads打包到IOS的详细步骤笔记

1、准备

①从Package Manager中导入Advertisement.或者直接打开Services中的ADS,配置好项目信息,然后导入。

unity ios打包上传appstore 怎么把unity游戏发布到ios_System


unity ios打包上传appstore 怎么把unity游戏发布到ios_ide_02

2、Unity DashBoard

注意:如果你的项目还未上线至App Store,那么你需要设置的是测试广告。可以勾上Unity中的Enable test Mode。也可以在Unity Dashboard中打开project Settings选择投放测试广告。

unity ios打包上传appstore 怎么把unity游戏发布到ios_unity_03

unity ios打包上传appstore 怎么把unity游戏发布到ios_广告_04


Unity Dashboard 地址:

https://dashboard.unity3d.com/monetization?_ga=2.145880372.187512823.1607336533-1794781052.1603796251 进入网页后,选择在Unity Ads配置好的项目,打开。

unity ios打包上传appstore 怎么把unity游戏发布到ios_ide_05


unity ios打包上传appstore 怎么把unity游戏发布到ios_ios_06


打开Placements,记下Game IDs以及广告的名字,Video是弹出广告、rewardedVideo是激励广告,这两个是默认的提供的广告展示,如果有其他需求可以自行设置,这里我用的是激励广告。

3、代码

创建Initialize Ads脚本,拖入至新创建的Ads对象。

unity ios打包上传appstore 怎么把unity游戏发布到ios_unity_07


unity ios打包上传appstore 怎么把unity游戏发布到ios_System_08


以下是Initialize Ads中的脚本代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Advertisements;

public class InitializeAds : MonoBehaviour, IUnityAdsListener
{
    string gameId = "上面提到的GameIDs";
    string myPlacementId = "rewardedVideo";//上面提到的广告名字
    bool testMode = true;  //测试广告
    void Start()
    {
    	//初始化广告
        Advertisement.AddListener(this);
        Advertisement.Initialize(gameId); 
    }

    public void ShowRewardedVideo()  //展示激励广告
    {
        // Check if UnityAds ready before calling Show method:
        if (Advertisement.IsReady(myPlacementId))  //如果广告准备好了,展示广告
        {
            Advertisement.Show(myPlacementId);
        }
        else  //如果没有准备好
        {
            //res.NoReadyAds(); //未准备好的逻辑
            Debug.Log("Rewarded video is not ready at the moment! Please try again later!");
        }
    }


    public void OnUnityAdsDidFinish(string placementId, ShowResult showResult)//观看广告的逻辑
    {
        // Define conditional logic for each ad completion status:
        if (showResult == ShowResult.Finished)  //观看完成
        {
            // Reward the user for watching the ad to completion.
           // res.FinshAds(); //奖励
        }
        else if (showResult == ShowResult.Skipped) //观看未完成(如跳过)
        {
             //res.NoFinshAds(); //未观看完逻辑
            // Do not reward the user for skipping the ad.
        }
        else if (showResult == ShowResult.Failed) //观看失败
        {
            Debug.LogWarning("The ad did not finish due to an error.");
        }
    }

    public void OnUnityAdsReady(string placementId)  
    {
        // If the ready Placement is rewarded, show the ad:
        if (placementId == myPlacementId)//广告加载完成
        {
            // Optional actions to take when the placement becomes ready(For example, enable the rewarded ads button)
            Debug.Log("加载完成");
        }
    }

    public void OnUnityAdsDidError(string message)
    {
        // Log the error.
    }

    public void OnUnityAdsDidStart(string placementId)
    {
        // Optional actions to take when the end-users triggers an ad.
    }

    // When the object that subscribes to ad events is destroyed, remove the listener:
    public void OnDestroy() //观看完广告后需要删除
    {
        Advertisement.RemoveListener(this);
    }
}

代码中已经注释清楚了,如果有什么不懂的可以评论私聊询问。注意的是需要引用UnityEngine.Advertisements;以及继承IUnityAdsListener。

最后,将上面ShowRewardedVideo()方法放在合适的位置调用即刻。例如按钮点击时调用这个方法,弹出广告。

4、最后

展示效果:

unity ios打包上传appstore 怎么把unity游戏发布到ios_ios_09


这个是在Unity DashBoard中设置了广告可跳过

unity ios打包上传appstore 怎么把unity游戏发布到ios_广告_10


所以Unity运行时,左上角有个跳过的按钮,右上角是观看完毕关闭的按钮。在Unity中测试时,统一结果都是我上面的展示效果。接着就是打包Unity到Xcode了。

后面我再出个教程吧。(教程已出,在下方评论里)


最后在真机上运行测试

unity ios打包上传appstore 怎么把unity游戏发布到ios_unity_11


因为游戏上线了,我设置的是真实广告,然后测试广告是带有Unity标志的广告。

最后文章笔记记录到这里了,欢迎感兴趣的小伙伴下方参与评论。