U3D Admob广告代码

论坛 期权论坛 脚本     
匿名技术用户   2020-12-23 14:53   11   0

Admob有两种广告:插屏(只显示部分屏幕上,如:上,下)、插页(全屏的广告)


package com.plugin.unity;


import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout.LayoutParams;

import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.InterstitialAd;
import com.plugin.unity.Common;


public class Admob {
private AdView adView;
private InterstitialAd mInterstitialAd;
private Activity activity = Common.getUnityActivity();
static Admob mInstance = null;

@UnityCallable
public static Admob getInstance(){
if(mInstance == null){
mInstance = new Admob();
}

return mInstance;
}

@UnityCallable
public void StartAdmob(String params){
UnityParams unity_params = UnityParams.parse(params,"can not parse ad setup params");

if(unity_params.hasString("banner_id")){
SetupBanner(unity_params.getString("banner_id"));
}

if(unity_params.hasString("intertitial_id")){
SetupIntertitial(unity_params.getString("intertitial_id"));
}
}

//插屏广告
void SetupBanner(final String adUnitId) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
if(adView == null){
// TODO Auto-generated method stub
adView = new AdView(activity);
//"ca-app-pub-1769111074675577/9673638847"
adView.setAdUnitId(adUnitId);

adView.setAdSize(AdSize.SMART_BANNER);

adView.setAdListener(new AdListener(){
@Override
public void onAdLoaded() {
adView.refreshDrawableState();
Log.i("admob","BannerAds onAdLoaded()");
}


@Override
public void onAdFailedToLoad(int errorCode) {
String errorReason = "";
switch(errorCode) {
case AdRequest.ERROR_CODE_INTERNAL_ERROR:
errorReason = "Internal error";
break;
case AdRequest.ERROR_CODE_INVALID_REQUEST:
errorReason = "Invalid request";
break;
case AdRequest.ERROR_CODE_NETWORK_ERROR:
errorReason = "Network Error";
break;
case AdRequest.ERROR_CODE_NO_FILL:
errorReason = "No fill";
break;
}

Log.i("admob","BannerAds onAdFailedToLoad()" + errorReason);
}


@Override
public void onAdOpened() {
Log.i("admob","BannerAds onAdOpened()");
}


@Override
public void onAdClosed() {
Log.i("admob","BannerAds onAdClosed()");
}


@Override
public void onAdLeftApplication() {
Log.i("admob","BannerAds onAdLeftApplication()");
}
});

LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);

params.gravity = Gravity.TOP;

adView.setVisibility(View.INVISIBLE);

//adView.setFocusableInTouchMode(true);

activity.addContentView(adView, params);

Log.i("admob", "setupBannerAds");
}
}
});

}

// 插页广告
void SetupIntertitial(final String adUnitId){
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
if(mInterstitialAd == null){
// Create the InterstitialAd and set the adUnitId.
mInterstitialAd = new InterstitialAd(activity);

mInterstitialAd.setAdUnitId(adUnitId);

mInterstitialAd.setAdListener(new AdListener(){
@Override
public void onAdLoaded() {
Log.i("admob","InstertitialAds onAdLoaded()");
}


@Override
public void onAdFailedToLoad(int errorCode) {
String errorReason = "";
switch(errorCode) {
case AdRequest.ERROR_CODE_INTERNAL_ERROR:
errorReason = "Internal error";
break;
case AdRequest.ERROR_CODE_INVALID_REQUEST:
errorReason = "Invalid request";
break;
case AdRequest.ERROR_CODE_NETWORK_ERROR:
errorReason = "Network Error";
break;
case AdRequest.ERROR_CODE_NO_FILL:
errorReason = "No fill";
break;
}

Log.i("admob","InstertitialAds onAdFailedToLoad()" + errorReason);
}


@Override
public void onAdOpened() {
Log.i("admob","InstertitialAds onAdOpened()");
}


@Override
public void onAdClosed() {
Log.i("admob","InstertitialAds onAdClosed()");
}


@Override
public void onAdLeftApplication() {
Log.i("admob","InstertitialAds onAdLeftApplication()");
}
});

Log.i("admob", "setupInstertitialAds");
}
}
});
}

@UnityCallable
public void LoadBanner(){
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
if(adView != null){
adView.loadAd(new AdRequest.Builder().build());

Log.i("admob", "LoadBannerAds");
}
}
});
}

@UnityCallable
public void ShowBanner(){
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
if(adView != null){
adView.loadAd(new AdRequest.Builder().build());

adView.setVisibility(View.VISIBLE);

Log.i("admob", "ShowBannerAds");
}
}
});
}

@UnityCallable
public void HideBanner(){
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
if(adView != null){
adView.setVisibility(View.INVISIBLE);

Log.i("admob", "HideBannerAds");
}
}
});
}

@UnityCallable
public void LoadIntertitial(){
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
if(mInterstitialAd != null && mInterstitialAd.isLoaded() == false){
mInterstitialAd.loadAd(new AdRequest.Builder().build());
}
else{
Log.i("admob", "InterstitialAd is null or has loaded");
}
}
});
}

@UnityCallable
public void ShowIntertitial(){
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
if(mInterstitialAd != null){
if(mInterstitialAd.isLoaded()){
mInterstitialAd.show();
}
else{
Log.i("admob", "InterstitialAd has not loaded!!");
}
}
}
});
}

}


在AndroidManifest.xml的</Application>前添加

<!-- Activity required to show ad overlays. -->
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent" />


<!-- META-DATA -->

<meta-data android:name="com.google.android.gms.version" android:value="6587000" />

在<activity>中添加标记,否则,插屏广告将不能点击

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


c#代码:

using System;
using UnityEngine;
using LitJson;


class AdPlugin
{
private static AndroidJavaObject _plugin;


static AdPlugin()
{
if (Application.platform == RuntimePlatform.Android)
{
using (var pluginClass = new AndroidJavaClass("com.plugin.unity.Admob"))
{
_plugin = pluginClass.CallStatic<AndroidJavaObject>("getInstance");
}
}
}


public static void SetAds()
{
if (Application.platform == RuntimePlatform.Android)
{
JsonData data = new JsonData();


data["banner_id"] = "";//在admob后台添加广告后可以看到


data["intertitial_id"] = "";//在admob后台添加广告后可以看到


_plugin.Call("StartAdmob", JsonMapper.ToJson(data));
}
}


//插页广告
public static void ShowIntertitialAds()
{
if (Application.platform == RuntimePlatform.Android)
{
_plugin.Call("ShowIntertitial");
}
}


public static void LoadIntertitialAds()
{
if (Application.platform == RuntimePlatform.Android)
{
_plugin.Call("LoadIntertitial");
}
}


//横幅广告
public static void ShowBannerAds(bool show)
{
if (Application.platform == RuntimePlatform.Android)
{
if (show)
{
_plugin.Call("ShowBanner");
}
else
{
_plugin.Call("HideBanner");
}
}
}


public static void LoadBannerAds()
{
if (Application.platform == RuntimePlatform.Android)
{
_plugin.Call("LoadBanner");
}
}
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP