怎么在unity ios 接入admob3d里添加admob广告

关于android的知识我就不在此说明,不熟悉的朋友可以先去了解一下基础知识。
开发环境:android 4.0、admob sdk 6.1.0、unity3.5、操作系统 win7
开发前需要将 classes.jar& admob sdk 6.1.0.jar 拖到android工程 libs下面 (注意:不要通过java bulid path 导入jar包,那样老说找不到 admob的相关库)
如下所示:
本实例没有配置界面的XML,都是代码创建控件
特别说明:unity中bundle Identifier 必须为包名(本例 com.example.testadmob)
package com.example.
import com.google.ads.AdR
import com.google.ads.AdS
import com.google.ads.AdV
import android.os.B
import android.util.L
import android.view.V
import android.view.ViewGroup.LayoutP
import android.widget.LinearL
import com.unity3d.player.UnityP
import com.unity3d.player.UnityPlayerA
public class MainActivity extends UnityPlayerActivity
private AdView adV
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setupAds(); //admob广告的添加
public void setupAds()
layout = new LinearLayout(this);
//创建linearLayout
layout.setOrientation(LinearLayout.VERTICAL);
//设置成垂直
addContentView(layout, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
//layout添加到住View
adView = new AdView(this,AdSize.BANNER,"aa8cfc9");
layout.addView(adView, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
adView.setBackgroundColor(0xff000000);
adRequest=new AdRequest();
public static void ShowAds() {//unity 中调用此函数 显示广告
final MainActivity currentActivity = (MainActivity)UnityPlayer.currentA
currentActivity.runOnUiThread(new Runnable() {
public void run() {
currentActivity.showAds();
public static void HideAds() {
final MainActivity currentActivity = (MainActivity)UnityPlayer.currentA//在unity中获取当前主activity
currentActivity.runOnUiThread(new Runnable() {
public void run() {
currentActivity.hideAds();
public void showAds() {
adView.setVisibility(View.VISIBLE);
adView.loadAd(adRequest);//请求广告
Log.d("AdListener", "showAds");
public void hideAds() {
adView.setVisibility(View.GONE);
Log.d("AdListener", "hideAds");
AndroidManifest.xml 如下:
&manifest xmlns:android="/apk/res/android"
package="com.example.testadmob"
android:versionCode="1"
android:versionName="1.0" &
android:minSdkVersion="8"
android:targetSdkVersion="15" /&
&uses-permission android:name="android.permission.INTERNET"/&
&uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/&
&application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" &
&activity android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait"&
&intent-filter&
&action android:name="android.intent.action.MAIN" /&
&category android:name="android.intent.category.LAUNCHER" /&
&/intent-filter&
&/activity&
&activity android:name="com.google.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/&
&/application&
&/manifest&
选择工程 导出&&》JAR file&&》Next&&》选择路径&&》finish& 导出jar包
在unity中新建plugins/Android& 文件夹& 将android工程下的libs、bin、res 、AndroidManifest.xml拷贝到 Android目录下。 清空bin libs下的内容,将导出的jar包和andmobsdk分别拷贝到两个文件夹下
如图所示:
unity 中调用
private AndroidJavaClass cls_TheA
cls_TheActivity = new AndroidJavaClass("com.example.testadmob.MainActivity");//对应android的包名
if(GUI.Button(new Rect(100,300,100,40),"show"))
cls_TheActivity.CallStatic("ShowAds");
if(GUI.Button(new Rect(200,300,100,40),"hide"))
cls_TheActivity.CallStatic("HideAds");
阅读(...) 评论()iOS平台添加Google Admob -1/2(Unity3D开发之七)
Unity调用iOS还是非常简单的,晚上空闲时间写了unity在IOS平台加载Google Admob。需要的朋友可以看下。
一、首先编写Admob的iOS的代码。
请去iOS Admob SDK, 并注册app id。如果这一步不熟悉,请自行Google,网上应该很多。
1、Admob类,主要实现Admob的创建和加载
IOSAdmob.h
IOSAdmob.h
Created by LiuYanghui on 14-8-4.
Copyright (c) 2014年 LiuYanghui. All rights reserved.
#import GADBannerView.h
#import GADBannerViewDelegate.h
@interface IOSAdmob : NSObject
- (void)startRequestAdmob:(NSString*)admobId AdSize:(GADAdSize)size Position:(CGPoint)
- (void)setAdmobHidden:(BOOL)isH
IOSAdmob.m
IOSAdmob.m
Created by LiuYanghui on 14-8-4.
Copyright (c) 2014年 LiuYanghui. All rights reserved.
#import IOSAdmob.h
@interface IOSAdmob ()
@property (nonatomic) BOOL isH
@property (nonatomic) CGRect adR
@property (nonatomic, readonly, strong) UIViewController* rootViewC
@property (nonatomic, readonly, strong) GADBannerView* adBannerV
@implementation IOSAdmob
- (id) init
self = [super init];
if(self != nil)
_isHidden = NO;
_adRect = CGRectZ
_rootViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController];
_adBannerView =
- (void) dealloc
[_rootViewController release];
[_adBannerView release];
[super dealloc];
- (void) startRequestAdmob:(NSString*)admobId AdSize:(GADAdSize)size Position:(CGPoint)pos
if (_adBannerView) { }
_adBannerView = [[GADBannerView alloc] initWithAdSize:size];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
_adRect = CGRectMake(pos.x, pos.y, _adBannerView.frame.size.width, _adBannerView.frame.size.height);
_adBannerView.adUnitID = admobId;
_adBannerView.delegate =
[_adBannerView setRootViewController:_rootViewController];
_adBannerView.frame = _adR
[_rootViewController.view addSubview:_adBannerView];
double delayInSeconds = 5.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
NSLog(@Retrying to load request);
[_adBannerView loadRequest:[self createRequest]];
- (void)setAdmobHidden:(BOOL)isHidden
_isHidden = isH
if (_adBannerView) {
[_adBannerView setHidden:_isHidden];
[UIView animateWithDuration:0.5 animations:^ {
_adBannerView.frame = _adR
#pragma mark GADRequest generation
// Here we're creating a simple GADRequest and whitelisting the simulator
// and two devices for test ads. You should request test ads during development
// to avoid generating invalid impressions and clicks.
- (GADRequest *)createRequest {
GADRequest *request = [GADRequest request];
#pragma mark GADBannerViewDelegate impl
// Since we've received an ad, let's go ahead and set the frame to display it.
- (void)adViewDidReceiveAd:(GADBannerView *)adView {
NSLog(@Received ad);
_adBannerView.frame = _adR
[_adBannerView setHidden:_isHidden];
- (void)adView:(GADBannerView *)view
didFailToReceiveAdWithError:(GADRequestError *)error {
NSLog(@Failed to receive ad with error: %@, [error localizedFailureReason]);
double delayInSeconds = 5.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
NSLog(@Retrying to load request);
[_adBannerView loadRequest:[self createRequest]];
二、Admob对外单例类接口
IOSAdmobManager.h
IOSAdmobManager.h
Created by LiuYanghui on 14-8-4.
Copyright (c) 2014年 LiuYanghui. All rights reserved.
@interface IOSAdmobManager : NSObject
+ (IOSAdmobManager *)getI
- (void)startRequestAdmob:(NSString*)admobId AdSizeId:(NSInteger)adSizeId Position:(CGPoint)
- (void)setAdmobHidden:(BOOL)isH
IOSAdmobManager.m
IOSAdmobManager.m
Created by LiuYanghui on 14-8-4.
Copyright (c) 2014年 LiuYanghui. All rights reserved.
#import IOSAdmobManager.h
#import IOSAdmob.h
@interface IOSAdmobManager ()
@property (nonatomic, readonly, strong) IOSAdmob*
@implementation IOSAdmobManager
+ (IOSAdmobManager *)getInstance
static IOSAdmobManager *mgr =
static dispatch_once_t onceT
dispatch_once(&onceToken, ^{
mgr = [[self alloc] init];
- (id)init
self = [super init];
if (self) {
_admob = [[IOSAdmob alloc] init];
- (void)startRequestAdmob:(NSString*)admobId AdSizeId:(NSInteger)adSizeId Position:(CGPoint)pos
switch (adSizeId) {
[_admob startRequestAdmob:admobId AdSize:kGADAdSizeBanner Position:pos];
[_admob startRequestAdmob:admobId AdSize:kGADAdSizeLargeBanner Position:pos];
[_admob startRequestAdmob:admobId AdSize:kGADAdSizeMediumRectangle Position:pos];
[_admob startRequestAdmob:admobId AdSize:kGADAdSizeFullBanner Position:pos];
[_admob startRequestAdmob:admobId AdSize:kGADAdSizeLeaderboard Position:pos];
[_admob startRequestAdmob:admobId AdSize:kGADAdSizeSkyscraper Position:pos];
[_admob startRequestAdmob:admobId AdSize:kGADAdSizeSmartBannerPortrait Position:pos];
[_admob startRequestAdmob:admobId AdSize:kGADAdSizeSmartBannerLandscape Position:pos];
[_admob startRequestAdmob:admobId AdSize:kGADAdSizeBanner Position:pos];
- (void)setAdmobHidden:(BOOL)isHidden
[_admob setAdmobHidden:isHidden];
三、为第二步中的单例接口注册C函数接口,提供给Unity使用
LHAdmob.mm
LHAdmob.mm
Created by LiuYanghui on 14-8-4.
Copyright (c) 2014年 LiuYanghui. All rights reserved.
#import IOSAdmobManager.h
extern C {
void startRequestAdmob(const char* admobId, int adSizeId, float pixelX, float pixelY)
[[IOSAdmobManager getInstance] startRequestAdmob:[NSString stringWithUTF8String:admobId] AdSizeId:adSizeId Position:CGPointMake(pixelX, pixelY)];
void setAdmobHidden(bool isHidden)
[[IOSAdmobManager getInstance] setAdmobHidden:isHidden];
OK,到这里已经完成了Admob的创建和Unity接口编写。
1、Unity导出的iOS工程默认没有使用arc,所以以上代码全部未使用arc。
Xcode-&Targets-&Build Settings-&Objective-C Automatic Reference Counting 设置NO,即关闭arc。
2、针对上诉接口创建什么类型的xCode工程 ?
你可以创建任意的Xcode工程,编写以上代码。也可以创建iOS-&Framework & Library-&Cocos Touch Static Library 静态库工程。
3、以上代码如何加到Unity?
第一个方法:直接将以上代码文件复制到Unity-&Assets/Plugins/iOS 文件夹中,该文件是Unity指定的插件文件。
第二个方法:如果你创建的是静态库工程,Xcode-&Product-&Archive 编译出.a静态库文件,将.a文件复制到Unity-&Assets/Plugins/iOS 文件夹中。
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'下次自动登录
现在的位置:
& 综合 & 正文
android应用中加入admob(unity,eclipse均可)
1.注册admob账号,获取ID 网址
2.下载admob的SDK,在eclipse中导入admob的jar包
4.我使用的是4.3.1的版本,这个版本要求SDK版本在3.2以上,即在project.properties文件中target=android-13,如果这个不改,那么在AndroidManifest.xml的配置中,你就悲剧了。
5.AndroidManifest.xml配置如下
&?xml version="1.0" encoding="utf-8"?&
&manifest xmlns:android="/apk/res/android"
package="com.mjm.nono"
android:versionCode="1"
android:versionName="1.0" &
&uses-sdk android:minSdkVersion="7" /&
&application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" &
android:label="@string/app_name"
android:name=".AdsActivity"
android:screenOrientation="landscape"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" &
&intent-filter &
&action android:name="android.intent.action.MAIN" /&
&category android:name="android.intent.category.LAUNCHER" /&
&/intent-filter&
&/activity&
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:name="com.google.ads.AdActivity" /&
&/application&
&uses-permission android:name="android.permission.INTERNET" /&
&uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&
&/manifest&
如果没有修改之前的project.properties文件中target=android-13,
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
这句话就会报错。因为uiMode是到8才出现的,而screenSize和smallestScreenSize是到13才出现的。
6.设置如下,适用于Unity:
我没有用xml进行布局,直接代码控制布局叠加在当前布局之上,间隔一段时间就会出现广告,点击广告上的关闭按钮,进行关闭。
如果是在Unity进行添加,还需导入classes.jar的包,然后继承UnityPlayerActivity类。如果不是的话,直接继承Activity类。然后在onCreate设置你的View
public class AdsActivity extends UnityPlayerActivity {
protected static final int HANDLER_SHOW = 0;
protected static final int HANDLER_HIDE = 1;
private boolean adVisible =
private AdView adV
private Button bt1;
boolean show =
boolean rec=
Handler h = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case HANDLER_HIDE:
if (adVisible) {
System.out.println("hahahahah");
bt1.setVisibility(View.GONE);
adView.setVisibility(View.GONE);
adVisible =
case HANDLER_SHOW:
if (!adVisible) {
bt1.setVisibility(View.VISIBLE);
adView.setVisibility(View.VISIBLE);
adVisible =
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ShowAds();
timer = new Timer(true);
timer.schedule(task, );
TimerTask task = new TimerTask() {
public void run() {
System.out.println("start");
if (!adVisible&&rec) {
Message message = new Message();
message.what = HANDLER_SHOW;
h.sendMessage(message);
public void onDestroy() {
if (adView != null) {
adView.destroy();
timer.cancel();
super.onDestroy();
public void ShowAds() {
RelativeLayout layout2 = new RelativeLayout(this);
adView = new AdView(this, AdSize.IAB_BANNER, "a14f436bec13378");
AdRequest adRequest = new AdRequest();
adView.loadAd(adRequest);
adView.setAdListener(new AdListener() {
public void onReceiveAd(Ad arg0) {
// TODO Auto-generated method stub
bt1.setVisibility(View.VISIBLE);
System.out.println("ad rec");
public void onPresentScreen(Ad arg0) {
// TODO Auto-generated method stub
public void onLeaveApplication(Ad arg0) {
// TODO Auto-generated method stub
public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) {
// TODO Auto-generated method stub
public void onDismissScreen(Ad arg0) {
// TODO Auto-generated method stub
RelativeLayout.LayoutParams lpLayoutParams2 = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lpLayoutParams2.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
layout2.addView(adView, lpLayoutParams2);
bt1 = new Button(this);
bt1.setText("close");
bt1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
RelativeLayout.LayoutParams lpLayoutParams = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lpLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
layout2.addView(bt1, lpLayoutParams);
bt1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println("close");
h.sendEmptyMessage(HANDLER_HIDE);
bt1.setVisibility(View.GONE);
addContentView(layout2, new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
&&&&推荐文章:
【上篇】【下篇】&&&&Unity Admob 插件
Unity Admob 插件
转载请注明出处:/forum.php?mod=viewthread&tid=6116&extra=page%3D1
Unity 通过Unity Admob Plugin插件集成admob教程
下载Unity Admob Demo,插件里面包含
Admob_Unity_Demo.unitypackage 插件文件
AdmobPluginRes
是Admob 的ios 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广告的代码
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横幅 广告的代码
Admob.Instance().initAdmob(&admob banner id&, &admob interstitial id&);//admob id with format ca-app-pub-88//初始化设置广告
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的广告并展示
//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广告,那么你可以使用测试模式,或者你的应用是儿童应用,需要设置儿童应用模式可以通过下面的方法进行
Admob.Instance().setTesting(true);
Admob.Instance().setForChildren(true);
Admob横幅广告和全屏广告都有差不多的广告事件,你可以在unity3d里面监听并处理所有admob广告事件
下面是一个处理全屏广告事件的例子,我们在收到广告的时候就展示广告
Admob.Instance().interstitialEventHandler += onInterstitialE
void onInterstitialEvent(string eventName, string msg)
Debug.Log(&handler onAdmobEvent---& + eventName + &
if (eventName == AdmobEvent.onAdLoaded)
Admob.Instance().showInterstitial();
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
移动开发下载排行}

我要回帖

更多关于 安卓添加admob广告 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信