《android studio》android接入topon广告平台

2020/12/23 10.38

这里是官网的教程: topon接入文档

关于简介以及说明什么的请在官网查看,能点进来说明已经了解了TopOn是什么

目录

以下是个人理解以及流程

1、进入TopOn SDK的打包系统下载,旋转指定频道的广告,需要和后台对应

2、查看build.gradle,检查自己的 ,laya打包的native 版本可能会很低,这里需要修改正常版本

3、 在APP 路径下 新建 topon_libs 和 topon_res,将 下载的SDK包文件的 libs放入topon_libs,res放入topon_res

4、配置 android Manifest 权限

1、申请权限

2、测试调用是否成功

3、SDK初始化

4、各个广告初始化,下面的广告id都存放在 AdConstant中

4.1、banner广告 新建 bannerAd

         4.2 插屏广告  新建 InterstitialAd

         4.3 信息流广告(这个有两个类要新建 NativeDemoRender 和 NativeInfoAd)

         4.4 开屏广告(开屏广告为了防止开局白屏的情况,我的做法是新建一个界面来显示 开屏广告,等加载完毕后再显示,设置了先加载后显示的模式)

         4.5 视频广告 新建 VideoRewardAd.java

总结:以上就介绍了如何加入Topon的完整步骤,有遗漏部分请留言,博主看到都会及时回复的

 


 

以下是个人理解以及流程

1、进入TopOn SDK的打包系统下载,旋转指定频道的广告,需要和后台对应

下面是下载后的文件

下面开始接入SDK

2、查看build.gradle,检查自己的 ,laya打包的native 版本可能会很低,这里需要修改正常版本

3、 在APP 路径下 新建 topon_libs 和 topon_res,将 下载的SDK包文件的 libs放入topon_libs,res放入topon_res

然后在build.grade中引入自定义的路径

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation(name: 'sdklib', ext: 'aar')
    api fileTree(include: ['*.jar','*.aar'], dir: 'topon_libs') // 引入这个
    testImplementation 'junit:junit:4.12'
    implementation 'com.android.support:appcompat-v7:28.0.0'

    implementation files('libs/oaid_sdk_1.0.23.aar') // 这个是获得oaid的 ,可不配置
//    api 'com.android.support:appcompat-v7:28.0.0'
}

dependencies 按照我提供的这个图配置即可 

4、配置 android Manifest 权限

打开SDK包可看见这些东西

将 权限 user-permission 拷贝至你的项目的 androidManifest中,重复的删除

完整拷贝值拷贝至你的项目的 androidManifest中

配置完后要SYNC一下,这样才能读到SDK中的类

 

以上基本配置已完毕,下面是介绍如何使用SDK了

1、申请权限

