Unity3D使用腾讯广点通广告
发表于2018-04-28
评论0
5.4k浏览
目前,游戏开发平台有很多,本篇文章主要介绍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中:
android:allowBackup="true" android:icon="@drawable/icon" android:label="@string/app_name" > android:name="android.support.v4.content.FileProvider" android:authorities="com.gdttest.gdt.fileprovider" android:exported="false" android:grantUriPermissions="true"> android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/gdt_file_path" /> android:name="com.qq.e.comm.DownloadService" android:exported="false"/> android:name="com.qq.e.ads.ADActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize"/> android:name=".MainActivity" android:label="@string/app_name" android:screenOrientation="portrait" android:configChanges="keyboard|orientation|keyboardHidden|screenSize|screenLayout" >
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
如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引
标签:
AndroidJavaScriptXMLUnity接口Mono