字節穿山甲
官網
穿山甲申請於2017年 [3] ,2019年1月17日,“2019引擎大會”舉行,正式公佈字節跳動的商業品牌“巨量引擎”,穿山甲作爲巨量引擎的祕密武器,系統分享了作爲新一代媒體聚合視頻化廣告平臺穿山甲的發展與願景
廣告樣式
激勵視頻廣告
通過應用內獎勵吸引用戶主動選擇觀看的全屏視頻形式廣告,用戶獲得應用內獎勵的同時,開發者獲得變現收益。 [9]
全屏視頻廣告
全屏播放的視頻廣告,5秒可跳過,高收益的同時兼顧用戶感受。 [9]
原生信息流廣告
契合應用原生環境的廣告樣式,提供8套通用模版,開發者可根據應用風格選擇模版,並自定義調整細節設計。 [9]
沉浸式視頻信息流廣告
與抖音豎版視頻流相似的視頻信息流廣告,提供沉浸式無干擾用戶體驗,轉化率更高。 [9]
開屏廣告
應用開屏黃金展示位,廣告填充率、點擊率更高。 [9]
插屏廣告
在操作切換間彈出,充分滲透用戶等待時間,擁有強信息表現力。 [9]
banner廣告
可靈活選擇版位的標準橫幅廣告,樣式美觀靈活,曝光率優異。 [
綁定SDK
申請應用的CodeId
請在穿山甲平臺上創建好應用ID和廣告位ID.
這一步必不可少,畢竟要接入到平臺內。
導入aar及SDK依賴的jar包
從官網下載jar包,導入到工程內,創建文件夾libs.
並將以下代碼添加到您app的build.gradle中:
repositories {
flatDir {
dirs 'libs'
}
}
depedencies {
compile(name: 'open_ad_sdk', ext: 'aar')
}
在AndroidManifest中添加權限:
AndroidManifest配置
<!--必要權限-->
<uses-permission android:name="android.permission.INTERNET" />
<!--可選權限-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
<!--可選,穿山甲提供“獲取地理位置權限”和“不給予地理位置權限,開發者傳入地理位置參數”兩種方式上報用戶位置,兩種方式均可不選,添加位置權限或參數將幫助投放定位廣告-->
<!--請注意:無論通過何種方式提供給穿山甲用戶地理位置,均需向用戶聲明地理位置權限將應用於穿山甲廣告投放,穿山甲不強制獲取地理位置信息-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 如果視頻廣告使用textureView播放,請務必添加,否則黑屏 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!--demo場景用到的權限,不是必須的-->
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
<!-- 穿山甲3400版本新增:建議添加“query_all_package”權限,穿山甲將通過此權限在Android R系統上判定廣告對應的應用是否在用戶的app上安裝,避免投放錯誤的廣告,以此提高用戶的廣告體驗。若添加此權限,需要在您的用戶隱私文檔中聲明! -->
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
provider配置
注意:爲不影響下載類型廣告使用 無論APP處於任何階段provider都需要在清單文件中正常配置
適配Anroid7.0及以上
如果您的應用需要在Anroid7.0及以上環境運行,請在AndroidManifest中添加如下代碼:
<provider
android:name="com.bytedance.sdk.openadsdk.TTFileProvider"
android:authorities="${applicationId}.TTFileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
在res/xml目錄下,新建一個xml文件file_paths,在該文件中添加如下代碼:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<!--爲了適配所有路徑可以設置 path = "." -->
<external-path name="tt_external_root" path="." />
<external-path name="tt_external_download" path="Download" />
<external-files-path name="tt_external_files_download" path="Download" />
<files-path name="tt_internal_file_download" path="Download" />
<cache-path name="tt_internal_cache_download" path="Download" />
</paths>
注意:單進程或多進程都必須配置
<provider
android:name="com.bytedance.sdk.openadsdk.multipro.TTMultiProvider" android:authorities="${applicationId}.TTMultiProvider" android:exported="false" />
如果需要代碼混淆,請看官網上說明。
初始化穿山甲
重點:
- 穿山甲SDK需要在主線程中初始化
- 多進程涉及WebView的使用,用戶想要使用自己的數據路徑,可以在SDK初始化之前調用WebView.setDataDirectorySuffix()
開發者需要在Application.onCreate()方法中調用以下代碼來初始化穿山甲sdk。
重點: 目前SDK已支持多進程,如果明確某個進程不會使用到廣告SDK,可以只針對特定進程初始化廣告sdk
public class DemoApplication extends Application {
public static String PROCESS_NAME_XXXX = "process_name_xxxx";
@Override
public void onCreate() {
super.onCreate();
//強烈建議在應用對應的Application#onCreate()方法中調用,避免出現content爲null的異常
TTAdSdk.init(context,
new TTAdConfig.Builder()
.appId("5001121")
.useTextureView(true) //默認使用SurfaceView播放視頻廣告,當有SurfaceView衝突的場景,可以使用TextureView
.appName("APP測試媒體")
.titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK)//落地頁主題
.allowShowNotify(true) //是否允許sdk展示通知欄提示
.debug(true) //測試階段打開,可以通過日誌排查問題,上線時去除該調用
.directDownloadNetworkType(TTAdConstant.NETWORK_STATE_WIFI) //允許直接下載的網絡狀態集合,沒有設置的網絡下點擊下載apk會有二次確認彈窗,彈窗中會披露應用信息
.supportMultiProcess(false) //是否支持多進程,true支持
~~ .asyncInit(true) //是否異步初始化sdk,設置爲true可以減少SDK初始化耗時。3450版本開始廢棄~~
//.httpStack(new MyOkStack3())//自定義網絡庫,demo中給出了okhttp3版本的樣例,其餘請自行開發或者諮詢工作人員。
.build());
//如果明確某個進程不會使用到廣告SDK,可以只針對特定進程初始化廣告SDK的content
//if (PROCESS_NAME_XXXX.equals(processName)) {
// TTAdSdk.init(context, config);
//}
}
}
到這裏初始化部分就結束了。