在mainActivity中添加申请权限代码,这里的  Manifest单词要注意,后面接的权限,100000可以自定义数字,主要是后续可判断玩家是否授权

    public void requestPermission() {
        Log.d("申请权限", "申请权限");
        ActivityCompat.requestPermissions(JSBridge.mMainActivity, new String[]{Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 100000);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        Log.d("申请权限", "onRequestPermissionsResult: " + requestCode);
        switch (requestCode) {
            case 100000: {
                AdConstant.init(); // topon初始化
                startActivity(new Intent(this, SplashAdShowActivity.class)); // 开屏广告开始加载
                break;
            }
            default:
                break;
        }
    }
 

2、测试调用是否成功

 调用ATSDK.integrationChecking(applicationContext);在下方的 logcat中过滤 anythink的Tag查看日志,显示下图且 status是 success表示成功,其他的缺什么补什么即可

3、SDK初始化

ATSDK.init(getApplicationContext(), TopOnAppID, TopOnAppKey);

    public static void init(){
        ATSDK.init(JSBridge.mMainActivity.getApplicationContext(),AdConstant.APPID,AdConstant.APPKEY);
//        ATSDK.setNetworkLogDebug(true);
//        Log.d("INITAD","申请权限");
//        ActivityCompat.requestPermissions(JSBridge.mMainActivity,new String[]{Manifest.permission.READ_PHONE_STATE,Manifest.permission.WRITE_EXTERNAL_STORAGE},100000);
        // 视频初始化
        VideoRewardAd.getInstance().init();
        // 插屏广告初始化
        InterstitialAd.getInstance().init();
        BannerAd.getInstance().init();
        // 信息流广告初始化
        NativeInfoAd.getInstance().init();
    }

4、各个广告初始化,下面的广告id都存放在 AdConstant中

public class ATAdKeyConst {
    public static  String KEY_USER_ID = "userId";
    public static String KEY_USER_VIDEO_DATA = "user_video_data";
}

4.1、banner广告 新建 bannerAd

package demo.advertising;


import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;

import com.anythink.banner.api.ATBannerListener;
import com.anythink.banner.api.ATBannerView;
import com.anythink.core.api.ATAdInfo;
import com.anythink.core.api.AdError;

import demo.JSBridge;

public class BannerAd {

    private static BannerAd _bannerAd = null;
    private  static String TAG = "BannerAd";
    public static BannerAd getInstance() {
        if (BannerAd._bannerAd == null) {
            _bannerAd = new BannerAd();
        }
        return _bannerAd;
    }

    private ATBannerView mBannerView = null;
    private String[] ids = new String[]{
            AdConstant.bannerid_chuanshanjia
    };
    private int curid_index = 0;

    public void init() {
        Log.d("新的", "创建新的banner");
        // 每次调用刷新一下banner内容
        mBannerView = new ATBannerView(JSBridge.mMainActivity);
        mBannerView.setPlacementId(this.ids[this.curid_index]);
//        mBannerView.setUnitId("b5baca45138428");
        mBannerView.setBannerAdListener(new ATBannerListener() {
            @Override
            public void onBannerLoaded() {
                Log.d(TAG, "onBannerLoaded: ");
            }

            @Override
            public void onBannerFailed(AdError adError) {
                Log.d(TAG, "onBannerFailed: ");
            }

            @Override
            public void onBannerClicked(ATAdInfo atAdInfo) {
                Log.d(TAG, "onBannerClicked: ");
                BannerAd.getInstance().hide();
            }

            @Override
            public void onBannerShow(ATAdInfo atAdInfo) {
                Log.d(TAG, "onBannerShow: ");
            }

            @Override
            public void onBannerClose(ATAdInfo atAdInfo) {
                Log.d(TAG, "onBannerClose ");
//                if (mBannerView != null && mBannerView.getParent() != null) {
//                    ((ViewGroup) mBannerView.getParent()).removeView(mBannerView);
//                }
                BannerAd.getInstance().hide();
            }

            @Override
            public void onBannerAutoRefreshed(ATAdInfo atAdInfo) {

            }

            @Override
            public void onBannerAutoRefreshFail(AdError adError) {

            }
        });
        mBannerView.loadAd();
    }

    public void show() {
        if (mBannerView == null) {
            this.init();
        }
        int width = JSBridge.mMainActivity.getResources().getDisplayMetrics().widthPixels;//定一个宽度值,比如屏幕宽度
        int height = 250;
        Log.d("banner广告宽度", height + "");
        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(width, height);
        params.gravity = Gravity.BOTTOM;
        mBannerView.setVisibility(View.VISIBLE);
        if(mBannerView.getParent() == null){
            JSBridge.mMainActivity.addContentView(mBannerView, params);
        }
    }

    public void hide() {
        if (this.mBannerView != null && mBannerView.getParent() != null) {
//            ((ViewGroup)mBannerView.getParent()).removeView(mBannerView);
            mBannerView.setVisibility(View.INVISIBLE);
            mBannerView.loadAd();
        }
    }

    /**
     * 跳到下一个bannerId
     */
    private void jumpToNextBannerId() {
        this.curid_index++;
        if (this.curid_index >= this.ids.length) {
            this.curid_index = 0;
        }
    }
}

4.2 插屏广告  新建 InterstitialAd

package demo.advertising;


import android.util.Log;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.FrameLayout;

import com.anythink.banner.api.ATBannerListener;
import com.anythink.banner.api.ATBannerView;
import com.anythink.core.api.ATAdInfo;
import com.anythink.core.api.AdError;
import com.anythink.interstitial.api.ATInterstitial;
import com.anythink.interstitial.api.ATInterstitialListener;

import java.util.HashMap;
import java.util.Map;

import demo.JSBridge;

public class InterstitialAd {
    private static String TAG = "InterstitialAdActivity";

    private static InterstitialAd _instance = null;
    public static InterstitialAd getInstance() {
        if (InterstitialAd._instance == null) {
            _instance = new InterstitialAd();
        }
        return _instance;
    }

    ATInterstitial mInterstitialAd;
    private String[] ids = new String[]{
            AdConstant.interstitial_chuanshanjia
    };
    private int curid_index = 0;

    public void init() {
        mInterstitialAd = new ATInterstitial(JSBridge.mMainActivity, ids[curid_index]);
        addSetting();
        Log.i(TAG, "开始加载插屏广告");
        mInterstitialAd.setAdListener(new ATInterstitialListener() {
            @Override
            public void onInterstitialAdLoaded() {
                Log.i(TAG, "onInterstitialAdLoaded");
//                Toast.makeText(InterstitialAdActivity.this, "onInterstitialAdLoaded", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onInterstitialAdLoadFail(AdError adError) {
                Log.i(TAG, "onInterstitialAdLoadFail:\n" + adError.printStackTrace());
//                Toast.makeText(InterstitialAdActivity.this, "onInterstitialAdLoadFail:" + adError.printStackTrace(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onInterstitialAdClicked(ATAdInfo entity) {
                Log.i(TAG, "onInterstitialAdClicked:\n" + entity.toString());
//                Toast.makeText(InterstitialAdActivity.this, "onInterstitialAdClicked", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onInterstitialAdShow(ATAdInfo entity) {
                Log.i(TAG, "onInterstitialAdShow:\n" + entity.toString());
//                Toast.makeText(InterstitialAdActivity.this, "onInterstitialAdShow", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onInterstitialAdClose(ATAdInfo entity) {
                Log.i(TAG, "onInterstitialAdClose:\n" + entity.toString());
                mInterstitialAd.load();
//                InterstitialAd.getInstance().init();
//                Toast.makeText(InterstitialAdActivity.this, "onInterstitialAdClose", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onInterstitialAdVideoStart(ATAdInfo entity) {
                Log.i(TAG, "onInterstitialAdVideoStart:\n" + entity.toString());
//                Toast.makeText(InterstitialAdActivity.this, "onInterstitialAdVideoStart", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onInterstitialAdVideoEnd(ATAdInfo entity) {
                Log.i(TAG, "onInterstitialAdVideoEnd:\n" + entity.toString());
//                Toast.makeText(InterstitialAdActivity.this, "onInterstitialAdVideoEnd", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onInterstitialAdVideoError(AdError adError) {
                Log.i(TAG, "onInterstitialAdVideoError:\n" + adError.printStackTrace());
//                Toast.makeText(InterstitialAdActivity.this, "onInterstitialAdVideoError", Toast.LENGTH_SHORT).show();
            }
        });
        mInterstitialAd.load();
    }
    public void show(){
        Log.i(TAG, "显示插屏广告");
        if(mInterstitialAd == null){
            this.init();
        }
        mInterstitialAd.show(JSBridge.mMainActivity);
        mInterstitialAd.load();
    }

    private void addSetting() {

    }
    /**
     * 跳到下一个bannerId
     */
    private void jumpToNextBannerId() {
        this.curid_index++;
        if (this.curid_index >= this.ids.length) {
            this.curid_index = 0;
        }
    }
}

 4.3 信息流广告(这个有两个类要新建 NativeDemoRender 和 NativeInfoAd)

package demo.advertising;

import android.content.Context;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;

import com.anythink.nativead.api.ATNativeAdRenderer;
import com.anythink.nativead.api.ATNativeImageView;
import com.anythink.nativead.unitgroup.api.CustomNativeAd;
import com.game.plane.R;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Z on 2020/12/1.
 */

public class NativeDemoRender implements ATNativeAdRenderer<CustomNativeAd> {

    Context mContext;
    List<View> mClickView = new ArrayList<>();

    public NativeDemoRender(Context context) {
        mContext = context;
    }

    View mDevelopView;

    int mNetworkType;

    @Override
    public View createView(Context context, int networkType) {
        if (mDevelopView == null) {
            mDevelopView = LayoutInflater.from(context).inflate(R.layout.native_ad_item, null);
        }
        mNetworkType = networkType;
        if (mDevelopView.getParent() != null) {
            ((ViewGroup) mDevelopView.getParent()).removeView(mDevelopView);
        }
        return mDevelopView;
    }

    @Override
    public void renderAdView(View view, CustomNativeAd ad) {
        mClickView.clear();
        TextView titleView = (TextView) view.findViewById(R.id.native_ad_title);
        TextView descView = (TextView) view.findViewById(R.id.native_ad_desc);
        TextView ctaView = (TextView) view.findViewById(R.id.native_ad_install_btn);
        TextView adFromView = (TextView) view.findViewById(R.id.native_ad_from);
        FrameLayout contentArea = (FrameLayout) view.findViewById(R.id.native_ad_content_image_area);
        FrameLayout iconArea = (FrameLayout) view.findViewById(R.id.native_ad_image);
        final ATNativeImageView logoView = (ATNativeImageView) view.findViewById(R.id.native_ad_logo);

        titleView.setText("");
        descView.setText("");
        ctaView.setText("");
        adFromView.setText("");
        titleView.setText("");
        contentArea.removeAllViews();
        iconArea.removeAllViews();
        logoView.setImageDrawable(null);

        View mediaView = ad.getAdMediaView(contentArea, contentArea.getWidth());

        if (ad.isNativeExpress()) {//是 个性化模板
            titleView.setVisibility(View.GONE);
            descView.setVisibility(View.GONE);
            ctaView.setVisibility(View.GONE);
            logoView.setVisibility(View.GONE);
            iconArea.setVisibility(View.GONE);
            if (mediaView.getParent() != null) {
                ((ViewGroup) mediaView.getParent()).removeView(mediaView);
            }

            contentArea.addView(mediaView, new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT));
            return;
        }


        titleView.setVisibility(View.VISIBLE);
        descView.setVisibility(View.VISIBLE);
        ctaView.setVisibility(View.VISIBLE);
        logoView.setVisibility(View.VISIBLE);
        iconArea.setVisibility(View.VISIBLE);


        View adiconView = ad.getAdIconView();


        final ATNativeImageView iconView = new ATNativeImageView(mContext);
        if (adiconView == null) {
            iconArea.addView(iconView);
            iconView.setImage(ad.getIconImageUrl());
            mClickView.add(iconView);
        } else {
            iconArea.addView(adiconView);
        }


        if (!TextUtils.isEmpty(ad.getAdChoiceIconUrl())) {
            logoView.setImage(ad.getAdChoiceIconUrl());
        } else {
//            logoView.setImageResource(R.drawable.ad_logo);
        }


        if (mediaView != null) {
            if (mediaView.getParent() != null) {
                ((ViewGroup) mediaView.getParent()).removeView(mediaView);
            }

            contentArea.addView(mediaView, new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT));

        } else {

            ATNativeImageView imageView = new ATNativeImageView(mContext);
            imageView.setImage(ad.getMainImageUrl());

            ViewGroup.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
            imageView.setLayoutParams(params);
            contentArea.addView(imageView, params);

            mClickView.add(imageView);
        }

        titleView.setText(ad.getTitle());
        descView.setText(ad.getDescriptionText());
        ctaView.setText(ad.getCallToActionText());
        if (!TextUtils.isEmpty(ad.getAdFrom())) {
            adFromView.setText(ad.getAdFrom() != null ? ad.getAdFrom() : "");
            adFromView.setVisibility(View.VISIBLE);
        } else {
            adFromView.setVisibility(View.GONE);
        }

        mClickView.add(titleView);
        mClickView.add(descView);
        mClickView.add(ctaView);

    }

    public List<View> getClickView() {
        return mClickView;
    }
}
package demo.advertising;

