Android接入騰訊廣告平臺廣點通

ljwx9527發表於2019-02-13

廣點通文件
不知道註冊成功之後是不是有更詳細的文件,暫未知, 我自己註冊的還未通過
找到的教程
這個有點過時, 裡面一些用法跟我現在的不一樣, 不過很詳細

1 jar包

我的jar包版本為GDTUnionSDK.4.18.569.min.jar, 應該是註冊後從官網下載的

2 許可權

<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" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
複製程式碼

3 Manifest

<activity
    android:name="com.qq.e.ads.ADActivity"
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize" />
<service
    android:name="com.qq.e.comm.DownloadService"
    android:exported="false" />
複製程式碼

我們之前的老專案沒有加這兩個, 但是廣告正常顯示, 遷移到新專案後無法顯示, 加上這兩個就正常了

MultiProcessFlag.setMultiProcess(true)
複製程式碼

這個我也不知道幹嘛的

4 開屏廣告

new SplashAD(options.mActivity, options.mViewGroup, options.mView, options.mAppId, options.mAdId,
       new SplashADListener() {
           @Override
           public void onADDismissed() {
               listener.onADDismissed();
           }

           @Override
           public void onNoAD(AdError error) {
               listener.onNoAD(new AdError(error.getErrorCode(), "GDT"+error.getErrorMsg()));
           }

           @Override
           public void onADPresent() {
               listener.onADPresent();
           }

           @Override
           public void onADClicked() {
               LogUtil.e("onADClicked");
           }

           @Override
           public void onADTick(long l) {
               listener.onADTick(l);
           }

           @Override
           public void onADExposure() {
               listener.onADExposure();
           }
       }, options.mShowTime);
複製程式碼
  • 引數1: 當前activity
  • 引數2: 廣告容器,我們用的FramLayout
  • 引數3: 跳過按鈕
  • 引數4,5: appidadid //後臺建立應用時生成
  • 引數6: 結果回撥
  • 引數7: 廣告展示時間(單位毫秒)

5 原生廣告

private NativeExpressAD mAd;
private NativeExpressADView mAdView;
mAd = new NativeExpressAD(options.mActivity, new ADSize(ADSize.FULL_WIDTH, ADSize.AUTO_HEIGHT),
        options.mAppId, options.mAdId, new NativeExpressAD.NativeExpressADListener() {

    @Override
    public void onNoAD(AdError error) {
        listener.onNoAD(new com.qmsh.adlibrary.common.AdError(error.getErrorCode(), error.getErrorMsg()));
    }

    @Override
    public void onADLoaded(List<NativeExpressADView> list) {
        LogUtil.e("onADLoaded");
        if (list == null || list.size() <= 0) {
            listener.onNoAD(new com.qmsh.adlibrary.common.AdError(0, "沒返回廣告"));
            return;
        }
        if (mAdView != null) {
            mAdView.destroy();
        }
        mAdView = list.get(0);
        // 廣告可見才會產生曝光,否則將無法產生收益。
        options.mViewGroup.removeAllViews();
        options.mViewGroup.addView(mAdView);
        mAdView.render();
    }

    @Override
    public void onRenderFail(NativeExpressADView nativeExpressADView) {
        LogUtil.e("onRenderFail");
    }

    @Override
    public void onRenderSuccess(NativeExpressADView nativeExpressADView) {
        LogUtil.e("onRenderSuccess");
    }

    @Override
    public void onADExposure(NativeExpressADView nativeExpressADView) {
        listener.onADExposure();
    }

    @Override
    public void onADClicked(NativeExpressADView nativeExpressADView) {
        LogUtil.e("onADClicked");
    }

    @Override
    public void onADClosed(NativeExpressADView nativeExpressADView) {
        LogUtil.e("onADClosed");
        if (mAd != null) {
            mAd.loadAD(1);
        }
    }

    @Override
    public void onADLeftApplication(NativeExpressADView nativeExpressADView) {
        LogUtil.e("onADLeftApplication");
    }

    @Override
    public void onADOpenOverlay(NativeExpressADView nativeExpressADView) {
        LogUtil.e("onADOpenOverlay");
    }

    @Override
    public void onADCloseOverlay(NativeExpressADView nativeExpressADView) {
        LogUtil.e("onADCloseOverlay");
    }
});
// 注意:如果您在聯盟平臺上新建原生模板廣告位時,選擇了“是”支援視訊,那麼可以進行個性化設定(可選)
if (options.isVideo) //是否是視訊由後臺返回
    mAd.setVideoOption(new VideoOption.Builder()
    .setAutoPlayPolicy(VideoOption.AutoPlayPolicy.WIFI)//WIFI環境下可以自動播放視訊
    .setAutoPlayMuted(true) // 自動播放時為靜音
    .build());
mAd.loadAD(1); //一次拉取的廣告條數:範圍1-30
複製程式碼
  • 引數1: 當前activity
  • 引數2: 廣告位大小
  • 引數3,4: appidadid
  • 引數5: 結果回撥

Option配置

這個是我們自己建立的類, 方便封裝廣告引數

public class AdLoadOptions {
    @NonNull
    public Activity mActivity;
    @NonNull
    public String mAppId;//應用id
    @NonNull
    public String mAdId;//廣告id
    @NonNull
    public ViewGroup mViewGroup;//裝載廣告的容器
    public int mShowTime = 5000;//顯示時間(預設5s)
    public boolean isVideo;//是否是視訊廣告
    public View mView;   //騰訊廣告用
    public Class mTargetClazz;//瑞獅開屏需要用到廣告
}
複製程式碼

開屏廣告佈局樣例

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <import type="android.view.View"/>

        <variable
            name="onClick"
            type="android.view.View.OnClickListener" />

    </data>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <RelativeLayout
            android:id="@+id/lyt_splash"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/white">

            <ImageView
                android:id="@+id/logo"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true" />

            <FrameLayout
                android:id="@+id/adv"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_above="@+id/logo" />


            <ImageView
                android:id="@+id/image"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_above="@+id/logo"
                android:onClick="@{onClick}"
                android:scaleType="centerCrop" />

            <ezy.ui.view.RoundButton
                android:id="@+id/btn_skip"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentRight="true"
                android:layout_marginBottom="26dp"
                android:layout_marginRight="20dp"
                android:onClick="@{onClick}"
                android:paddingBottom="2dp"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:paddingTop="2dp"
                android:text="跳過"
                android:textColor="#FF666666"
                android:textSize="@dimen/text_size_normal"
                app:btnCornerRadius="12dp"
                app:btnSolidColor="#fff"
                app:btnStrokeColor="#FFBEBEBE"
                app:btnStrokeWidth="1dp" />
        </RelativeLayout>
    </FrameLayout>
</layout>
複製程式碼

相關文章