「Android Getting Started SDK8」修訂間的差異

出自TAMedia
跳至導覽 跳至搜尋
imported>Wikiuser
 
(未顯示由 2 位使用者於中間所作的 61 次修訂)
行 1: 行 1:
== <b>簡介</b> ==
== <b>簡介</b> ==
:TAMedia SDK提供Android Mobile App開發者簡易迅速的方式整合行動App廣告, 廣告的種類包含橫幅Banner, 全版Interstitial, Rich Media, 原生性廣告以及InRead廣告, 使用上跟Google Mobile Ads (Admob)類似, 能大量節省開發者學習時間
:TAmedia SDK提供Android Mobile App開發者簡易迅速的方式整合行動App廣告, 廣告的種類包含<br>
<br>
:<ul><li>Banner</li></ul>
:<ul><li>Interstitial</li></ul>
:<ul><li>InRead Anchor</li></ul>
:<ul><li>Native</li></ul>
 
== <b>系統需求</b> ==
== <b>系統需求</b> ==
:Android 5.0以上 (API Level 21+)
:Android 6.0以上 (API Level 23+)
 
== <b>SDK說明文件</b> ==
[http://wiki.tamedia.com.tw/androidDoc/index.html SDK說明文件]
<br>
<br>


== <b>Android Studio專案整合SDK</b> ==
== <b>APP專案整合SDK</b> ==
請按照下列方式設置專案<br><br>
請按照下列方式設置專案<br><br>
<big><u>Step 1: 將SDK放入app專案的<b>libs</b>資料夾</u></big><br>
<big><u>Step 1: 將SDK放入app專案的<b>libs</b>資料夾</u></big><br><br>
:請至[[Download MADP Android SDK|下載 Download SDK]]下載SDK,並將壓縮檔內的AAR檔 (adpmobile-lib-rx.x.x.aar) 放至專案的libs資料夾, 若無libs資料夾請自行建立<br>
:請至[[Download MADP Android SDK|下載 Download SDK]]下載SDK,並將壓縮檔內的AAR檔放至專案的libs資料夾, 若無libs資料夾請自行建立<br>


[[檔案:AS SDK8 aar.png]]
[[檔案:AS SDK8 aar.png | 300px]]


<big><u>Step 2-1: 在app的<b>build.gradle</b>的dependencies內加入下列程式 (請根據aar檔名字自行調整)</u></big><br>
<br>
<big><u>Step 2-1: 編輯app專案中<b>build.gradle</b></u></big><br>


[[檔案:AS SDK8 gradle.png]]
[[檔案:AS SDK8 gradle.png | 300px]]


:請加入TAMedia的SDK和Google Play Service的廣告模組,Retrofit函式庫, AndroidX函式庫, Kotlin函式庫, 如需支援Android 4.0作業系統, 請將okhttp版本鎖定在舊版3.12.8解決TLS閃退
  dependencies {
      /* Other dependencies... */
   
    <b>implementation 'com.google.android.gms:play-services-ads-identifier:16.0.0'</b>
    <b>implementation ('com.squareup.retrofit2:retrofit:2.9.0')</b>
    <b>implementation("com.squareup.okhttp3:okhttp:3.12.8") { /* Use old version okhttp to fix TLS crash issue */</b>
    <b>    force = true</b>
    <b>}</b>
    <b>implementation files('libs/adpmobile-lib-rx.x.x.aar')</b>
    <br>
   
    //SDK8
    <b>implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.10'</b>
    <b>implementation 'com.squareup.retrofit2:converter-gson:2.9.0'</b>
    <b>implementation 'com.squareup.retrofit2:converter-scalars:2.9.0'</b>
    <b>implementation 'com.google.code.gson:gson:2.8.6'</b>
    <br>
    <b>implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2'</b>
    <b>implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0-alpha02"</b>
    <b>implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.3.1"</b>
    <b>implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"</b>
    //noinspection LifecycleAnnotationProcessorWithJava8
    <b>annotationProcessor "androidx.lifecycle:lifecycle-compiler:2.3.1"</b>
    <b>implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0'</b>
    <b>implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'</b>
    //SDK8
  }
<br>


:compileOptions請加入JAVA 8
====== MADP SDK 8.0.6 (Kotlin 1.8.x ~ 1.9.22) ======
  android {
<source>
     compileOptions {
dependencies {
        sourceCompatibility JavaVersion.VERSION_1_8
 
        targetCompatibility JavaVersion.VERSION_1_8
    // =======================================================================//
     }
    // MADP library
  }
    // =======================================================================//
<br>
    implementation files('libs/adpmobile-lib-r8.0.0.aar')
    implementation files('libs/omsdk-android-1.3.37-release.aar')
 
    // =======================================================================//
    // MADP library dependencies
    // =======================================================================//
    // retrofit
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
    implementation 'com.squareup.retrofit2:converter-scalars:2.9.0'
    // google ads identifier
    implementation 'com.google.android.gms:play-services-ads-identifier:17.0.1'
    // google app set id
    implementation 'com.google.android.gms:play-services-appset:16.0.1'
     // gson
    implementation 'com.google.code.gson:gson:2.8.6'
    // Jetpack Security
    implementation 'androidx.security:security-crypto:1.1.0-alpha03'
    // activity-ktx
     implementation 'androidx.activity:activity-ktx:1.9.3'
 
 
}
</source>
 
====== MADP SDK 8.0.7 / 8.0.8 (Kotlin 2.0.0+) [[檔案:new-xxl.png|30px]] ======
<source>
dependencies {
 
    // =======================================================================//
    // MADP library
    // =======================================================================//
    // 8.0.7 請改用 adpmobile-lib-r8.0.7.aar
    implementation files('libs/adpmobile-lib-r8.0.8.aar')
    implementation files('libs/omsdk-android-1.3.37-release.aar')


<big><u>Step 2-2: 在Project的<b>build.gradle</b>的repositories內加入google()</u></big><br>
    // =======================================================================//
    // MADP library dependencies
    // =======================================================================//
    // retrofit
    implementation 'com.squareup.retrofit2:retrofit:3.0.0'
    implementation 'com.squareup.retrofit2:converter-gson:3.0.0'
    implementation 'com.squareup.retrofit2:converter-scalars:3.0.0'
    // google ads identifier
    implementation 'com.google.android.gms:play-services-ads-identifier:18.2.0'
    // google app set id
    implementation 'com.google.android.gms:play-services-appset:16.1.0'
    // gson
    implementation 'com.google.code.gson:gson:2.13.2'
    // Jetpack Security(僅 8.0.7 需要,8.0.8 起請移除此行)
    implementation 'androidx.security:security-crypto:1.1.0'
    // activity-ktx
    implementation 'androidx.activity:activity-ktx:1.11.0'


[[檔案:Import SDK7 Step2-2.PNG]]


:Google Play Service版本若為11.2+, 必須在repositories新增<b>google()</b>, 這是因為Google Play Service自11.2版本後, 改透過maven.google.com取得<br>SDK8 使用 kotlin 語言,需下載 kotlin 函式庫
}
  buildscript {
</source>
      <b>ext.kotlin_version = "1.5.10"</b>
<br>
      repositories {
          <b>google()</b>
          jcenter()
      }
      dependencies {
          classpath 'com.android.tools.build:gradle:4.0.1'
          //SDK8 Kotlin
          <b>classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"</b>         
          // NOTE: Do not place your application dependencies here; they belong
          // in the individual module build.gradle files
      }
  }
 
  allprojects {
      repositories {
          <b>google()</b>
          jcenter()
      }
  }
<br><br>


<big><u>Step 3: 在<b>AndroidManifest.xml</b>的manifest tag宣告權限</u></big><br>
== <b>權限設定</b> ==


[[檔案:Import SDK7 Step3-1.PNG]]
[[檔案:Import SDK7 Step3-1.PNG]]
<br>


:<ul><li>Required Permission</li></ul>
:<ul><li>Required Permission</li></ul>
   &lt;!-- TAMedia Required Permission --&gt;
   &lt;!-- TAmedia Required Permission --&gt;
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <b>&lt;!-- SDK4.0以上版本請移除 --&gt;</b>
 
:<ul><li>Optional Permission</li></ul>
:<ul><li>Optional Permission</li></ul>
   &lt;!-- TAMedia Optional Permission -->
   &lt;!-- TAmedia Optional Permission -->
   <uses-permission android:name="android.permission.VIBRATE" />  
   <uses-permission android:name="android.permission.VIBRATE" />  
   <uses-permission android:name="android.permission.CAMERA" />
   <uses-permission android:name="android.permission.CAMERA" />
行 102: 行 112:
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<br><br>
<br>


<big><u>Step 4: <b>AndroidManifest.xml</b>的manifest tag宣告Activity</u></big><br>
== <b>高權限功能開關(8.0.8 起)</b> [[檔案:new-xxl.png|30px]] ==
  <!-- TAMedia Activity -->
 
  <activity
8.0.8 起,廣告素材透過 WebView JS bridge 使用麥克風、相機、行事曆、閃光燈這四項功能前,必須由 App 端主動開啟對應的開關。四個開關預設皆為關閉,未開啟時 SDK 會忽略素材的呼叫。
    android:name="com.taiwanmobile.pt.adp.view.TWMAdActivity"
 
    android:configChanges="orientation|keyboardHidden|navigation|keyboard|screenLayout|uiMode|screenSize|smallestScreenSize"
=== 開關 API ===
    android:hardwareAccelerated="true"
 
    android:theme="@android:style/Theme.Translucent" >
{| class="wikitable"
  </activity>
! 功能 !! 開啟 !! 查詢
|-
| 麥克風 || <code>TWMMobileAds.setMicrophoneEnabled(boolean)</code> || <code>TWMMobileAds.isMicrophoneEnabled()</code>
|-
| 相機 || <code>TWMMobileAds.setCameraEnabled(boolean)</code> || <code>TWMMobileAds.isCameraEnabled()</code>
|-
| 行事曆 || <code>TWMMobileAds.setCalendarEnabled(boolean)</code> || <code>TWMMobileAds.isCalendarEnabled()</code>
|-
| 閃光燈 || <code>TWMMobileAds.setFlashlightEnabled(boolean)</code> || <code>TWMMobileAds.isFlashlightEnabled()</code>
|}
 
=== 使用範例 ===
 
以麥克風互動素材為例,在承載該素材的 Activity 進入時開啟,離開時關閉:
 
<syntaxhighlight lang="java">
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 本頁會投放需要麥克風互動的素材
    TWMMobileAds.setMicrophoneEnabled(true);
}
 
