976015755@qq.com
976015755@qq.com
  • 发布:2019-06-03 17:30
  • 更新:2019-09-12 14:01
  • 阅读:1811

dcloud集成腾讯广告联盟(优量汇)

分类:HTML5+

摸索了几天终于采取一个不那么好的办法搞定了dcloud集成腾讯广告联盟,特记录下来,希望能给新手朋友一些帮助,安卓我只带过团队,自己也是第一次实际操作,老鸟请忽略。
1、离线打包
2、集成腾讯广告联盟的SDK
3、新增一个启动页
4、新增banner2.0的activity
5、用h5通过native调用activity


1、离线打包
这个官方有详细的介绍了
http://ask.dcloud.net.cn/article/508
说一下我踩过的几个坑
1-1、Module not specified
导入project,不是直接导入,而是先随意新建一个project,然后导入module,否则运行的时候会报错

1-2、Android Studio报错Manifest merger failed with multiple errors
这个提示是因为AndroidManifest.xml中的配置和build.gradle里的配置不一样,手动将build.gradle里的applicationId改成和AndroidManifest.xml的一致就可以正常运行了


2、集成腾讯广告联盟的SDK
2-1、将腾讯广告联盟的jar文件拷贝到项目根目录的libs目录下,
2-2、然后修改build.gradle,dependencies的最后一行加上implementation files('libs/GDTSDK.tbs.4.30.906.jar')(GDTSDK.tbs.4.30.906.jar是刚拷贝的jar的名字)
2-3、修改AndroidMnifest.xml(腾讯广告联盟的文档有描述),就不详细写了


3、新增一个启动activity
3-1、新建一个activity作为启动activity

3-2、启动activity参照腾讯广告联盟的DEMO就可以了,代码略作修改,这里加了一个限制,开屏广告一个小时只展示一次
protected void onCreate(@Nullable Bundle savedInstanceState) {
Long curDate = new Date().getTime();//当前时间
//获取上次时间
SharedPreferences sp = getSharedPreferences("sp_name", Context.MODE_PRIVATE);
String lastSpADTime = sp.getString("lastSpADTime", "0");
Long lastSpADTimeLong = Long.parseLong(lastSpADTime);
if(curDate - lastSpADTimeLong > 3600000) {//超过一个小时则再次显示广告
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
container = (ViewGroup) this.findViewById(R.id.splash_container);
skipView = (TextView) findViewById(R.id.skip_view);
splashHolder = (ImageView) findViewById(R.id.splash_holder);
splashAD = new SplashAD(this, container, skipView, Constants.APPID, getPosId(), this, 0);
//写入上次时间
SharedPreferences.Editor editor = sp.edit();
editor.putString("lastSpADTime", curDate.toString());
editor.apply();
} else {
this.onADDismissed();
}
}
private String getPosId() {
return Constants.SplashPosID;
}
public void onADDismissed() {
this.finish();
//主要改动是在这里,开屏广告展示完成后跳转到dcloud的启动activity
Intent intent = new Intent();
intent.setClass(SplashActivity.this, PandoraEntry.class);
startActivity(intent);
}
3-3、修改AndroidManifest.xml,设置SplashActivity为启动activity
<activity
android:name="com.example.H5PlusPlugin.SplashActivity"
android:configChanges="orientation|keyboardHidden|keyboard|navigation"
android:label="@string/app_name"
android:launchMode="singleTask"
android:hardwareAccelerated="true"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
android:screenOrientation="user"
android:windowSoftInputMode="adjustResize"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="io.dcloud.PandoraEntry"
android:configChanges="orientation|keyboardHidden|keyboard|navigation"
android:label="@string/app_name"
android:launchMode="singleTask"
android:hardwareAccelerated="true"
android:theme="@style/TranslucentTheme"
android:screenOrientation="user"
android:windowSoftInputMode="adjustResize" >
</activity>
到这里就完成了开屏广告了


4、新增banner2.0的activity
这里是通过一个取巧的办法实现的,腾讯广告联盟的广告要在activity里展示,而我们又修改不了dcloud的activity,所以就新建一个Dialog样式的activity,来展示在dcloud的activity上了
4-1、新建一个activity,先把DEMO里的UnifiedBannerActivity里面的代码拷过来(千万不要拷贝BannerActivity里的,我没看清楚banner2.0广告,结果浪费了几个小时调试......),然后修改
public static BannerActivity instance = null;//用于在H5里关闭该activity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_banner);
getIAD().loadAD();
}
private String getPosID() {
return Constants.UNIFIED_INTERSTITIAL_ID_ONLY_SMALL;
}
public static void h5Finish() {
BannerActivity.instance.finish();
}
activity_unified_banner代码如下(显示在底部的banner)
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="1000dp"
android:layout_height="55dp" >

<FrameLayout  
    android:id="@+id/bannerContainer"  
    android:layout_width="match_parent"  
    android:layout_height="150px"  
    android:layout_alignParentBottom="true" >  
</FrameLayout>  

</FrameLayout>
BannerActivity的样式代码如下
<resources>
<style name="Theme.Transparent" parent="android:Theme.Dialog">
<item name="android:windowFrame">@null</item><!-- 边框 -->
<item name="android:windowIsTranslucent">true</item><!--此对话框的背景-->
<item name="android:windowBackground">@drawable/bakground_circle</item><!--对话框是否透明-->
<item name="android:windowContentOverlay">@null</item><!--对话框是否有遮盖-->
<item name="android:windowNoTitle">true</item><!--对话框无标题-->
<item name="android:windowIsFloating">true</item> <!--对话框是否浮动-->
<item name="android:backgroundDimEnabled">false</item><!--是否允许对话框的背景变暗-->
</style>
</resources>


5、用h5通过native调用activity
5-1、打开activity
//加载banner广告
var main = plus.android.runtimeMainActivity();
var Intent = plus.android.importClass("android.content.Intent");
var intent = new Intent();
intent.setClassName(main, 'com.xx.xx.BannerActivity');//这里是Activity的路径
main.startActivity(intent);
//关闭banner广告
plus.android.invoke("com.xx.xx.BannerActivity", "h5Finish");


其他
插屏广告比较好插入,和banner广告一样就可以了,原生广告怎么搞还没想到办法,希望有能搞定的朋友可以补充一下。
附上项目实际应用的下载地址http://www.hongxun88.cn/download

0 关注 分享

要回复文章请先登录注册

哎丫丫

哎丫丫

ios版的弄了吗·
2019-09-12 14:01