新一代SDK | 安卓 | AdMob对接
将AdMob作为首要广告服务器的对接说明
(安卓新一代SDK版本21.3.6)
在开始对接前,请确认:
您已经将AdMob作为聚合平台接入您的项目中。 | 如果不是,请查看AdMob文档。 |
您有Smaato SPX账户并创建了必需的广告位。 | 如果不是,请查看我们的SPX文档。 |
GDPR重要说明
作为媒体,您应该集成Consent Management Platform CMP(同意管理平台)和 IAB Europe’s Mobile In-App CMP API v1.0(IAB欧洲移动应用CMP v1.0). 您可以在以下网址找到基于web的CMP的参考实现和相应的原生包装器: GDPR-透明度-和-权限-框架.
如果您想嵌入自己的自定义CMP,则需要使用以下密钥以收集用户同意信息储存在 SharedPreferences
字段中:
密钥 | 值 | 描述 |
---|---|---|
IABConsent_CMPPresent |
Boolean |
如果应用程序中含有符合IAB规范的CMP,则设置为“YES”。 |
IABConsent_SubjectToGDPR |
String |
“ |
IABConsent_ConsentString |
String |
当使用符合IAB规范的CMP(同意管理平台)时,Base64编码的权限字符串,详见于Consent string and vendor list format v1.1(权限字符串和供应商名单格式v1.1) |
IABConsent_ParsedPurposeConsents |
String | 当使用符合IAB规范的CMP(同意管理平台)时,由“0 ”和“1 ”组成的字符串,位于位置N的字符说明了purposeID N的权限状态,详见于Global Vendor List(全球供应商名单) |
IABConsent_ParsedVendorConsents |
String |
当使用符合IAB规范的CMP(同意管理平台)时,由“0 ”和“1 ”组成的字符串,位于位置N的字符说明了verdorID N的权限状态,详见于Global Vendor List(全球供应商名单) |
IABConsent_SubjectToGDPR
被设为“1”,那么作为媒体的您需要使密钥IABConsent_ConsentString
包含有效的权限字符串(用户会在广告展示前被要求提供)。否则这样的广告请求会在服务器端被处理为掉且不会有返回。CCPA重要说明
加州消费者隐私法案(CCPA)的创建旨在为加州消费者提供更大的透明度和对其个人信息的控制。CCPA是美国首创的此类法规,旨在制定适用于加利福尼亚州管辖范围内开展业务的所有行业的广泛隐私和数据保护规则,而不是着眼于单个行业或特定数据收集和使用惯例。
有关CCPA法规的更多信息,请查看文章California Consumer Privacy Act (CCPA) – FAQ。您还可以查看IAB的美国隐私字符串文档。
如果您的产品有加利福尼亚州用户
作为开发者,您需要确保征询加利福尼亚州用户对私有数据传输的意见(同意或拒绝/选择退出或选择加入)。此答案应使用iAB US Privacy String格式以键“IABUSPrivacy_String
”保存在SharedPreferences
中。
Smaato新一代SDK会自动读取储存在SharedPreferences
中的信息。以下为代码样例。
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context)
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("IABUSPrivacy_String", "1YNN"); // for example "1YNN"
editor.commit();
全屏广告位重要说明
目前,Smaato新一代SDK中,插屏广告兼容全屏广告位。在使用Smaato新一代SDK时,您需要在SPX中选择Interstitial (Display & Video)来变现您的全屏广告位。其余的所有选项此时都会无效。
请检查您的SPX账户中的Interstitial (Display & Video) 是否存在。如果您没有在广告格式的下拉菜单中看到Interstitial (Display & Video)选项,请联系您的Smaato客户经理启动该选项。
- 当在SPX中创建您的全屏广告位时,选择广告格式中的Interstitial (Display & video)选项。 (图片1)
- 对于广告素材类型,您有三种选项:(图片2):
- Display Only将只支持富媒体广告。
- Video Only将只支持视频广告。
- Display and Video会支持富媒体和视频广告。
图片1:广告格式下拉选项
图片2:广告素材类型下拉选项
广告测试
Publisher ID: 1100042525 |
广告位ID | 类型 | 描述 |
---|---|---|
130626424 | 富媒体 | 横幅广告/中等矩形/Leaderboard/Skyscraper |
130635694 | 静态图 | 横幅广告/中等矩形/Leaderboard/Skyscraper |
130635706 | MRAID | 横幅广告/中等矩形/Leaderboard/Skyscraper |
130626426 | 富媒体/视频 | 插屏(视频(有end-card) +富媒体插屏320×480,480×320,1024×768 & 768×1024) |
130626427 | 视频 | 可跳过视频 |
130626428 | 激励广告 | 激励视频 |
130635048 | 激励广告 | 激励视频(无end-card) |
AdMob面板创建
1. 前往AdMob面板 – https://apps.admob.com/v2/mediation/groups/list
2. 点击Create Mediation Group.
3. 选择您的广告格式。
- 您的选择为横幅,插屏和激励视频。
4. 在下一个页面中选择对应配置。
5. 对于Ad unit的Add Ad unit 选项,请选择需要聚合的广告单元。
6. 在Ad sources,点击 ADD CUSTOM EVENT.
-
- 提供一个标签和目标每千次展示费用(eCPM)。
- 在Configure Ad units提供下列细节作为class命名
-
-
- 横幅:
com.smaato.sdk.adapters.admob.banner.SMAAdMobSmaatoBannerAdapter
- 插屏:
com.smaato.sdk.adapters.admob.interstitial.SMAAdMobSmaatoInterstitialAdapter
- 激励视频:
com.smaato.sdk.adapters.admob.rewarded.SMAAdMobSmaatoRewardedVideoAdapter
- 横幅:
-
-
- 然后传递下列参数:
adspaceId=<YOUR_SPX_ADSPACE_ID>
- 然后传递下列参数:
SDK对接
设置您的安卓项目
添加以下储存库设置到您项目的主build.gradle文件中:/p>
allprojects {
repositories {
google()
jcenter()
maven {
url "https://s3.amazonaws.com/smaato-sdk-releases/"
}
}
}
设定编译选项为Java 8,(将下列语句放入您应用模块中的build.gradle文件中):
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
重要说明: Smaato SDK minSdkVersion是安卓4.1 (API等级16).
对接选项
该对接目前支持Google移动广告SDK版本18.0.0
由于SDK模块化结构,您可以选择不同的对接方式。以下为一些应添加到您的build.gradle文件中的配置示例。
横幅(支持富媒体)
build.gradle
implementation 'com.smaato.android.sdk:admob-banner-adapter:21.3.6'
插屏(支持富媒体和视频)
build.gradle
implementation 'com.smaato.android.sdk:admob-interstitial-adapter:21.3.6'
插屏(仅支持富媒体)
build.gradle
implementation 'com.smaato.android.sdk:admob-interstitial-adapter:21.3.6' {
exclude module: "module-video"
}
插屏(仅支持视频)
build.gradle
implementation 'com.smaato.android.sdk:admob-interstitial-adapter:21.3.6' {
exclude module: "module-richmedia"
}
激励视频
build.gradle
implementation 'com.smaato.android.sdk:admob-rewarded-video-adapter:21.3.6'
权限
添加下列权限到您应用中的AndroidManifest.xml
文件:
强制性权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
选择性权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
如果您的应用面向安卓5.0 (API等级21) 或者更高,需要添加以下语句到您应用中的AndroidManifest.xml
文件:
<uses-feature android:name="android.hardware.location.network" />
如果您的应用面向安卓9 Pie (API等级28) 或者更高,为了发送HTTP请求(投放更多广告),需要配置AndroidManifest.xml
文件中application标签里的networkSecurityConfig
属性:
android:networkSecurityConfig="@xml/network_security_config"
然后在XML resource目录中创建network_security_config.xml
:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
更多细节请参考Network security configuration, 官方Google文件链接:https://developer.android.com/training/articles/security-config
SDK初始化
初始化Smaato SDK,请将以下语句添加到您的Application.OnCreate()
方法中:
SmaatoSdk.init(this, publisherId);
可选配置
您可以通过传递Config
参数到init方法来为SDK配置额外的参数。
Config config = Config.builder()
.setLogLevel(LogLevel.INFO)
.setHttpsOnly(false)
.build();
SmaatoSdk.init(this, config, publisherId);
此外,如果您有用户信息,我们推荐您通过以下接口传递给Smaato SDK:
SmaatoSdk.setKeywords(...);
SmaatoSdk.setSearchQuery(...);
SmaatoSdk.setGender(...);
SmaatoSdk.setAge(...);
SmaatoSdk.setLatLng(...);
SmaatoSdk.setRegion(...);
SmaatoSdk.setLanguage(...);
SmaatoSdk.setZip(...);
SmaatoSdk.setCoppa(...);
SmaatoSdk.setGPSEnabled(...);
SmaatoSdk.setWatermarkEnabled(...);
支持的回调
横幅回调
回调信息/th> | 原因 |
---|---|
onBannerLoaded |
当广告响应成功会触发。 |
onBannerFailed |
当广告请求失败或广告过期会触发。 |
onBannerClicked |
当广告的点击活动被记录会触发。 |
onBannerImpression |
当广告展示成功会触发。 |
插屏回调
回调信息 | 理由 |
---|---|
onInterstitialLoaded |
当广告响应成功会触发。 |
onInterstitialFailed |
当广告加载或展示出现错误或广告过期会触发。 |
onInterstitialShown |
当全屏插屏广告打开时会触发。 |
onInterstitialDismissed |
当全屏插屏广告关闭时会触发。 |
onInterstitialClicked |
当用户点击广告时会触发。 |
onInterstitialImpression |
当广告展示成功会触发。 |
激励视频回调
回调信息 | 原因 |
---|---|
onRewardedVideoLoadSuccess |
当激励视频广告响应成功会触发。 |
onRewardedVideoLoadFailure |
当广告加载或展示出现错误或广告过期会触发。 |
onRewardedVideoPlaybackError |
当激励视频广告回放出现错误会触发。 |
onRewardedVideoClosed |
当激励视频广告关闭时会触发。 |
onRewardedVideoClicked |
当激励视频广告被点击时会触发。 |
onRewardedVideoStarted |
当激励视频广告开始播放时会触发。 |
onRewardedVideoCompleted |
当激励视频播放完毕且应给予用户奖励时会触发。 |
Modified: March 1, 2021 at 11:46 am