import android.app.Activity;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.Toast;

import com.anythink.core.api.ATAdConst;
import com.anythink.core.api.ATAdInfo;
import com.anythink.core.api.AdError;
import com.anythink.nativead.api.ATNative;
import com.anythink.nativead.api.ATNativeAdView;
import com.anythink.nativead.api.ATNativeDislikeListener;
import com.anythink.nativead.api.ATNativeEventListener;
import com.anythink.nativead.api.ATNativeNetworkListener;
import com.anythink.nativead.api.NativeAd;

import java.util.HashMap;
import java.util.Map;

import demo.JSBridge;

public class NativeInfoAd {
    // 信息流广告
    public ATNative atNative;
    public ATNativeAdView anyThinkNativeAdView;
    public NativeDemoRender anyThinkRender = null;

    public Activity main;
    public String TAG = "NativeInfoAd";
    public int containerHeight = 0;

    private static NativeInfoAd _instance = null;

    public static NativeInfoAd getInstance() {
        if (NativeInfoAd._instance == null) {
            _instance = new NativeInfoAd();
        }
        return _instance;
    }

    public void init() {
        main = JSBridge.mMainActivity;
        int padding = dip2px(10);
        containerHeight = dip2px(340);
        final int adViewWidth = main.getResources().getDisplayMetrics().widthPixels - 2 * padding;
        final int adViewHeight = containerHeight - 2 * padding;

        anyThinkRender = new NativeDemoRender(main);
        atNative = new ATNative(main, AdConstant.adinfo_chuanshanjia, new ATNativeNetworkListener() {
            @Override
            public void onNativeAdLoaded() {
                Log.d(TAG, "load success");
            }

            @Override
            public void onNativeAdLoadFail(AdError adError) {
                Log.d(TAG, "load fail");
            }
        });

        Map<String, Object> localMap = new HashMap<>();

        // since v5.6.4
        localMap.put(ATAdConst.KEY.AD_WIDTH, adViewWidth);
        localMap.put(ATAdConst.KEY.AD_HEIGHT, adViewHeight);
        atNative.setLocalExtra(localMap);

        if(anyThinkNativeAdView == null){
            anyThinkNativeAdView = new ATNativeAdView(main);
        }

        anyThinkNativeAdView.setPadding(padding,padding,padding,0);
//        anyThinkNativeAdView.setVisibility(View.GONE);
//        main.addContentView(anyThinkNativeAdView,new FrameLayout.LayoutParams(main.getResources().getDisplayMetrics().widthPixels, containerHeight));
        loadNativeAd();
    }