@Override
protected void onDestroy() {
    TWMMobileAds.setMicrophoneEnabled(false);
    super.onDestroy();
}
</syntaxhighlight>
<br>
 
== <b>闔家適用計畫 / 兒童導向應用程式</b> ==
 
: 本SDK的相依套件 <code>play-services-ads-identifier</code> 已於其manifest中宣告AD_ID權限,manifest合併後會自動出現在您的應用程式中。
 
: 若您的應用程式屬於 <b>闔家適用計畫,或為兒童導向應用程式</b>,請於AndroidManifest.xml中加入下列設定,移除AD_ID使用權限
 
<source>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
 
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
</source>
 
: 註:targetSdk 33 (Android 13) 以上的應用程式,使用廣告ID時必須宣告AD_ID權限;未宣告時廣告ID會被置換為全為零的字串。此為Android 13起的規則,與SDK版本無關。
 
詳情可參考Google網站說明:<br>
[https://support.google.com/googleplay/android-developer/answer/6048248?hl=zh-Hant 2021 年 Google Play 服務更新]
<br>
[https://support.google.com/googleplay/android-developer/topic/9877766 Google Play Policy - 家庭]
<br>
<br>
[[Android SDK Developer Guide 2 | 回首頁]]

於 2026年8月17日 (一) 01:54 的最新修訂

簡介

TAmedia SDK提供Android Mobile App開發者簡易迅速的方式整合行動App廣告, 廣告的種類包含
  • Banner
  • Interstitial
  • InRead Anchor
  • Native

系統需求

Android 6.0以上 (API Level 23+)

SDK說明文件

SDK說明文件

APP專案整合SDK

請按照下列方式設置專案

Step 1: 將SDK放入app專案的libs資料夾

請至下載 Download SDK下載SDK,並將壓縮檔內的AAR檔放至專案的libs資料夾, 若無libs資料夾請自行建立

AS SDK8 aar.png


Step 2-1: 編輯app專案中build.gradle

AS SDK8 gradle.png


MADP SDK 8.0.6 (Kotlin 1.8.x ~ 1.9.22)
dependencies {

    // =======================================================================//
    // MADP library
    // =======================================================================//
    implementation files('libs/adpmobile-lib-r8.0.0.aar')
    implementation files('libs/omsdk-android-1.3.37-release.aar')

    // =======================================================================//
    // MADP library dependencies
    // =======================================================================//
    // retrofit
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
    implementation 'com.squareup.retrofit2:converter-scalars:2.9.0'
    // google ads identifier
    implementation 'com.google.android.gms:play-services-ads-identifier:17.0.1'
    // google app set id
    implementation 'com.google.android.gms:play-services-appset:16.0.1'
    // gson
    implementation 'com.google.code.gson:gson:2.8.6'
    // Jetpack Security
    implementation 'androidx.security:security-crypto:1.1.0-alpha03'
    // activity-ktx
    implementation 'androidx.activity:activity-ktx:1.9.3'


}
MADP SDK 8.0.7 / 8.0.8 (Kotlin 2.0.0+) New-xxl.png
dependencies {

    // =======================================================================//
    // MADP library
    // =======================================================================//
    // 8.0.7 請改用 adpmobile-lib-r8.0.7.aar
    implementation files('libs/adpmobile-lib-r8.0.8.aar')
    implementation files('libs/omsdk-android-1.3.37-release.aar')

    // =======================================================================//
    // MADP library dependencies
    // =======================================================================//
    // retrofit
    implementation 'com.squareup.retrofit2:retrofit:3.0.0'
    implementation 'com.squareup.retrofit2:converter-gson:3.0.0'
    implementation 'com.squareup.retrofit2:converter-scalars:3.0.0'
    // google ads identifier
    implementation 'com.google.android.gms:play-services-ads-identifier:18.2.0'
    // google app set id
    implementation 'com.google.android.gms:play-services-appset:16.1.0'
    // gson
    implementation 'com.google.code.gson:gson:2.13.2'
    // Jetpack Security(僅 8.0.7 需要,8.0.8 起請移除此行)
    implementation 'androidx.security:security-crypto:1.1.0'
    // activity-ktx
    implementation 'androidx.activity:activity-ktx:1.11.0'


}


權限設定

Import SDK7 Step3-1.PNG


  • Required Permission
 <!-- TAmedia Required Permission -->
 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  • Optional Permission
 <!-- TAmedia Optional Permission -->
 <uses-permission android:name="android.permission.VIBRATE" /> 
 <uses-permission android:name="android.permission.CAMERA" />
 <uses-permission android:name="android.permission.RECORD_AUDIO" />
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


高權限功能開關(8.0.8 起) New-xxl.png

8.0.8 起,廣告素材透過 WebView JS bridge 使用麥克風、相機、行事曆、閃光燈這四項功能前,必須由 App 端主動開啟對應的開關。四個開關預設皆為關閉,未開啟時 SDK 會忽略素材的呼叫。

開關 API

功能 開啟 查詢
麥克風 TWMMobileAds.setMicrophoneEnabled(boolean) TWMMobileAds.isMicrophoneEnabled()
相機 TWMMobileAds.setCameraEnabled(boolean) TWMMobileAds.isCameraEnabled()
行事曆 TWMMobileAds.setCalendarEnabled(boolean) TWMMobileAds.isCalendarEnabled()
閃光燈 TWMMobileAds.setFlashlightEnabled(boolean) TWMMobileAds.isFlashlightEnabled()

使用範例

以麥克風互動素材為例,在承載該素材的 Activity 進入時開啟,離開時關閉:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 本頁會投放需要麥克風互動的素材
    TWMMobileAds.setMicrophoneEnabled(true);
}

@Override
protected void onDestroy() {
    TWMMobileAds.setMicrophoneEnabled(false);
    super.onDestroy();
}


闔家適用計畫 / 兒童導向應用程式

本SDK的相依套件 play-services-ads-identifier 已於其manifest中宣告AD_ID權限,manifest合併後會自動出現在您的應用程式中。
若您的應用程式屬於 闔家適用計畫,或為兒童導向應用程式,請於AndroidManifest.xml中加入下列設定,移除AD_ID使用權限
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
註:targetSdk 33 (Android 13) 以上的應用程式,使用廣告ID時必須宣告AD_ID權限;未宣告時廣告ID會被置換為全為零的字串。此為Android 13起的規則,與SDK版本無關。

詳情可參考Google網站說明:
2021 年 Google Play 服務更新
Google Play Policy - 家庭