IOS 和 Android Unity游戏引擎的集成AdMob新版教程

本文详细介绍了如何在Unity游戏引擎中使用官方支持的插件,将横幅广告和插页式广告投放到Android或iOS游戏中。包括导入Google移动广告SDK、更新AndroidManifest.xml文件、导入Android和iOS版本的插件、使用Unity插件API请求广告以及使用AdMob中介和DFP广告管理系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果您使用Unity 游戏引擎,则可以使用官方支持的插件在 Unity 开发环境中编写脚本,以将横幅广告和插页式广告投放到 Android或 IOS游戏中。

一:要求:
1:Unity 4或更高版本
2:Google移动广告SDK

二:将插件导入到游戏中
1:在Unity 编辑器中打开您的项目。选择“Assets”(资源)→“Import Package”(导入程序包)→“Custom Package”(自定义程序包)并找到您下载的GoogleMobileAdsPlugin.unitypackage文件。

2:确保选择所有文件,然后点击Import(导入)。

三:我已经拥有AndroidManifest.xml文件

如果您的项目已经有Assets/Plugins/Android/AndroidManifest.xml文件,您可以选择不从GoogleMobileAds.unitypackage导入此文件,但您需要先更新该清单文件,以将unityplayer.ForwardNativeEventsToDalvik元数据标记添加到 Unity 主活动中(以下突出显示的内容):

<activity android:name="com.unity3d.player.UnityPlayerNativeActivity"
android:label="@string/app_name">

<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />

<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik"
android:value="true" />

</activity>
在Unity主活动中,将unityplayer.ForwardNativeEventsToDalvik标记设置为true可确保广告是可以点击的。

您还需要按照快速入门指南中的介绍对清单文件做出更改。

四:运行您的项目
根据您的平台完成以下相应步骤,将Android和IOS版本的Google移动广告SDK 导入到项目中。完成这些步骤后,请参阅Unity 插件API部分,详细了解如何使用插件请求横幅广告和插页式广告。

五:Android
1:此插件要求项目中包含Google Play服务库。将整个<android_SDK>/extras/Google/Google_play_services/libproject/Google-play-services_lib/文件夹添加到 Unity 项目的Assets/Plugins/Android文件夹中。

2:转到“File”(文件)→“Build Settings”(构建设置),选择Android平台,然后选择Build and Run(构建并运行)。

您已为Android 导入了该插件!

六:IOS
1:转到“File”(文件)→“Build Settings”(构建设置),依次选择 IOS 平台和Build(构建)。这将会导出 Xcode项目。


2:打开导出的Xcode项目,并按照IOS快速入门指南中的手动导入部分来添加 Google移动广告SDK。

3:在Xcode中,转到“Product”(产品)→“Run”(运行)以运行您的项目。

现在您已为IOS成功导入该插件!

七:Unity 插件 API
您可以在Google移动广告插件中使用常用的C# API来请求横幅广告和插页式广告。这段代码只需编写一次即可,然后可以分别部署到 Android设备和IOS设备中。

1:基本的横幅广告请求
以下是创建和加载横幅广告所需的最少代码。

using GoogleMobileAds.API;

private void RequestBanner()
{
#if UNITY_ANDROID
string adUnitId = "INSERT_ANDROID_BANNER_AD_UNIT_ID_HERE";

#elif UNITY_IPHONE
string adUnitId = "INSERT_IOS_BANNER_AD_UNIT_ID_HERE";

#else
string adUnitId = "unexpected_platform";

#endif

// Create a 320x50 banner at the top of the screen.
BannerView bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);

// Create an empty ad request.
AdRequest request = new AdRequest.Builder().Build();

// Load the banner with the request.
bannerView.LoadAd(request);

}

AdPosition枚举会指定横幅广告的展示位置。

请注意,不同广告单元的使用方式要取决于具体的平台。具体来说,在使用 AdMob 时,您需要使用IOS广告单元在 IOS设备上发送广告请求,使用Android广告单元在Android设备上发送广告请求。

2:基本的插页式广告请求
以下是加载插页式广告所需的最少代码。
using GoogleMobileAds.API;

private void RequestInterstitial()
{
#if UNITY_ANDROID
string adUnitId="INSERT_ANDROID_INTERSTITIAL_AD_UNIT_ID_HERE";

#elif UNITY_IPHONE
string adUnitId="INSERT_IOS_INTERSTITIAL_AD_UNIT_ID_HERE";

#else
string adUnitId="unexpected_platform";

#endif

 // Initialize an InterstitialAd.
InterstitialAd interstitial = new InterstitialAd(adUnitId);
// Create an empty ad request.
AdRequest request = new AdRequest.Builder().Build();

// Load the interstitial with the request.
interstitial.LoadAd(request);

}