    public void loadNativeAd() {
        if (anyThinkNativeAdView != null && anyThinkNativeAdView.getParent() == null) {
            FrameLayout.LayoutParams param = new FrameLayout.LayoutParams(main.getResources().getDisplayMetrics().widthPixels, containerHeight);
            param.gravity = Gravity.BOTTOM;
            main.addContentView(anyThinkNativeAdView, param);
        }
        atNative.makeAdRequest();
    }

    public void show() {
        NativeAd nativeAd = atNative.getNativeAd();
        if(nativeAd != null){
            nativeAd.setDislikeCallbackListener(new ATNativeDislikeListener() {
                @Override
                public void onAdCloseButtonClick(ATNativeAdView atNativeAdView, ATAdInfo atAdInfo) {
                    Log.i(TAG, "native ad onAdCloseButtonClick");
                    if (atNativeAdView.getParent() != null) {
                        ((ViewGroup) atNativeAdView.getParent()).removeView(atNativeAdView);
                    }
                }
            });
            try {
                nativeAd.renderAdView(anyThinkNativeAdView,anyThinkRender);
            }catch (Exception e){

            }
            anyThinkNativeAdView.setVisibility(View.VISIBLE);
            nativeAd.prepare(anyThinkNativeAdView,anyThinkRender.getClickView(),null);
        }
        this.loadNativeAd();
    }

