Unity3D使用腾讯广点通广告

发表于2018-04-28
评论0 5.1k浏览
目前,游戏开发平台有很多,本篇文章主要介绍Unity3d开发时如何给Android游戏加广点通广告。

1.下载广点通SDK

在 流量合作>我的媒体下>新建媒体 :即我们的APP

创建适合你游戏/app的广告位。广告位类型主要有:Banner(广告条)、插屏、开屏、应用墙,这个需要根据自己的游戏自行选择,如下图:

然后下载SDK:

2. 新建Android项目

2.1打开eclipse,新建一个android项目,如下图:

包名很重要,请务必改为自己游戏的包名,一般包名的格式为:
com.xxx.yyy
“xxx”一般指公司名简写或团队名,
“yyy”一般指项目代号,可以和项目名称(Application Name)不一样

2.2打开AndroidManifest.xml,拷贝以下内容到咱们新建项目的AndroidManifest.xml中:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
 <application
        android:allowBackup="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name"
       >
        <!-- targetSdkVersion >=23 时引用support.v4-->
      <provider
           android:name="android.support.v4.content.FileProvider"
           android:authorities="com.gdttest.gdt.fileprovider" <!-- 修改为自己的包名-->
           android:exported="false"
           android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/gdt_file_path" />
      </provider>
      <!-- 声明SDK所需要的组件 -->
      <service
          android:name="com.qq.e.comm.DownloadService"
          android:exported="false"/>
      <!-- 请开发者注意字母的大小写,ADActivity,而不是AdActivity -->
      <activity
          android:name="com.qq.e.ads.ADActivity"
          android:configChanges="keyboard|keyboardHidden|orientation|screenSize"/>
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait"  <!--unity 以要设置为portrait,否则会闪退 -->
            android:configChanges="keyboard|orientation|keyboardHidden|screenSize|screenLayout"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

2.3 将广点通res文件下的xml文件拷贝到自己的项目包下:

2.4将广点通代码中的Constants.java文件拷贝到自己项目的包里面,将APPId与广告位Id分别替换成自己在广点通网站上申请的媒体Id和广告位Id,在测试的时候就用广点通Demo 的ID,自己申请的只有审核通过才会显示:
public class Constants {
  //public static final String APPID = "1101152570"; //测试用
  //public static final String BannerPosID = "9079537218417626401"; //测试用
  public static final String APPID = "自己的媒体Id";
  public static final String BannerPosID = "自己的广告条Id";
}

2.5将广点通Demo代码中lib下的GDTUnionSDK.4.15.559.min.jar包,拷贝到自己项目的lib下。另外,还需要导入 Unity3d的classes.jar文件 ,该Jar文件可在 Unity3d安装目录/Editor/Data/PlaybackEngines/AndroidPlayer/Variations/mono or il2cpp/Development or Release/Classes 路径下找到,自己项目的lib下,如下图:
右键选中这两个包,选择Build Path–》Add to Build Path,将这两个包加到引用里,这样咱们的代码就可以加广点通的广告,以及与Unity3d通讯了。

2.6打开MainActivity.java,添加与Unity3d的通信接口,以及Unity3d调用广告的方法:
import com.qq.e.ads.banner.ADSize;
import com.qq.e.ads.banner.AbstractBannerADListener;
import com.qq.e.ads.banner.BannerView;
import com.qq.e.comm.util.AdError;
import com.unity3d.player.UnityPlayerActivity;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.WindowManager;
public class MainActivity extends UnityPlayerActivity  {
    private final static int SHOW_BANNER_AD = 103;
    private final static int HIDE_BANNER_AD = 105;
    private static Handler sHandler;
    private BannerView bannerAD;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        initHandler();
    }
    private void initHandler() {
        sHandler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                switch (msg.what) {
                case SHOW_BANNER_AD:
                    internalShowBannerAd();
                    break;
                case HIDE_BANNER_AD:
                    internalHideBannerAd();
                    break;
                default:
                    break;
                }
            }
        };
    }
    private void internalShowBannerAd() {
        try{
            this.bannerAD = new BannerView(this, ADSize.BANNER, Constants.APPID, Constants.BannerPosID);    
            bannerAD.setRefresh(15);
            this.bannerAD.setADListener(new AbstractBannerADListener() {
                @Override
                public void onADReceiv() {
                    // TODO Auto-generated method stub
                }
                @Override
                public void onNoAD(AdError error) {
                }
            }
            );
            WindowManager mWindowManager = (WindowManager) MainActivity.this.getSystemService(Context.WINDOW_SERVICE);
            WindowManager.LayoutParams mWmParams = new WindowManager.LayoutParams();
            mWmParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
            mWmParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
            mWmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
            mWmParams.alpha = 1.0F;
            mWmParams.format = 1;
            mWmParams.gravity = Gravity.BOTTOM|Gravity.CENTER;
            mWindowManager.addView(bannerAD, mWmParams);
            bannerAD.loadAD();
        }catch(Exception ex){
        }
    }
    private void internalHideBannerAd() 
    {
        if(bannerAD!=null)
        {
            bannerAD.destroy();
        }
    }
    public void hideBannerAd()
    {
        sendMsgToHandler(HIDE_BANNER_AD);
    }
    public void showBannerAd() {
        sendMsgToHandler(SHOW_BANNER_AD);
    }
    private synchronized void sendMsgToHandler(int type) {
        Message msg = sHandler.obtainMessage();
        msg.what = type;
        msg.sendToTarget();
    }
}

3.将Android项目作为资源导出

—-》先选中咱们的Android项目
—-》选择project–》Clean

—-》再选择project–》Build Project
(注意:做以上两步操作时,请取消掉Build Automatically的勾选状态)
—-》选择Window>Preferences>General>Wordspace ,修改Text file encoding 为UTF-8,如下图:

进入到咱们的Android项目目录下的bin/classes, 新建名称为BuildJar.txt文件,添加 jar cvf gdt.jar ./com ,保存后修改后缀名为。cmd格式的文件。删除BuildConfig.class和R开头的文件。
删除前:

删除后:

然后双击BuildJar.cmd文件,生成我们需要的Jar文件。

4.Unity3d导入Android项目资源

5.Unity3d调用Android项目资源实现广告

修改unity 配置:Package Name 修改为Android 包名

修改屏幕方向:
来自:https://blog.csdn.net/u010812661/article/details/79426153

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

0个评论