与横幅广告不同,插页式广告需要显式展示。请在游戏的适当停止点(例如当前关卡结束时)检查插页式广告是否已准备好进行展示。展示插页式广告的一个好时机是在游戏结束时:
private void GameOver()
{
  if (interstitial.IsLoaded()) {
    interstitial.Show();
  }

}

3:自定义广告尺寸
您可以为广告指定一个自定义的尺寸而不使用AdSize常量。
AdSize adSize = new AdSize(250, 250);
BannerView bannerView = new BannerView(adUnitId, adSize, AdPosition.Bottom);

4:测试广告
我们建议您在开发过程中请求测试广告,以免产生不当的广告展示。要请求测试广告,请在构建广告请求时将加密的设备 ID 添加到AddTestDevice方法。无论是 Android 还是IOS,当您的应用运行并发送有效请求时,此 ID只能在日志中找到。

以下说明了如何在构建广告请求时加入测试设备。
AdRequest request = new AdRequest.Builder()
.AddTestDevice(AdRequest.TestDeviceSimulator)       // Simulator.
.AddTestDevice("2077ef9a63d2b398840261c8221a0c9b") // My test iPod Touch 5.
.Build();

5:广告请求定位
要向广告请求提供额外的定位信息,请在构建请求时设置这些定位参数。此广告请求示例显示了可以使用哪些定位方法。

AdRequest request = new AdRequest.Builder().SetGender(Gender.Male)
.SetBirthday(new DateTime(1985, 1, 1))
.TagForChildDirectedTreatment(true)
.AddExtra("excl_cat", "cars,sports") // Category exclusions for DFP.
.Build();

6:广告事件
BannerView和InterstitialAd都包含您可以注册的相同广告事件。这些事件是EventHandler类型。以下示例说明如何在横幅广告上设置广告事件:
private void RequestBanner(){

BannerView bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);

// Called when an ad request has successfully loaded.
bannerView.AdLoaded += HandleAdLoaded;

// Called when an ad request failed to load.
bannerView.AdFailedToLoad += HandleAdFailedToLoad;

// Called when an ad is clicked.
bannerView.AdOpened += HandleAdOpened;

// Called when the user is about to return to the app after an ad click.
bannerView.AdClosing += HandleAdClosing;

// Called when the user returned from the app after an ad click.
bannerView.AdClosed += HandleAdClosed;

// Called when the ad click caused the user to leave the application.
bannerView.AdLeftApplication += HandleAdLeftApplication;

}

public void HandleAdLoaded(object sender, EventArgs args)
{
    print("HandleAdLoaded event received.");
    // Handle the ad loaded event.
}

AdFailedToLoad事件包含特殊的事件参数。该事件会传递一个AdFailedToLoadEventArgs实例,此实例具有一个说明错误内容的Message。

public void HandleAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
print("Interstitial Failed to load: " + args.Message);
  // Handle the ad failed to load event.

};
您只需注册自己感兴趣的事件。

7:显示和隐藏横幅广告
默认情况下,横幅广告是可见的。要暂时隐藏横幅广告,请调用:
bannerView.Hide();
要重新显示该广告,请调用:
bannerView.Show();

8:清除横幅广告和插页式广告
当完成BannerView或InterstitialAd后,请在放弃对其的引用之前调用Destroy()方法。
bannerView.Destroy();

interstitial.Destroy();
这会通知插件应该将此对象作为垃圾进行收集。不调用此方法将导致内存泄漏。

八:AdMob 中介支持
要使用Unity 插件执行中介功能,您必须按照中介快速入门指南 (Android|IOS) 中的介绍,为每个第三方广告网络下载并添加SDK和适配器库。以下是针对不同设备的不同操作:

1:对于Android,将所需的库添加到项目的Assets/Plugins/Android目录中。

2:对于IOS,将所需的库添加到Xcode项目中,该项目是您为IOS构建项目时由 Unity 生成的。

九:DFP 广告管理系统支持
正如Unity Plugin API中所述,Unity插件支持DFP 广告单元、自定义广告尺寸和自定义定位。
该插件当前不支持更高级的 DFP 功能,如多个广告尺寸、应用事件和手动展示次数计数。

Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。正是以为Unity是一个全面整合的专业游戏引擎,可以把游戏发布去Android平台、IOS平台、Windows Phone8平台等等,所以可以利用这点特性把Unity与KeyMob平台结合起来,广告主和开发者都可以通过简单的操作轻松实现对多家广告平台的搭配使用。并能辅助开发者过市场审核,服务态度和技术方面都是做的很不错。KeyMob的优点就是小而功能精细,专做广告服务,对各个广告平台进行精选,集成方便快捷。
原创:officemaster.cn 转载请注明出处:http://officemaster.cn/forum.php?mod=viewthread&tid=6116&extra=page%3D1 Unity 通过Unity Admob Plugin插件集成admob教程 下载Unity Admob Demo,插件里面包含 Admob_Unity_Demo.unitypackage 插件文件 AdmobPluginRes 是Admobios sdk插件使用样例代码 打开样例代码可以看到代码里面如何使用Unity Admob插件 把Admob Unity插件添加进unity工程 1. 打开Unity工程 2. 从菜单打开,Assets -> Import Package -> Custom Package. 3. 选中Unity插件文件Admob_Unity_Demo.unitypackage 4. 选择导入所有内容,把admob unity插件内全部内容导入导unity工程 5. 修改admobdemo.cs里面的admob的参数 6. 把addmobdemo.cs 添加到main camera或者其他在场景中一直存在物体上 7. 打开file build and run选择android或者ios平台然后进行设置平台设置 8. 点击build或者build and run编译项目获得xcode工程或者apk,把apk安装到设备上查看下过 如果是ios项目,编译后得到的是xcode工程,为了能正常工作需要进行如下处理 1.把admobpluginres目录下的GoogleMobileAds.framework直接拖拽(一定要拖,不要添加,否则报错)添加到项目根目录下2.给工程添加framework 引用,包括下面的 AdSupport.framework,EventKit.framework,EventKitUI.framework,CoreTelephony.framework,StoreKit.framework,MessageUI.framework 3.编译xcode工程为ipa,安装到设备后运行查看效果 注意:需要设置【Build Settings】 - 【Build Options】 - 【Enable Bitcode】为 “No”, 否则有可能报错 怎么在Unity应用里面集成Admob全屏广告?下面的Unity3d里面添加admob广告的代码 using admob; ... Admob.Instance().initAdmob("admob banner id", "admob interstitial id");//initAdmob just need call once,if you called when create banner ,you not need call any more Admob.Instance().loadInterstitial(); 横幅广告不同,全屏广告需要先加载,等加载完成后在合适的时间点展示广告 if (Admob.Instance().isInterstitialReady()) { Admob.Instance().showInterstitial(); } 下面分享Unity 集成admob横幅 广告的代码 using admob; ... Admob.Instance().initAdmob("admob banner id", "admob interstitial id");//admob id with format ca-app-pub-2796046890663330/756767388//初始化设置广告 Admob.Instance().showBannerRelative(AdSize.Banner, AdPosition.BOTTOM_CENTER, 0);//在应用底部居中相对位置展示横幅广告 AdSize.Banner表示展示的广告尺寸,AdPosition.BOTTOM_CENTER表示横幅的放置位置,AdPosition里面包含各个广告位置常量,AdSize包含各个广告尺寸常量 自定义横幅广告尺寸 In addition to constants on _AdSize_, you can also create a custom size: 除了AdSize里面的admob横幅广告外,你也可以自定义广告尺寸,当然这些尺寸必须是admob平台支持的,下面自定义个250x250的广告并展示 using admob; ... //Create a 250x250 banner. AdSize adSize = new AdSize(250, 250); Admob.Instance().showBannerAbsolute(adSize,0,30); 横幅广告相对位置 The following constants list the available ad positions: 下面是所有支持的admob横幅广告相对位置常量 AdPosition.TOP_LEFT AdPosition.TOP_CENTER AdPosition.TOP_RIGHT AdPosition.MIDDLE_LEFT AdPosition.MIDDLE_CENTER AdPosition.MIDDLE_RIGHT AdPosition.BOTTOM_LEFT AdPosition.BOTTOM_CENTER AdPosition.BOTTOM_RIGHT 默认横幅广告展示后就一直是可见的,如果想隐藏广告那可以通过下面的方式进行 Admob.Instance().removeBanner(); 设置admob广告测试模式儿童应用设置 可能你会想先测试下admob广告,那么你可以使用测试模式,或者你的应用是儿童应用,需要设置儿童应用模式可以通过下面的方法进行 using admob; ... Admob.Instance().setTesting(true); Admob.Instance().setForChildren(true); Admob横幅广告全屏广告都有差不多的广告事件,你可以在unity3d里面监听并处理所有admob广告事件 下面是一个处理全屏广告事件的例子,我们在收到广告的时候就展示广告 using admob; ... Admob.Instance().interstitialEventHandler += onInterstitialEvent; ... void onInterstitialEvent(string eventName, string msg) { Debug.Log("handler onAdmobEvent---" + eventName + " " + msg); if (eventName == AdmobEvent.onAdLoaded) { Admob.Instance().showInterstitial(); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值