    public void hide(){
        if(anyThinkNativeAdView != null){
            anyThinkNativeAdView.setVisibility(View.INVISIBLE);
        }
    }

    public int dip2px(float dipValue) {
        float scale = JSBridge.mMainActivity.getResources().getDisplayMetrics().density;
        return (int) (dipValue * scale + 0.5f);
    }
}

4.4 开屏广告(开屏广告为了防止开局白屏的情况,我的做法是新建一个界面来显示 开屏广告,等加载完毕后再显示,设置了先加载后显示的模式)

res/layout下新建  splash_ad_show.xml

内容:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff">


    <FrameLayout
        android:id="@+id/splash_ad_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></FrameLayout>

    <TextView
        android:id="@+id/splash_ad_skip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_margin="10dp"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:textColor="#ffffff"
        android:textSize="16dp"
        android:visibility="gone"></TextView>

    <LinearLayout
        android:id="@+id/logo_area"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        android:padding="20dp"
        android:orientation="horizontal"
        android:gravity="center"
        android:layout_below="@id/splash_ad_container"
        >

        <ImageView
            android:id="@+id/app_logo"
            android:layout_width="500dp"
            android:layout_height="700dp"
            android:src="@drawable/layabox" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:textSize="18dp"
            android:text="@string/app_name"
            android:textColor="#000000"/>
    </LinearLayout>
