对广告进行配置
json.txt
{
"native": [
{
"pid": "104223",//home_top_native
"fbids": [
"1810353095906320_1810353745906255"
]
},
{
"pid": "104226",//back_native
"fbids": [
"1810353095906320_1810354152572881"
]
},
{
"pid": "104230",//home_button_native
"fbids": [
"1810353095906320_1810354562572840"
]
},
{
"pid": "104231",//share_native
"fbids": [
"1810353095906320_1810354562572840"
]
}
],
"offerwall": [
{
"pid": "14640",
"fbids": ""
}
]
}
在androidminifest.xml里配置信息
本地推荐:
minifest.xml
<activity
android:name="com.baiwang.lib.recapp.RecommendAppActivity_Dynamic"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
dap: json文件,
<!--Umeng配置-->
<activity
android:name="com.umeng.fb.ConversationActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
<activity
android:name="com.umeng.fb.ContactActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
<meta-data
android:name="UMENG_APPKEY"
android:value="5407ce5dfd98c589c3029b76" >
</meta-data>
<!—using推送-->
<meta-data
android:name="UMENG_MESSAGE_SECRET"
android:value="b1ab80d6a1f38aad1391106cf2947989" />
<meta-data
android:name="UMENG_CHANNEL"
android:value="Umeng" />
<!--Dap配置-->
<meta-data
android:name="app_license"
android:value="484b9a079aa18f8089eda204c6a235fe" />
<receiver android:name="com.duapps.ad.base.PackageAddReceiver" >
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
<activity android:name="com.duapps.ad.offerwall.ui.OfferWallAct" />
<provider
android:name="com.duapps.ad.stats.DuAdCacheProvider"
android:authorities="com.baiwang.stylephotocollage.DuAdCacheProvider"
android:exported="false" >
</provider>
<activity
android:name="com.facebook.ads.InterstitialAdActivity"
android:configChanges="keyboardHidden|orientation|screenSize" />
<!--kika配置-->
<receiver android:name="com.kika.pluto.filter.KoalaAppInstallReceiver" >
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
<meta-data
android:name="AGENT_APPKEY"
android:value="3822899077e9df0858fc1c9b811c0fbb" />
<meta-data
android:name="AGENT_SECRET"
android:value="f642f07e67c50f157fa18111bfd7c4e2" />
在application中配置:
DuAdNetwork.init(this, getConfigJSON(getApplicationContext()));
KoalaADAgent.init(getApplicationContext());
1.在需要添加广告的位置编辑布局文件
<!-- 广告 -->
<FrameLayout
android:id="@+id/ly_home_nativead"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:layout_marginTop="50dp"
android:visibility="invisible">
<com.baiwang.squareblend.view.viewDuAdNative
android:id="@+id/du_native"
android:layout_width="match_parent"
android:layout_height="270dp"
android:layout_marginBottom="3dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"/>
<ImageView
android:id="@+id/btn_native_delete"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="top|right"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp"
android:src="@drawable/img_ad_delete"
android:visibility="invisible"/>
</FrameLayout>
<!-- 广告结束 -->
首页广告:在onstart中:
//广告
try
{
String strtime = PreferencesUtil.get(HomeActivity.this,
"Collage_Native","Native_Click_time");//访问过广告,,viewDuAdNative跳转回调保存的参数
if(strtime ==null)
{
strtime ="0";
}
curtime=System.currentTimeMillis();
lasttime = Long.parseLong(strtime);
//多久显示一次
if (curtime -lasttime > 3600 * 3 * 1000) {
initNative();
}
}
catch(Exceptione)
{
e.printStackTrace();
}
//initNative()代码
protectedvoid initNative() {
ly_home_nativead = findViewById(R.id.ly_home_nativead);
btn_native_delete = (ImageView) findViewById(R.id.btn_native_delete);
btn_native_delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ly_home_nativead.setVisibility(View.INVISIBLE);
try {
if (Build.VERSION.SDK_INT > 14 &&mNative !=null)
mNative.unRegisterNative();
} catch (Exceptione) {
} catch (Throwablet) {
}
}
});
try {
mNative = (viewDuAdNative) findViewById(R.id.du_native);
//mNative.getLayoutParams().height = ScreenInfoUtil.dip2px(this, 300);//和btImageIcon保持一致
//mNative.getLayoutParams().height = btImageIcon.getHeight();
//mNative.getLayoutParams().height = img_icon.getHeight();
//mNative.getLayoutParams().height = ScreenInfoUtil.dip2px(this, adHeight);
mNative.setOnNativeLoadAllCompleteListener(new OnNativeLoadAllCompleteListener() {
@Override
public void onNativeLoaded() {
ly_home_nativead.setVisibility(View.VISIBLE);
btn_native_delete.setVisibility(View.VISIBLE);
}
});
if (Build.VERSION.SDK_INT > 14) {
mNative.setPID(HOME_PID);
mNative.loadNativeAd();
} else {
mNative.setVisibility(View.INVISIBLE);
}
} catch (Exceptione) {
} catch (Throwablet) {
}
}
2.按钮广告的加载
按钮广告引用说明
- 检出或更新DUAd_SDK、KikaAd_SDK、LibDAP_AD、LibADManager;
- 在工程中引用LibADManager;
- 在首页代码中引用:以VideoCreator为例,可参看其代码,跟据项目需要做更改,有问题及时和我沟通
//自有按钮广告缓存目录
private StringmRecFolder ="";
//推荐按钮图片View
private ImageViewimg_rec;
//推荐按钮文字View
private TextViewtxt_rec;
//推荐按钮layout
private Viewly_rec;
//dap按钮广告管理器
ButtonAdManagerInterfacedapAdManagerInterface;
//kika按钮广告管理器
ButtonAdManagerInterfacekikaAdManagerInterface;
//自有按钮广告管理器
ButtonAdManagerInterfacerecAdManagerInterface;
//当前按钮显示广告
ButtonAdManagerInterfacecurrentAdManagerInterface;
//加载按钮广告
publicvoid initIconButtonAd()
{
//实例化dap按钮广告
dapAdManagerInterface =new DapButtonAdManager(this, 31775);
//实例化kika按钮广告
kikaAdManagerInterface =new KikaButtonAdManager(this,"home_button_native");
//实例化自有按钮广告
recAdManagerInterface =new RecButtonAdManager(this,mRecFolder);
try {
//加载dap广告
dapAdManagerInterface.loadAd();
//设置dap广告显示之后轮播kika广告
dapAdManagerInterface.setNextButtonAdManager(kikaAdManagerInterface);
//加载kika广告
kikaAdManagerInterface.loadAd();
//设置kika广告显示之后轮播自有广告
kikaAdManagerInterface.setNextButtonAdManager(recAdManagerInterface);
//设置kika加载完成后回调函数
kikaAdManagerInterface.setButtonAdLoadSuccessListener(new ButtonAdLoadSuccessListener() {
@Override
publicvoid onSuccess() {
//TODO Auto-generated method stub
showIconButtonAd();
}
});
//加载自有广告
recAdManagerInterface.loadAd();
//设置自有广告显示之后轮播dap广告
recAdManagerInterface.setNextButtonAdManager(dapAdManagerInterface);
} catch (Exception e) {
//TODO: handle exception
e.printStackTrace();
}
}
//显示按钮广告
privatevoid showIconButtonAd()
{
//设置默认按钮广告为kika广告
if(currentAdManagerInterface ==null)
{
currentAdManagerInterface =kikaAdManagerInterface;
}
//判断是否有加载成功广告
if(dapAdManagerInterface.getIsSuccess()
|| kikaAdManagerInterface.getIsSuccess()
|| recAdManagerInterface.getIsSuccess())
{
//如果当前按钮广告未加载成功则循环
while (!currentAdManagerInterface.getIsSuccess()) {
currentAdManagerInterface =currentAdManagerInterface.getNextButtonAdManager();
}
//显示当前按钮广告
currentAdManagerInterface.showAd(this,img_rec,ly_rec,txt_rec);
//将当前广告置为下一次将轮播广告
currentAdManagerInterface =currentAdManagerInterface.getNextButtonAdManager();
}
}
@Override
protectedvoid onCreate(Bundle savedInstanceState)
{
....
img_rec = (ImageView)findViewById(R.id.img_mirror);
txt_rec = (TextView)findViewById(R.id.txt_rec);
ly_rec = findViewById(R.id.img_mirror);;
//设置按钮推荐自有广告缓存目录
File dir = new File(Environment.getExternalStorageDirectory().getPath()+"/.videocreator/rec_button");
booleanbln =false;
if (!dir.exists()) {
bln = dir.mkdirs();
}
mRecFolder = dir.getPath();
//加载按钮广告列表
initIconButtonAd();
}
@Override
protectedvoid onResume()
{
....
try {
RecData_Dynamic2.loadRecData("android_VideoCreator",this);
// //检查是否有最新按钮推荐,并下载配置信息及按钮图片
RecButtonData_Dynamic.loadRecData("android_VideoCreator",this);
//设置缓存目录
RecButtonData_Dynamic.setFolder(mRecFolder);
// //加载推荐按钮信息
recAdManagerInterface.loadAd();
showIconButtonAd();
} catch (Exception e) {
}
}
@Override
protectedvoid onDestroy() {
super.onDestroy();
//销毁加载的按钮广告图片内存
try {
img_rec.setImageBitmap(null);
dapAdManagerInterface.dispose();
kikaAdManagerInterface.dispose();
recAdManagerInterface.dispose();
} catch (Exception e) {
//TODO: handle exception
}
}
- https://github.com/leotse90/KoalaAdDemoApp KikaDemo和SDK说明
- http://ad.duapps.com/zh_CN/support/dap SDK说明
4.回退广告
系统返回键
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
dialogCancel();
}
returnfalse;
}
自带返回键
findViewById(R.id.btBack).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dialogCancel();
}
protected void dialogCancel() {
AlertDialog.Builder builder = new Builder(this);
builder.setMessage(R.string.dialog_message);
builder.setTitle(R.string.dialog_prompt);
builder.setPositiveButton(R.string.dialog_ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mainView.setImageBitmap(null);
finish();
dialog.dismiss();
}
});
builder.setNegativeButton(R.string.dialog_cancel,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}