广告
返回顶部
首页 > 资讯 > 移动开发 >Android 集成FaceBook广告
  • 893
分享到

Android 集成FaceBook广告

Android 2022-06-06 14:06:15 893人浏览 独家记忆
摘要

FaceBook广告文档地址:https://developers.facebook.com/docs/audience-network/guides/ad-fORMats/i

FaceBook广告文档地址:https://developers.facebook.com/docs/audience-network/guides/ad-fORMats/interstitial/Android

打开文档里面类别是在这样:

包含横幅广告,插页广告,视频广告等等,但是前期的集成工作都是相同的,如下:(在集成前要创建应用,获取你要集成的类型广告的ID~,这个自己在Facebook后台创建获取就好)

1,配置gradle

项目级build.gradle:


repositories {
    //添加
    mavenCentral()
}

app级别build.gradle:


dependencies {
//facebook
implementation 'com.android.support:support-annotations:28.0.0'
implementation 'com.facebook.android:audience-network-sdk:5.+'
}
2,初始化sdk

public class YourApplication extends Application {
    ...
    @Override
    public void onCreate() {
        super.onCreate();
        // Initialize the Audience Network SDK
        AudienceNetworkAds.initialize(this);       
    }
    ...
}

这里讲我使用过的插页广告和横幅广告两种:

3,广告类型 插页广告:(我需求是点击按钮播放,在点击的时候才调show(),如果是需要加载完成就播放,直接在onAdLoaded()里面调show()就好)

private var interstitialAd: InterstitialAd? = null

private var mNeedShow: Boolean = false//使用全局变量,当点击按钮广告没有加载完成时设置为true,当加载完成,值为true时,直接调用show()

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
//初始化插页广告
initInsertAd()
//广告设置监听
interstitialAd?.setAdListener(this)//我是让类实现InterstitialAdListener,重写里面的方法
interstitialAd?.loadAd()
}

private fun initInsertAd() {
    if (interstitialAd != null) {
        interstitialAd?.destroy()
        interstitialAd = null
    }
    interstitialAd = InterstitialAd(OHProApplication.mContext, “YOUR_PLACEMENT_ID”)//YOUR_PLACEMENT_ID:广告id
}

//重写的方法


override fun onAdClicked(p0: Ad?) {
    OLogsProUtil.d("Interstitial ad clicked!")
}
//加载错误调用的,可以在此处获取错误码
override fun onError(p0: Ad?, adError: AdError) {
    OLogsProUtil.d("Ad failed to load: "+adError.getErrorMessage())
}
//加载完成调用的
override fun onAdLoaded(ad: Ad?) {
    if (interstitialAd ==null) {
        return
    }
    if (mNeedShow){//
        dismissProLoading()//进度条消失
        interstitialAd?.show()//插页广告播放调用的方法
    }
}

//广告开始播放调用的
override fun onInterstitialDisplayed(p0: Ad?) {
    OLogsProUtil.d("Interstitial ad displayed.")
}
//广告页面消失调用的
override fun onInterstitialDismissed(ad: Ad?) {
    OLogsProUtil.d("Interstitial ad dismissed.")
}
override fun onLoggingImpression(p0: Ad?) {
    OLogsProUtil.d("Interstitial ad impression logged!")
}

//我的点击按钮播放的方法


override fun onClick(orn: View?) {
    when (orn?.id) {   
     R.id.myfragment_bottomad_iv -> {
        if(interstitialAd!!.isAdLoaded){
            interstitialAd!!.show()
        }else{
           //如果没有加载完成则展示进度条
            showProLoading()//我的进度条方法
            mNeedShow = true
        }
    }
}
---------------------------------分割线--------------------------------------- 横幅广告:(根据文档发现,Facebook的横幅广告不像 谷歌广告可以直接选择adSize或者自定义尺寸,而是需要自定义布局,然后调用addview的形式添加)

横幅广告需要在展示的位置添加一个布局(这个布局一会用来盛放你自定义的布局):



然后再回到类里处理:


private var nativeAdLayout: NativeAdLayout? = null

private var nativeBannerAd: NativeBannerAd? = null

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

//获取到这个布局
nativeAdLayout = findViewById(R.id.native_banner_ad_container)//横幅广告
initBannerAd()
nativeBannerAd?.setAdListener(this)
nativeBannerAd?.loadAd()
}

private fun initBannerAd() {
    nativeBannerAd = NativeBannerAd(activity, “YOUR_PLACEMENT_ID”)//YOUR_PLACEMENT_ID:广告id
}

//这个方法是在广告加载完成的onAdLoaded()方法里面调用
private fun inflateAd(nativeBannerAd: NativeBannerAd) {
    adView = LayoutInflater.from(activity).inflate(
        R.layout.native_banner_ad_unit,//小条目的样式,下方
        nativeAdLayout,
        false
    ) as LinearLayout
    if (!isAdViewAdded) {
        isAdViewAdded = true
        nativeAdLayout?.addView(adView)
    }
    nativeBannerAd.unreGISterView()
    // Add the AdChoices icon
    val adChoicesContainer = adView?.findViewById(R.id.ad_choices_container)
    val adOptionsView = AdOptionsView(activity, nativeBannerAd, nativeAdLayout)
    adChoicesContainer?.removeAllViews()
    adChoicesContainer?.addView(adOptionsView, 0)
    // Create native UI using the ad metadata.
    val nativeAdTitle = adView?.findViewById(R.id.native_ad_title)
    val nativeAdSocialContext = adView?.findViewById(R.id.native_ad_social_context)
    val sponsoredLabel = adView?.findViewById(R.id.native_ad_sponsored_label)
    val nativeAdIconView = adView?.findViewById(R.id.native_icon_view)
    val nativeAdCallToAction = adView?.findViewById

//定义布局native_banner_ad_unit,横幅广告的样式,这也是文当中的官方样式


        

//要实现的方法
override fun onAdClicked(p0: Ad?) {
    OLogsProUtil.d("Native ad clicked!")
}
override fun onMediaDownloaded(p0: Ad?) {
    OLogsProUtil.d("Native ad finished downloading all assets")
}
override fun onError(p0: Ad?, adError: AdError) {
    OLogsProUtil.d("Ad failed to load: "+adError.getErrorMessage())
}
override fun onAdLoaded(ad: Ad?) {
    if (nativeBannerAd == null) {
        return
    }
    if (nativeBannerAd == ad) {
        inflateAd(nativeBannerAd!!)
    }
}
override fun onLoggingImpression(p0: Ad?) {
    OLogsProUtil.d("Native ad impression logged!")
}
测试的时候要在后台配置Facebook账号,邮箱,AAID。

AAID如何获取,下方连接:

Https://mp.csdn.net/console/editor/html/105957303

没有配置测试账号的话,加载广告可能会报:1001,no Fill ~~

配置完后如果展示不出来,检查是否翻墙,检查facebook登陆的账号是否正确,或者可以重启手机试试。

效果如图:

横幅:

插页(点击按钮展示):

liuhaha1015 原创文章 42获赞 15访问量 5万+ 关注 私信 展开阅读全文
作者:liuhaha1015


--结束END--

本文标题: Android 集成FaceBook广告

本文链接: https://www.lsjlt.com/news/29831.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作