</RelativeLayout>

androidManifest.xml中添加如下代码

        <activity
            android:name="demo.advertising.SplashAdShowActivity"
            android:configChanges="keyboardHidden|orientation|keyboard|smallestScreenSize|screenSize|screenLayout"
            android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" />

新建 SplashAdShowActivity

package demo.advertising;

import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;

import com.anythink.core.api.ATAdInfo;
import com.anythink.core.api.ATMediationRequestInfo;
import com.anythink.core.api.AdError;
import com.anythink.splashad.api.ATSplashAd;
import com.anythink.splashad.api.ATSplashAdListener;
import com.game.plane.R;

import demo.JSBridge;
import demo.MainActivity;

public class SplashAdShowActivity extends FragmentActivity implements ATSplashAdListener {
    ATSplashAd splashAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash_ad_show);
        String unitId = AdConstant.splash_chuanshanjia;
        FrameLayout container = findViewById(R.id.splash_ad_container);
        ViewGroup.LayoutParams layoutParams = container.getLayoutParams();
        layoutParams.width = getResources().getDisplayMetrics().widthPixels;
        layoutParams.height = (int) (getResources().getDisplayMetrics().heightPixels);
        ATMediationRequestInfo atMediationRequestInfo = null;
        splashAd = new ATSplashAd(this, container, unitId, atMediationRequestInfo, this);

        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        startActivity(intent);    // 跳转到 mainActivity
    }

    @Override
    public void onAdLoaded() {
        Log.d("SplashAdShowActivity", "onAdLoaded---------");
        Intent intent = new Intent(JSBridge.mMainActivity, SplashAdShowActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        startActivity(intent);
    }

    @Override
    public void onNoAdError(AdError adError) {
        Log.i("SplashAdShowActivity", "onNoAdError---------:" + adError.printStackTrace());
        jumpToMainActivity();
    }

    @Override
    public void onAdShow(ATAdInfo entity) {
        Log.i("SplashAdShowActivity", "onAdShow:\n" + entity.toString());
//        if (entity.getNetworkFirmId() == BaiduATConst.NETWORK_FIRM_ID) {
//            /**
//             * Only for Baidu:
//             * The display time and the skipped advertising style can be configured through the Baidu's backstage(Recommend)
//             * , and can be customized and modified in your application.
//             */
//            skipViewSetting(); //If setting skipview by Baidu's backstage, you should not run this method.
//        }
    }

    private void skipViewSetting() {
        final TextView skipView = findViewById(R.id.splash_ad_skip);
        CountDownTimer countDownTimer = new CountDownTimer(5000L, 1000L) {
            @Override
            public void onTick(long millisUntilFinished) {
                skipView.setText((millisUntilFinished / 1000) + " | 跳过");
            }

            @Override
            public void onFinish() {
                jumpToMainActivity();
            }
        };

        countDownTimer.start();
        skipView.setVisibility(View.VISIBLE);

        skipView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                jumpToMainActivity();
            }
        });
    }

    @Override
    public void onAdClick(ATAdInfo entity) {
        Log.i("SplashAdShowActivity", "onAdClick:\n" + entity.toString());
    }

    @Override
    public void onAdDismiss(ATAdInfo entity) {
        Log.i("SplashAdShowActivity", "onAdDismiss:\n" + entity.toString());
        jumpToMainActivity();
    }

    @Override
    public void onAdTick(long millisUtilFinished) {
        Log.i("SplashAdShowActivity", "onAdTick---------:" + millisUtilFinished);
    }

    boolean hasHandleJump = false;

    public void jumpToMainActivity() {
        if (!hasHandleJump) {
            hasHandleJump = true;
            finish();
//            Toast.makeText(this, "start your MainActivity.", Toast.LENGTH_SHORT).show();
        }

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (splashAd != null) {
            splashAd.onDestory();
        }

    }
}

