App變現之Admob原生廣告,admob廣告變現App變現之Admob原生廣告Admob介紹admob是Google的移動廣告平臺,集成admob的SDK到APP中,獲取廣告數據展示出來,可以給我們帶來廣告收益。對于大流量的應用,如果可以在合適的位置,無縫的加入廣告,可以帶來可觀的廣告收入,這已經是一個公開的成功商業......
Admob介紹
admob是Google的移動廣告平臺,集成admob的SDK到APP中,獲取廣告數據展示出來,可以給我們帶來廣告收益。對于大流量的應用,如果可以在合適的位置,無縫的加入廣告,可以帶來可觀的廣告收入,這已經是一個公開的成功商業模式。有心的小伙伴可以往這個方向嘗試,財務自由指日可待哦!
先上張admob原生廣告的效果圖,這是一張內容類型的原生廣告。
Admob廣告類型
Admob有哪幾種展現形式的廣告呢?
Banner(橫幅廣告):最常見的,就是平時看到的屏幕的底部或者頂部有一個橫條的廣告條。
Interstitial(插頁廣告):類似啟動頁廣告,整個屏幕顯示一副廣告。
Rewarded Video(應用內購買廣告):這個玩國外游戲經常會看到,你看完一個廣告視頻,游戲會獎勵你一些道具或者其他的什么(這個獎勵是一個整數,在AdMob中可以設置數量,用戶看完視頻會得到這個數量的獎勵,比如獎勵3瓶藥水,3條生命等)。
Native(原生廣告):這個是體驗最好的廣告形式,和原生app無縫對接,也許你已經見過一個列表的某個item內容展示的是廣告,就是這種形式。
Admob廣告接入入門
下面就以Admob的原生廣告為例,帶大家入門一下,怎么集成使用。
預備條件
Target Android API level 14 or higher
Admob官網注冊添加應用和廣告單元
添加依賴
dependencies{
implementationcom.google.android.gms:playservicesads:17.0.0
}
配置AndroidManifest.xml
lt;manifestgt;
lt;applicationgt;
lt;!Sample AdMob App ID:caapppub3940256099942544~3347511713gt;
lt;metadata
android:name=com.google.android.gms.ads.APPLICATION_ID
android:value=[ADMOB_APP_ID]/gt;
lt;/applicationgt;
lt;/manifestgt;
注意:對于Google Mobile Ads SDK version 17.0.0,這一步是必須的
初始化SDK
在廣告加載之前,需要向MobileAds傳入app id初始化SDK,這里要注意,需要在admob上注冊應用后才有app id哦。
下面代碼是在Activity中初始化的,最理想的時機是在應用啟動的時候。
package...
import...
import com.google.android.gms.ads.MobileAds;
public class MainActivity extends AppCompatActivity{
...
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Sample AdMob app ID:caapppub3940256099942544~3347511713
MobileAds.initialize(this,YOUR_ADMOB_APP_ID);
}
...
}
加載廣告
首先需要構建AdLoader,在Builder中傳入廣告單元id,不同廣告位對應不同的廣告單元。
AdLoader.Builder builder=new AdLoader.Builder(this,ADMOB_AD_UNIT_ID);
builder.forAppInstallAd(new NativeAppInstallAd.OnAppInstallAdLoadedListener(){
Override
public void onAppInstallAdLoaded(NativeAppInstallAd nativeAd){
FrameLayout frameLayout=
findViewById(R.id.fl_adplaceholder);
NativeAppInstallAdView adView=(NativeAppInstallAdView)getLayoutInflater()
.inflate(R.layout.ad_app_install,null);
populateUnifiedNativeAdView(nativeAd,adView);
frameLayout.removeAllViews();
rameLayout.addView(adView);
}
});
AdLoader adLoader=builder.withAdListener(new AdListener(){
Override
public void onAdFailedToLoad(int errorCode){
Toast.makeText(SingleAdActivity.this,Failed to load native ad:
+errorCode,Toast.LENGTH_SHORT).show();
}
}).build();
加載單條廣告:
adLoader.loadAd(new AdRequest.Builder().build());
如果需要加載多條廣告,admob也提供了加載多條廣告的方法,如下:
adLoader.loadAds(new AdRequest.Builder().build(),3);
不過有一定限制,獲取多條廣告的上限為5,你可以傳入參數5,但最多返回5條廣告,也有可能小于5條。每收到一條廣告,onAppInstallAdLoaded會回調一次。
如果獲取多條廣告,怎么知道數據加載完畢呢?可以通過isLoading()判斷廣告是否全部加載完畢:
final AdLoader adLoader=new AdLoader.Builder(this,caapppub3940256099942544/2247696110)
.forAppInstallAd(new NativeAppInstallAd.OnAppInstallAdLoadedListener(){
Override
public void onAppInstallAdLoaded(NativeAppInstallAd ad){
...
//some code that displays the app install ad.
...
if(adLoader.isLoading()){
//The AdLoader is still loading ads.
//Expect more adLoaded or onAdFailedToLoad callbacks.
}else{
//The AdLoader has finished loading ads.
}
}
}).build();
ad view class
從上面一路看下來,留心的小伙伴可能已經注意到了NativeAppInstallAdView這個類,從命名看,這個類應該是屬于SDK里面的,是用來做什么的呢?
這個類確實來自SDK,先要從原生廣告類型說起,Admob原生廣告有兩種類型,NativeAppInstallAd和NativeContentAd:
·NativeAppInstallAd是應用安裝類型的廣告,對應到View是NativeAppInstallAdView
·NativeContentAd是內容類型的廣告,對應到View是NativeContentAdView
上面的兩個View class,我們在使用時,必須把它們作為廣告布局的父View,這是必須要遵守的使用規范。
如下是以NativeContentAdView作為父View的廣告布局:
lt;com.google.android.gms.ads.formats.NativeContentAdView
xmlns:android=https://schemas.android.com/apk/res/android
android:layout_width=match_parent
android:layout_height=wrap_contentgt;
lt;LinearLayout
android:orientation=vertical
...gt;
lt;LinearLayout
android:orientation=horizontal
...gt;
lt;TextView
android:id= +id/contentad_headline
.../gt;
lt;/LinearLayoutgt;
//Other assets such as image or media view,call to action,etc follow.
...
lt;/LinearLayoutgt;
lt;/com.google.android.gms.ads.formats.NativeContentAdViewgt;
Admob原生廣告官方demo
這里給兩個官方放在github上的demo,大家可以參考看看:
googleads demo:https://github.com/googleads/googleadsmobileandroidexamples
googlecodelabs demo:https://github.com/googlecodelabs/admobnativeadvancedfeed
注意事項
·廣告位添加后,可能需要等上2個小時才能使用
·不依賴gms,Admob廣告在國內也可以使用,但是試了一下,不翻墻好像也加載不出來
他山之石
分享幾個從別人文章看來的幾條廣告運營的經驗:
1.首屏一定要展示廣告。這主要是因為產品首屏的曝光量大,但廣告要展示得當。
2.多賬戶分擔風險。因為用一個賬戶創建所有的ad unit/placement時,雖然接入的工作量小,但風險過于集中了,哪天賬戶被封了就欲哭無淚了;因此建議同時創建3.多個廣告賬戶,在產品里面輪流使用,很多時候違規也只是其中的一個,哪怕被封損失也小。
4.多平臺互為備份。例如Facebook/Admob兩個平臺互為備份,當Facebook廣告請求不到或加載不了時,則展示Admob廣告,這樣能最大化保證廣告展現。
5.最大化廣告刷新機制。例如用戶刷新內容列表,哪怕內容沒更新,把列表里面的廣告重新請求并換一批。
6.廣告預加載機制。不用等到用戶請求時再去向廣告平臺發起請求,可以提前請求到數據,需要的時候隨時可用,這樣可以保證流暢體驗。
選擇合適的廣告形式。畢竟有banner廣告,插屏廣告,原生廣告等那么多樣式,選擇廣告形式的時候最好能跟當前廣告位結合起來。
參考資料
https://developers.google.com/admob/android/quickstart
https://developers.google.com/admob/android/native
https://firebase.google.com/docs/admob/
https://github.com/googleads/googleadsmobileandroidexamples
https://github.com/googlecodelabs/admobnativeadvancedfeed
https://www.jianshu.com/p/4dbe269500b8
特別聲明:以上文章內容僅代表作者本人觀點,不代表ESG跨境電商觀點或立場。如有關于作品內容、版權或其它問題請于作品發表后的30日內與ESG跨境電商聯系。
平臺顧問
微信掃一掃
馬上聯系在線顧問
小程序
ESG跨境小程序
手機入駐更便捷
返回頂部