使用 Admob 在 android 中实施原生广告?可能吗?
Implementing native ads in android using Admob? is it possible?
我正在尝试在我的 android 应用程序中实施原生广告。但我只想使用 admob 来做到这一点。我搜索了很多解决方案,但找不到确切的解决方案。
我知道可以使用 MoPub。
我想做的是:
在列表项内显示广告,这意味着 ListView
/RecyclerView
项之一可以是一个广告,如下图所示。
我找到了一些链接和参考资料,但这并不能解释原生广告的正确实施。
Link 1:原生广告概述
Link 2 : DFP Android 指南 > 定位
Link 3:DFP 广告管理系统快速入门指南
如果使用 admob 无法做到这一点,MoPub 是目前对我来说最好的解决方案。
任何帮助和指导都会有所帮助。谢谢。
尝试使用其他一些提供不同类型原生广告的广告网络。开发人员可以自定义广告的放置和使用位置。例如:如果您需要在每 15 行的第二个单元格放置广告,您可以这样使用。
Avocarrot规定。
AvocarrotInstream myAd = new AvocarrotInstream(<yourListAdapter>);
myAd.initWithKey( "<your API Key>" );
myAd.setSandbox(true);
myAd.setLogger(true ,"ALL");
// Populate with In-Stream ads
myAd.loadAdForPlacement(this, "<your Placement Name>" );
// Bind the adapter to your list view component
<yourListView>.setAdapter(myAd);// here you are integrating ads to listview
myAd.setFrequency(2,15); // every 15 cells starting from the 2nd cell.
这里是Documentation它提供了List广告和Feed广告。
原生广告与其余 DFP/AdMob 广告一起包含在 Google Play 服务中。确保在 build.gradle
中将以下内容列为依赖项(请注意,7.5.0 是截至本文发布时的最高版本)。
compile "com.google.android.gms:play-services-base:7.5.0"
compile "com.google.android.gms:play-services-ads:7.5.0"
然后就可以展示原生广告了
AdLoader adLoader = new AdLoader.Builder(context, "/6499/example/native")
.forAppInstallAd(new OnAppInstallAdLoadedListener() {
@Override
public void onAppInstallAdLoaded(NativeAppInstallAd appInstallAd) {
// Show the app install ad.
}
})
.forContentAd(new OnContentAdLoadedListener() {
@Override
public void onContentAdLoaded(NativeContentAd contentAd) {
// Show the content ad.
}
})
.withAdListener(new AdListener() {
@Override
public void onAdFailedToLoad(int errorCode) {
// Handle the failure by logging, altering the UI, etc.
}
})
.withNativeAdOptions(new NativeAdOptions.Builder()
// Methods in the NativeAdOptions.Builder class can be
// used here to specify individual options settings.
.build())
.build();
最近我被同样的问题困住了。然后我决定 post 我的解决方案 admobadapter。希望对你有所帮助。
基本用法可能如下所示:
ListView lvMessages;
AdmobAdapterWrapper adapterWrapper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initListViewItems();
}
/**
* Inits an adapter with items, wrapping your adapter with a {@link AdmobAdapterWrapper} and setting the listview to this wrapper
* FIRST OF ALL Please notice that the following code will work on a real devices but emulator!
*/
private void initListViewItems() {
lvMessages = (ListView) findViewById(R.id.lvMessages);
//creating your adapter, it could be a custom adapter as well
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1);
adapterWrapper = new AdmobAdapterWrapper(this);
adapterWrapper.setAdapter(adapter); //wrapping your adapter with a AdmobAdapterWrapper.
//here you can use the following string to set your custom layouts for a different types of native ads
//adapterWrapper.setInstallAdsLayoutId(R.layout.your_installad_layout);
//adapterWrapper.setcontentAdsLayoutId(R.layout.your_installad_layout);
//Sets the max count of ad blocks per dataset, by default it equals to 3 (according to the Admob's policies and rules)
adapterWrapper.setLimitOfAds(3);
//Sets the number of your data items between ad blocks, by default it equals to 10.
//You should set it according to the Admob's policies and rules which says not to
//display more than one ad block at the visible part of the screen,
// so you should choose this parameter carefully and according to your item's height and screen resolution of a target devices
adapterWrapper.setNoOfDataBetweenAds(10);
//It's a test admob ID. Please replace it with a real one only when you will be ready to deploy your product to the Release!
//Otherwise your Admob account could be banned
//String admobUnitId = getResources().getString(R.string.banner_admob_unit_id);
//adapterWrapper.setAdmobReleaseUnitId(admobUnitId);
lvMessages.setAdapter(adapterWrapper); // setting an AdmobAdapterWrapper to a ListView
//preparing the collection of data
final String sItem = "item #";
ArrayList<String> lst = new ArrayList<String>(100);
for(int i=1;i<=100;i++)
lst.add(sItem.concat(Integer.toString(i)));
//adding a collection of data to your adapter and rising the data set changed event
adapter.addAll(lst);
adapter.notifyDataSetChanged();
}
结果将如下所示
目前仅限于选定的发布商。您需要联系您所在地区的 Google 客户经理进行实施。
好吧,这个线程可能已经过时了。但从 2015 年 5 月开始,到现在为止,AdMob 确实支持原生广告(尽管仍处于测试阶段)。
https://support.google.com/admob/answer/6239795
此外,在 Beta 阶段,它仅供有限数量的开发人员使用。
作为此主题的补充,您现在可以按照 Google 使用 NativeExpressAdView 提供的指南非常轻松地为 Admob 实施 NativeAds。
有关详细信息,请查看 google 文档:
https://firebase.google.com/docs/admob/android/native-express?hl=en
将此代码添加到您的列表视图适配器
builder.forAppInstallAd(new NativeAppInstallAd.OnAppInstallAdLoadedListener() {
@Override
public void onAppInstallAdLoaded(NativeAppInstallAd ad) {
FrameLayout frameLayout =
(FrameLayout) findViewById(R.id.fl_adplaceholder);
NativeAppInstallAdView adView = (NativeAppInstallAdView) getLayoutInflater()
.inflate(R.layout.ad_app_install, null);
populateAppInstallAdView(ad, adView);
frameLayout.removeAllViews();
frameLayout.addView(adView);
}
});
AdLoader adLoader = builder.withAdListener(new AdListener() {
@Override
public void onAdFailedToLoad(int errorCode) {
Toast.makeText(MainActivity.this, "Failed to load native ad: "
+ errorCode, Toast.LENGTH_SHORT).show();
}
}).build();
adLoader.loadAd(new AdRequest.Builder().build());
对 listview Adapter 进行一些更改,您将获得下面的 populateAppInstallAdView() 方法 link
本示例中涵盖了所有内容,请仔细阅读
https://github.com/googleads/googleads-mobile-android-examples/tree/master/admob
Admob in your android these are the codes needed.
<com.google.android.gms.ads.AdView
android:layout_alignParentBottom="true"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ads:adSize="SMART_BANNER"
ads:adUnitId="ca-app-pub-4549020480017205/6066702579"
/>
//在你的javaclass文件中
AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
除此之外,Tooleap Ads SDK 还提供了一种实施 Admob 原生广告的简单方法。
他们不再要求您使用传统的 listView 适配器并在您的内容中显示广告,而是将 admob 原生广告显示为一个小的浮动气泡。按下它可以看到完整的原生广告。
这是在您的 activity
class 中使用他们的 SDK 的示例:
BubbleImageAd = new BubbleImageAd(this);
bubbleImageAd.setAdUnitId("YOUR_AD_UNIT_ID");
bubbleImageAd.loadAndShowAd(this);
你可以看看here。
是的,您可以在 xml 文件中使用以下代码
<com.google.android.gms.ads.NativeExpressAdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="320x300"
ads:adUnitId="@string/ad_unit_id">
mAdView.setVideoOptions(new VideoOptions.Builder()
.setStartMuted(true)
.build());
mVideoController = mAdView.getVideoController();
mVideoController.setVideoLifecycleCallbacks(new VideoController.VideoLifecycleCallbacks() {
@Override
public void onVideoEnd() {
Log.d(LOG_TAG, "Video playback is finished.");
super.onVideoEnd();
}
});
mAdView.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
if (mVideoController.hasVideoContent()) {
Log.d(LOG_TAG, "Received an ad that contains a video asset.");
} else {
Log.d(LOG_TAG, "Received an ad that does not contain a video asset.");
}
}
});
mAdView.loadAd(new AdRequest.Builder().build());
⟩⟩ 在项目结构中,导航到 activity_main.xml 并将以下代码粘贴到您的布局中。
<com.google.android.gms.ads.NativeExpressAdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="320x300"
ads:adUnitId="@string/ad_unit_id">
</com.google.android.gms.ads.NativeExpressAdView>
并在同一个文件中,即 activity_main.xml 在 header 部分添加以下代码行
xmlns:ads="http://schemas.android.com/apk/res-auto"
⟩⟩ 现在打开 MainActivity.java 并在 public class
中添加以下代码行
private static String LOG_TAG = "EXAMPLE";
NativeExpressAdView mAdView;
VideoController mVideoController;
⟩⟩ 然后在 MainActivity.java 下并在 onCreate() 方法中添加以下代码行。
// Locate the NativeExpressAdView.
mAdView = (NativeExpressAdView) findViewById(R.id.adView);
// Set its video options.
mAdView.setVideoOptions(new VideoOptions.Builder()
.setStartMuted(true)
.build());
// The VideoController can be used to get lifecycle events and info about an ad's video
// asset. One will always be returned by getVideoController, even if the ad has no video
// asset.
mVideoController = mAdView.getVideoController();
mVideoController.setVideoLifecycleCallbacks(new VideoController.VideoLifecycleCallbacks() {
@Override
public void onVideoEnd() {
Log.d(LOG_TAG, "Video playback is finished.");
super.onVideoEnd();
}
});
// Set an AdListener for the AdView, so the Activity can take action when an ad has finished
// loading.
mAdView.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
if (mVideoController.hasVideoContent()) {
Log.d(LOG_TAG, "Received an ad that contains a video asset.");
} else {
Log.d(LOG_TAG, "Received an ad that does not contain a video asset.");
}
}
});
mAdView.loadAd(new AdRequest.Builder().build());
⟩⟩ 现在打开 values 文件夹中的 string.xml 文件并粘贴下面的代码行。
<string name="ad_unit_id">ca-app-pub-39402560999xxxxx/21772xxxxx</string>
⟩⟩ 然后打开Manifest文件,添加上网权限
<uses-permission android:name="android.permission.INTERNET" />
要在我们的应用中添加本机模板,我们必须遵循一些基本步骤:
1-首先,我们必须下载本机模板,所以要 developers.google
2-然后点击下载本机模板,现在您将被引导至 Github
3-然后从GitHub下载zip文件并将zip文件解压到任意文件夹并记住文件夹的位置,我们稍后会用到它
4-现在进入 Android studio 并点击 File->New->Import Module, 现在你会看到一个新的 window (从源导入模块)现在单击浏览图标和 select nativetemplates 文件夹,然后单击完成并等待 Gradle 构建完成。
5-现在打开 Gradle Scripts->build.gradle (Module: app) 部分并导入 nativetemplates 项目,然后单击顶部的“sync Now”,如下所示:
//adding native templates
implementation project(':nativetemplates')
https://www.studytonight.com/post/how-to-add-admob-native-ad-in-android-app#
这对我有用:
复制项目库中的 Native 模板。
在Build.gradle(Module:Appname)
中-添加:
implementation project(':nativetemplates')
implementation 'com.google.android.gms:play-services-ads:20.4.0'
在 Setting.gradle(Appname)
- 添加这个:
include ':nativetemplates'
在 Mainfest - 更新如前。
申请前:
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
添加此权限:
<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"/>
在布局文件中添加:
<com.google.android.ads.nativetemplates.TemplateView
android:id="@+id/my_template"
app:gnt_template_type="@layout/gnt_medium_template_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</com.google.android.ads.nativetemplates.TemplateView>
在程序文件中:
MobileAds.initialize(this)
//build ad
val adLoader = AdLoader.Builder(this,"ca-app-pub-3940256099942544/2247696110")
.forNativeAd {
val style = NativeTemplateStyle.Builder().withMainBackgroundColor(ColorDrawable(Color.WHITE))
.build()
val template = findViewById<TemplateView>(R.id.my_template)
template.setStyles(style)
template.setNativeAd(it)
}.build()
//show ad
adLoader.loadAd(AdRequest.Builder().build())
如果仍未加载,请检查您的 admod 凭据。
我正在尝试在我的 android 应用程序中实施原生广告。但我只想使用 admob 来做到这一点。我搜索了很多解决方案,但找不到确切的解决方案。
我知道可以使用 MoPub。
我想做的是:
在列表项内显示广告,这意味着 ListView
/RecyclerView
项之一可以是一个广告,如下图所示。
我找到了一些链接和参考资料,但这并不能解释原生广告的正确实施。
Link 1:原生广告概述
Link 2 : DFP Android 指南 > 定位
Link 3:DFP 广告管理系统快速入门指南
如果使用 admob 无法做到这一点,MoPub 是目前对我来说最好的解决方案。
任何帮助和指导都会有所帮助。谢谢。
尝试使用其他一些提供不同类型原生广告的广告网络。开发人员可以自定义广告的放置和使用位置。例如:如果您需要在每 15 行的第二个单元格放置广告,您可以这样使用。
Avocarrot规定。
AvocarrotInstream myAd = new AvocarrotInstream(<yourListAdapter>);
myAd.initWithKey( "<your API Key>" );
myAd.setSandbox(true);
myAd.setLogger(true ,"ALL");
// Populate with In-Stream ads
myAd.loadAdForPlacement(this, "<your Placement Name>" );
// Bind the adapter to your list view component
<yourListView>.setAdapter(myAd);// here you are integrating ads to listview
myAd.setFrequency(2,15); // every 15 cells starting from the 2nd cell.
这里是Documentation它提供了List广告和Feed广告。
原生广告与其余 DFP/AdMob 广告一起包含在 Google Play 服务中。确保在 build.gradle
中将以下内容列为依赖项(请注意,7.5.0 是截至本文发布时的最高版本)。
compile "com.google.android.gms:play-services-base:7.5.0"
compile "com.google.android.gms:play-services-ads:7.5.0"
然后就可以展示原生广告了
AdLoader adLoader = new AdLoader.Builder(context, "/6499/example/native")
.forAppInstallAd(new OnAppInstallAdLoadedListener() {
@Override
public void onAppInstallAdLoaded(NativeAppInstallAd appInstallAd) {
// Show the app install ad.
}
})
.forContentAd(new OnContentAdLoadedListener() {
@Override
public void onContentAdLoaded(NativeContentAd contentAd) {
// Show the content ad.
}
})
.withAdListener(new AdListener() {
@Override
public void onAdFailedToLoad(int errorCode) {
// Handle the failure by logging, altering the UI, etc.
}
})
.withNativeAdOptions(new NativeAdOptions.Builder()
// Methods in the NativeAdOptions.Builder class can be
// used here to specify individual options settings.
.build())
.build();
最近我被同样的问题困住了。然后我决定 post 我的解决方案 admobadapter。希望对你有所帮助。
基本用法可能如下所示:
ListView lvMessages;
AdmobAdapterWrapper adapterWrapper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initListViewItems();
}
/**
* Inits an adapter with items, wrapping your adapter with a {@link AdmobAdapterWrapper} and setting the listview to this wrapper
* FIRST OF ALL Please notice that the following code will work on a real devices but emulator!
*/
private void initListViewItems() {
lvMessages = (ListView) findViewById(R.id.lvMessages);
//creating your adapter, it could be a custom adapter as well
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1);
adapterWrapper = new AdmobAdapterWrapper(this);
adapterWrapper.setAdapter(adapter); //wrapping your adapter with a AdmobAdapterWrapper.
//here you can use the following string to set your custom layouts for a different types of native ads
//adapterWrapper.setInstallAdsLayoutId(R.layout.your_installad_layout);
//adapterWrapper.setcontentAdsLayoutId(R.layout.your_installad_layout);
//Sets the max count of ad blocks per dataset, by default it equals to 3 (according to the Admob's policies and rules)
adapterWrapper.setLimitOfAds(3);
//Sets the number of your data items between ad blocks, by default it equals to 10.
//You should set it according to the Admob's policies and rules which says not to
//display more than one ad block at the visible part of the screen,
// so you should choose this parameter carefully and according to your item's height and screen resolution of a target devices
adapterWrapper.setNoOfDataBetweenAds(10);
//It's a test admob ID. Please replace it with a real one only when you will be ready to deploy your product to the Release!
//Otherwise your Admob account could be banned
//String admobUnitId = getResources().getString(R.string.banner_admob_unit_id);
//adapterWrapper.setAdmobReleaseUnitId(admobUnitId);
lvMessages.setAdapter(adapterWrapper); // setting an AdmobAdapterWrapper to a ListView
//preparing the collection of data
final String sItem = "item #";
ArrayList<String> lst = new ArrayList<String>(100);
for(int i=1;i<=100;i++)
lst.add(sItem.concat(Integer.toString(i)));
//adding a collection of data to your adapter and rising the data set changed event
adapter.addAll(lst);
adapter.notifyDataSetChanged();
}
结果将如下所示
目前仅限于选定的发布商。您需要联系您所在地区的 Google 客户经理进行实施。
好吧,这个线程可能已经过时了。但从 2015 年 5 月开始,到现在为止,AdMob 确实支持原生广告(尽管仍处于测试阶段)。
https://support.google.com/admob/answer/6239795
此外,在 Beta 阶段,它仅供有限数量的开发人员使用。
作为此主题的补充,您现在可以按照 Google 使用 NativeExpressAdView 提供的指南非常轻松地为 Admob 实施 NativeAds。 有关详细信息,请查看 google 文档: https://firebase.google.com/docs/admob/android/native-express?hl=en
将此代码添加到您的列表视图适配器
builder.forAppInstallAd(new NativeAppInstallAd.OnAppInstallAdLoadedListener() {
@Override
public void onAppInstallAdLoaded(NativeAppInstallAd ad) {
FrameLayout frameLayout =
(FrameLayout) findViewById(R.id.fl_adplaceholder);
NativeAppInstallAdView adView = (NativeAppInstallAdView) getLayoutInflater()
.inflate(R.layout.ad_app_install, null);
populateAppInstallAdView(ad, adView);
frameLayout.removeAllViews();
frameLayout.addView(adView);
}
});
AdLoader adLoader = builder.withAdListener(new AdListener() {
@Override
public void onAdFailedToLoad(int errorCode) {
Toast.makeText(MainActivity.this, "Failed to load native ad: "
+ errorCode, Toast.LENGTH_SHORT).show();
}
}).build();
adLoader.loadAd(new AdRequest.Builder().build());
对 listview Adapter 进行一些更改,您将获得下面的 populateAppInstallAdView() 方法 link
本示例中涵盖了所有内容,请仔细阅读 https://github.com/googleads/googleads-mobile-android-examples/tree/master/admob
Admob in your android these are the codes needed.
<com.google.android.gms.ads.AdView
android:layout_alignParentBottom="true"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ads:adSize="SMART_BANNER"
ads:adUnitId="ca-app-pub-4549020480017205/6066702579"
/>
//在你的javaclass文件中
AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
除此之外,Tooleap Ads SDK 还提供了一种实施 Admob 原生广告的简单方法。
他们不再要求您使用传统的 listView 适配器并在您的内容中显示广告,而是将 admob 原生广告显示为一个小的浮动气泡。按下它可以看到完整的原生广告。
这是在您的 activity
class 中使用他们的 SDK 的示例:
BubbleImageAd = new BubbleImageAd(this);
bubbleImageAd.setAdUnitId("YOUR_AD_UNIT_ID");
bubbleImageAd.loadAndShowAd(this);
你可以看看here。
是的,您可以在 xml 文件中使用以下代码
<com.google.android.gms.ads.NativeExpressAdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="320x300"
ads:adUnitId="@string/ad_unit_id">
mAdView.setVideoOptions(new VideoOptions.Builder()
.setStartMuted(true)
.build());
mVideoController = mAdView.getVideoController();
mVideoController.setVideoLifecycleCallbacks(new VideoController.VideoLifecycleCallbacks() {
@Override
public void onVideoEnd() {
Log.d(LOG_TAG, "Video playback is finished.");
super.onVideoEnd();
}
});
mAdView.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
if (mVideoController.hasVideoContent()) {
Log.d(LOG_TAG, "Received an ad that contains a video asset.");
} else {
Log.d(LOG_TAG, "Received an ad that does not contain a video asset.");
}
}
});
mAdView.loadAd(new AdRequest.Builder().build());
⟩⟩ 在项目结构中,导航到 activity_main.xml 并将以下代码粘贴到您的布局中。
<com.google.android.gms.ads.NativeExpressAdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="320x300"
ads:adUnitId="@string/ad_unit_id">
</com.google.android.gms.ads.NativeExpressAdView>
并在同一个文件中,即 activity_main.xml 在 header 部分添加以下代码行
xmlns:ads="http://schemas.android.com/apk/res-auto"
⟩⟩ 现在打开 MainActivity.java 并在 public class
中添加以下代码行private static String LOG_TAG = "EXAMPLE";
NativeExpressAdView mAdView;
VideoController mVideoController;
⟩⟩ 然后在 MainActivity.java 下并在 onCreate() 方法中添加以下代码行。
// Locate the NativeExpressAdView.
mAdView = (NativeExpressAdView) findViewById(R.id.adView);
// Set its video options.
mAdView.setVideoOptions(new VideoOptions.Builder()
.setStartMuted(true)
.build());
// The VideoController can be used to get lifecycle events and info about an ad's video
// asset. One will always be returned by getVideoController, even if the ad has no video
// asset.
mVideoController = mAdView.getVideoController();
mVideoController.setVideoLifecycleCallbacks(new VideoController.VideoLifecycleCallbacks() {
@Override
public void onVideoEnd() {
Log.d(LOG_TAG, "Video playback is finished.");
super.onVideoEnd();
}
});
// Set an AdListener for the AdView, so the Activity can take action when an ad has finished
// loading.
mAdView.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
if (mVideoController.hasVideoContent()) {
Log.d(LOG_TAG, "Received an ad that contains a video asset.");
} else {
Log.d(LOG_TAG, "Received an ad that does not contain a video asset.");
}
}
});
mAdView.loadAd(new AdRequest.Builder().build());
⟩⟩ 现在打开 values 文件夹中的 string.xml 文件并粘贴下面的代码行。
<string name="ad_unit_id">ca-app-pub-39402560999xxxxx/21772xxxxx</string>
⟩⟩ 然后打开Manifest文件,添加上网权限
<uses-permission android:name="android.permission.INTERNET" />
要在我们的应用中添加本机模板,我们必须遵循一些基本步骤:
1-首先,我们必须下载本机模板,所以要 developers.google
2-然后点击下载本机模板,现在您将被引导至 Github
3-然后从GitHub下载zip文件并将zip文件解压到任意文件夹并记住文件夹的位置,我们稍后会用到它
4-现在进入 Android studio 并点击 File->New->Import Module, 现在你会看到一个新的 window (从源导入模块)现在单击浏览图标和 select nativetemplates 文件夹,然后单击完成并等待 Gradle 构建完成。
5-现在打开 Gradle Scripts->build.gradle (Module: app) 部分并导入 nativetemplates 项目,然后单击顶部的“sync Now”,如下所示:
//adding native templates
implementation project(':nativetemplates')
https://www.studytonight.com/post/how-to-add-admob-native-ad-in-android-app#
这对我有用:
复制项目库中的 Native 模板。
在
Build.gradle(Module:Appname)
中-添加:implementation project(':nativetemplates') implementation 'com.google.android.gms:play-services-ads:20.4.0'
在
Setting.gradle(Appname)
- 添加这个:include ':nativetemplates'
在 Mainfest - 更新如前。
申请前:
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
添加此权限:
<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"/>
在布局文件中添加:
<com.google.android.ads.nativetemplates.TemplateView android:id="@+id/my_template" app:gnt_template_type="@layout/gnt_medium_template_view" android:layout_width="match_parent" android:layout_height="wrap_content" > </com.google.android.ads.nativetemplates.TemplateView>
在程序文件中:
MobileAds.initialize(this) //build ad val adLoader = AdLoader.Builder(this,"ca-app-pub-3940256099942544/2247696110") .forNativeAd { val style = NativeTemplateStyle.Builder().withMainBackgroundColor(ColorDrawable(Color.WHITE)) .build() val template = findViewById<TemplateView>(R.id.my_template) template.setStyles(style) template.setNativeAd(it) }.build() //show ad adLoader.loadAd(AdRequest.Builder().build())
如果仍未加载,请检查您的 admod 凭据。