4.5 视频广告 新建 VideoRewardAd.java

package demo.advertising;


import android.util.Log;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.FrameLayout;

import com.anythink.banner.api.ATBannerListener;
import com.anythink.core.api.ATAdInfo;
import com.anythink.core.api.AdError;
import com.anythink.rewardvideo.api.ATRewardVideoAd;
import com.anythink.rewardvideo.api.ATRewardVideoListener;
import com.qq.e.ads.nativ.MediaView;

import java.util.HashMap;
import java.util.Map;

import demo.JSBridge;
import demo.message.MessageManager;
import demo.message.NetCmd;
import demo.message.bean.MessageData;

public class VideoRewardAd {

    private static VideoRewardAd _bannerAd = null;
    private String TAG = "VideoRewardAd";

    public static VideoRewardAd getInstance() {
        if (VideoRewardAd._bannerAd == null) {
            _bannerAd = new VideoRewardAd();
        }
        return _bannerAd;
    }

    private ATRewardVideoAd mRewardVideoAd = null;
    private String[] ids = new String[]{
            AdConstant.reward_videoid_chuanshanjia
    };
    private int curid_index = 0;

    private MessageData cur_data = null;

    public void init(){
        Log.d(TAG, "创建新的视频");
        // 每次调用刷新一下banner内容
        mRewardVideoAd = new ATRewardVideoAd(JSBridge.mMainActivity,ids[curid_index]);
        Map<String, Object> localMap = new HashMap<>();
//        String userid = "test_userid_001";
//        String userdata = "test_userdata_001";
//        localMap.put(ATAdKeyConst.KEY_USER_ID,userid);
//        localMap.put(ATAdKeyConst.KEY_USER_VIDEO_DATA,userdata);
//        mRewardVideoAd.setLocalExtra(localMap);

        mRewardVideoAd.setAdListener(new ATRewardVideoListener() {
            @Override
            public void onRewardedVideoAdLoaded() {
                Log.i(TAG, "onRewardedVideoAdLoaded");
//                Toast.makeText(RewardVideoAdActivity.this, "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onRewardedVideoAdFailed(AdError errorCode) {
                Log.i(TAG, "onRewardedVideoAdFailed error:" + errorCode.printStackTrace());
//                Toast.makeText(RewardVideoAdActivity.this, "onRewardedVideoAdFailed:" + errorCode.printStackTrace(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onRewardedVideoAdPlayStart(ATAdInfo entity) {
                Log.i(TAG, "onRewardedVideoAdPlayStart:\n" + entity.toString());
//                Toast.makeText(RewardVideoAdActivity.this, "onRewardedVideoAdPlayStart", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onRewardedVideoAdPlayEnd(ATAdInfo entity) {
                Log.i(TAG, "onRewardedVideoAdPlayEnd:\n" + entity.toString());
//                Toast.makeText(RewardVideoAdActivity.this, "onRewardedVideoAdPlayEnd", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onRewardedVideoAdPlayFailed(AdError errorCode, ATAdInfo entity) {
                Log.i(TAG, "onRewardedVideoAdPlayFailed error:" + errorCode.printStackTrace());
//                Toast.makeText(RewardVideoAdActivity.this, "onRewardedVideoAdPlayFailed:" + errorCode.printStackTrace(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onRewardedVideoAdClosed(ATAdInfo entity) {
                Log.i(TAG, "onRewardedVideoAdClosed:\n" + entity.toString() );
                if(cur_data != null){
                    MessageData data = new MessageData(NetCmd.MSG_SHOW_VIDEO,1,cur_data.param);
                    data.param.code = 1;
                    MessageManager.getInstance().sendTojs(data);
                }
                mRewardVideoAd.load();
//                Toast.makeText(RewardVideoAdActivity.this, "onRewardedVideoAdClosed", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onRewardedVideoAdPlayClicked(ATAdInfo entity) {
                Log.i(TAG, "onRewardedVideoAdPlayClicked:\n" + entity.toString());
//                Toast.makeText(RewardVideoAdActivity.this, "onRewardedVideoAdPlayClicked", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onReward(ATAdInfo entity) {
                Log.e(TAG, "onReward:\n" + entity.toString() );

            }
        });
        mRewardVideoAd.load();
    }
    public void show(MessageData data) {
        if (mRewardVideoAd.isAdReady()){
            this.cur_data = data;
            mRewardVideoAd.show(JSBridge.mMainActivity,ids[this.curid_index]);
            mRewardVideoAd.load();
        } else {
            mRewardVideoAd.load();
//            mRewardVideoAd.show(JSBridge.mMainActivity);
        }
    }

    /**
     * 跳到下一个bannerId
     */
    private void jumpToNextBannerId() {
        this.curid_index++;
        if (this.curid_index >= this.ids.length) {
            this.curid_index = 0;
        }
    }
}

 

总结:以上就介绍了如何加入Topon的完整步骤,有遗漏部分请留言,博主看到都会及时回复的

 

 

 

 

 

 

 

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
Android Studio是一款用于开发Android应用程序的集成开发环境(IDE)。接入穿山甲广告可以通过以下步骤完成: 1. 在项目的build.gradle文件中添加穿山甲广告SDK的依赖: ``` dependencies { implementation 'com.bytedance.sdk:openadsdk:x.x.x' // 替换为最新版本号 } ``` 2. 在AndroidManifest.xml文件中添加穿山甲广告SDK的权限和配置: ```xml <manifest> <!-- 添加网络权限 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 添加穿山甲广告SDK的AppID和权限 --> <application> <meta-data android:name="PANGLE_APP_ID" android:value="YOUR_APP_ID" /> <!-- 替换为你的AppID --> <!-- 添加穿山甲广告SDK的Activity --> <activity android:name="com.bytedance.sdk.openadsdk.activity.TTLandingPageActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> </application> </manifest> ``` 3. 在需要展示广告的Activity中,初始化穿山甲广告SDK: ```java import com.bytedance.sdk.openadsdk.TTAdSdk; import com.bytedance.sdk.openadsdk.TTAdConfig; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; private static final String APP_ID = "YOUR_APP_ID"; // 替换为你的AppID @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化穿山甲广告SDK TTAdSdk.init(this, new TTAdConfig.Builder() .appId(APP_ID) .build()); } } ``` 4. 在需要展示广告的位置,加载并展示穿山甲广告: ```java import com.bytedance.sdk.openadsdk.TTAdNative; import com.bytedance.sdk.openadsdk.TTAdNative.NativeExpressAdListener; import com.bytedance.sdk.openadsdk.TTAdNative.NativeExpressAd; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; private static final String AD_SLOT_ID = "YOUR_AD_SLOT_ID"; // 替换为你的广告位ID private TTAdNative mTTAdNative; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化穿山甲广告SDK TTAdSdk.init(this, new TTAdConfig.Builder() .appId(APP_ID) .build()); // 创建TTAdNative对象 mTTAdNative = TTAdSdk.getAdManager().createAdNative(this); // 加载并展示广告 mTTAdNative.loadNativeExpressAd(AD_SLOT_ID, new NativeExpressAdListener() { @Override public void onError(int code, String message) { Log.e(TAG, "onError: " + code + ", " + message); } @Override public void onNativeExpressAdLoad(List<NativeExpressAd> ads) { if (ads != null && ads.size() > 0) { NativeExpressAd ad = ads.get(0); ad.render(); // 渲染广告 // 将广告展示到指定的View中 ViewGroup container = findViewById(R.id.ad_container); container.addView(ad.getExpressAdView()); } } }); } } ``` 以上是使用Android Studio编写接入穿山甲广告的基本步骤。你可以根据自己的需求和穿山甲广告SDK的文档进一步调整和优化广告的展示效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值