<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hant-TW">
	<id>https://wiki.tamedia.com.tw/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BrandonTeng</id>
	<title>TAMedia - 使用者貢獻 [zh-tw]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.tamedia.com.tw/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BrandonTeng"/>
	<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=%E7%89%B9%E6%AE%8A:%E4%BD%BF%E7%94%A8%E8%80%85%E8%B2%A2%E7%8D%BB/BrandonTeng"/>
	<updated>2026-05-01T16:42:06Z</updated>
	<subtitle>使用者貢獻</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Download_MADP_Android_SDK&amp;diff=3741</id>
		<title>Download MADP Android SDK</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Download_MADP_Android_SDK&amp;diff=3741"/>
		<updated>2025-11-25T07:04:04Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version !! Package !! Size !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|2.0.0 || TAMediaSDK_2.0.0 || 1475 KB || Initial release&lt;br /&gt;
|-&lt;br /&gt;
|2.0.1 || TAMediaSDK_2.0.1 || 1475 KB || 修復若干NullpointerException問題&lt;br /&gt;
|-&lt;br /&gt;
|2.0.2 || TAMediaSDK_2.0.2 || 1567 KB ||  &lt;br /&gt;
* 因應google play 內容政策修訂, 增訂對google play sevice的支援&lt;br /&gt;
* 修復若干已知問題&lt;br /&gt;
|-&lt;br /&gt;
|2.0.3 || TAMediaSDK_2.0.3 || 1588 KB ||  &lt;br /&gt;
* 調整插頁式廣告載入程序以促進更良好的用戶經驗&lt;br /&gt;
|-&lt;br /&gt;
|2.0.4 || TAMediaSDK_2.0.4 || 1588 KB ||  &lt;br /&gt;
* 修復因未設定TWMVideoAdListener所導致的NullPointerException問題&lt;br /&gt;
* 修復若干畫面顯示不正常的現象&lt;br /&gt;
|-&lt;br /&gt;
|2.0.5 || TAMediaSDK_2.0.5 || 1587 KB ||  &lt;br /&gt;
&lt;br /&gt;
* 功能優化, 支援多種多媒體效果&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2.0.6 || TAMediaSDK_2.0.6 || 1587 KB ||  &lt;br /&gt;
* SDK穩定性調整&lt;br /&gt;
|-&lt;br /&gt;
|3.0.0 || TAMediaSDK_3.0.0 || 1876 KB ||  &lt;br /&gt;
* 提供SMART_BANNER廣告型態&lt;br /&gt;
* 提供原生性廣告型態&lt;br /&gt;
|-&lt;br /&gt;
|3.0.1 || TAMediaSDK_3.0.1 || 1876 KB ||  &lt;br /&gt;
* 針對插頁式廣告以及影音廣告呈現優化&lt;br /&gt;
|-&lt;br /&gt;
|4.0.0c ||TAMediaSDK_4.0.0c || 1920 KB ||  &lt;br /&gt;
* 移除READ_PHONE_STATE權限&lt;br /&gt;
* 新增懸浮類型廣告&lt;br /&gt;
* 原生性廣告新增支援1200X627圖示&lt;br /&gt;
* 全版廣告支援互動效果(麥克風&amp;amp;補光燈)&lt;br /&gt;
|-&lt;br /&gt;
|4.0.1 ||TAMediaAndroidSDK_4.0.1 || 1920 KB ||  &lt;br /&gt;
* 廣告效能優化&lt;br /&gt;
|-&lt;br /&gt;
|5.0.1 ||TAMediaAndroidSDK_5.0.1 || 1.88 MB ||&lt;br /&gt;
* SDK 穩定性調整&lt;br /&gt;
* 增加互動式插頁廣告種類&lt;br /&gt;
* 優化插頁: 小鍵盤不再擋住輸入框&lt;br /&gt;
* 調整 Callback 時機&lt;br /&gt;
|-&lt;br /&gt;
|5.0.2 || TAMediaAndroidSDK_5.0.2 || 2.02 MB ||&lt;br /&gt;
* 修正部份 Samsung 手機在特定狀況出現異常的問題&lt;br /&gt;
|-&lt;br /&gt;
|6.0.0 || TAMediaAndroidSDK_6.0.0 || 539 KB ||&lt;br /&gt;
* SDK 穩定性調整&lt;br /&gt;
* 新增 InRead 類型廣告&lt;br /&gt;
* 網路模組更改為 Retrofit 2&lt;br /&gt;
* 導入 MRAID 2.0 架構&lt;br /&gt;
|-&lt;br /&gt;
|6.1.1 || TAMediaAndroidSDK_6.1.1 || 908 KB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|6.1.2 || TAMediaAndroidSDK_6.1.2 || 908 KB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|6.2.0 || TAMediaAndroidSDK_6.2.0 || 908 KB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
|-&lt;br /&gt;
|7.0.0 || TAMediaAndroidSDK_7.0.0 || 959 KB ||&lt;br /&gt;
* 新增可支援的廣告素材&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
|-&lt;br /&gt;
|7.0.1 || TAMediaAndroidSDK_7.0.1 || 959 KB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|7.0.2 || TAMediaAndroidSDK_7.0.2 || 960 KB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|7.0.3 || TAMediaAndroidSDK_7.0.3 || 4.23 MB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
|-&lt;br /&gt;
|7.0.4 || TAMediaAndroidSDK_7.0.4 || 4.79 MB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
|-&lt;br /&gt;
|8.0.0 || TAMediaAndroidSDK_8.0.0 || 2.7 MB ||&lt;br /&gt;
* 新增原生廣告整合方式&lt;br /&gt;
* 調整橫幅與InRead廣告&lt;br /&gt;
* 新增兒童導向廣告設定&lt;br /&gt;
|-&lt;br /&gt;
|8.0.1 || [[媒體:TAMediaAndroidSDK_8.0.1.zip|TAMediaAndroidSDK_8.0.1]] || 2.7 MB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
* 支援Android 12上取得AAID之宣告&lt;br /&gt;
|-&lt;br /&gt;
|8.0.2 || [[媒體:TAMediaAndroidSDK 8.0.2.zip|TAMediaAndroidSDK_8.0.2]] || 2.81 MB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|8.0.3 || [[媒體:TAMediaAndroidSDK_8.0.3.zip|TAMediaAndroidSDK_8.0.3]] || 2.68 MB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|8.0.4 || [[媒體:TAMediaAndroidSDK_8.0.4.zip|TAMediaAndroidSDK_8.0.4]] || 2.71 MB ||&lt;br /&gt;
* 原生廣告優化&lt;br /&gt;
* 資安修正&lt;br /&gt;
* [https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Getting_Started_SDK8#Gradle%E8%A8%AD%E5%AE%9A Gradle更新]&lt;br /&gt;
* [https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Proguard_SDK8 Proguard更新]&lt;br /&gt;
|-&lt;br /&gt;
|8.0.5 || [[媒體:TAMediaAndroidSDK_8.0.5.zip|TAMediaAndroidSDK_8.0.5]] || 1.9 MB ||&lt;br /&gt;
* 支援targetSdk=34 (Android 14)&lt;br /&gt;
* 修正InRead廣告寬度問題&lt;br /&gt;
* [https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Getting_Started_SDK8#Gradle%E8%A8%AD%E5%AE%9A_2 Gradle更新]&lt;br /&gt;
* [https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Getting_Started_SDK8#Proguard%E8%A8%AD%E5%AE%9A Proguard更新]&lt;br /&gt;
|-&lt;br /&gt;
|8.0.6 || [[媒體:TAMediaAndroidSDK_8.0.6.zip|TAMediaAndroidSDK_8.0.6]] || 2.1 MB ||&lt;br /&gt;
* 修正Interstitial偶發閃退問題&lt;br /&gt;
|-&lt;br /&gt;
|8.0.7 [[檔案:new-xxl.png|40px]] || [[媒體:TAMediaAndroidSDK_8.0.7.zip|TAMediaAndroidSDK_8.0.7]] || 3.2 MB ||&lt;br /&gt;
* 支援Kotlin 2.2.0&lt;br /&gt;
* 支持Retrofit 3.0.0&lt;br /&gt;
* 支持Jetpack Compose開發&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide|回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:TAMediaAndroidSDK_8.0.7.zip&amp;diff=3740</id>
		<title>檔案:TAMediaAndroidSDK 8.0.7.zip</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:TAMediaAndroidSDK_8.0.7.zip&amp;diff=3740"/>
		<updated>2025-11-25T07:03:46Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3739</id>
		<title>Android Native Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3739"/>
		<updated>2025-11-18T08:09:34Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* Compose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;Native廣告支援內容&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節 !! 資料型別&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| ShortSubject || align=&amp;quot;center&amp;quot;| 短標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| LongSubject || align=&amp;quot;center&amp;quot;| 長標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| Body || align=&amp;quot;center&amp;quot;| 內文 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| CTA || align=&amp;quot;center&amp;quot;| 行動呼籲 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconRect || align=&amp;quot;center&amp;quot;| 小圖 (長) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconSquare || align=&amp;quot;center&amp;quot;| 小圖 (方) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image960_640 || align=&amp;quot;center&amp;quot;| 大圖 (960x640) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image1200_627 || align=&amp;quot;center&amp;quot;| 大圖 (1200x627) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| mediaContent || align=&amp;quot;center&amp;quot;| 多媒體素材(影音或主要圖片) || align=&amp;quot;center&amp;quot;| TWMMediaContent&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-native-ad-view/index.html NativeAd]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;實作方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 1:&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
產生一個TWMNativeAd物件, 設定廣告版位adUnitId, 並呼叫load()請求原生廣告&lt;br /&gt;
監聽TWMAdListener, 透過onReceivedAd()取得原生廣告資訊TWMNativeAd.nativeAdContent&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // Native ad assets.&lt;br /&gt;
        var body: String? = null&lt;br /&gt;
        var shortSubject: String? = null&lt;br /&gt;
        var longSubject: String? = null&lt;br /&gt;
        var callToAction:String? = null&lt;br /&gt;
        var iconRect: TWMNativeAd.Image? = null&lt;br /&gt;
        var iconSquare: TWMNativeAd.Image? = null&lt;br /&gt;
        var image960x640: TWMNativeAd.Image? = null&lt;br /&gt;
        var image1200x627: TWMNativeAd.Image? = null&lt;br /&gt;
        var mediaContent: TWMMediaContent? = null&lt;br /&gt;
&lt;br /&gt;
        fun loadAd(context: Context,&lt;br /&gt;
                   adUnitId: String) {&lt;br /&gt;
            nativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
            nativeAd?.setAdListener(this)&lt;br /&gt;
            nativeAd?.loadAd(TWMAdRequest())&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
            this.body = nativeAd?.nativeAdContent?.body&lt;br /&gt;
            this.shortSubject = nativeAd?.nativeAdContent?.shortSubject&lt;br /&gt;
            this.longSubject = nativeAd?.nativeAdContent?.longSubject&lt;br /&gt;
            this.callToAction = nativeAd?.nativeAdContent?.callToAction&lt;br /&gt;
            this.iconRect = nativeAd?.nativeAdContent?.iconRect&lt;br /&gt;
            this.iconSquare = nativeAd?.nativeAdContent?.iconSquare&lt;br /&gt;
            this.image960x640 = nativeAd?.nativeAdContent?.image960_640&lt;br /&gt;
            this.image1200x627 = nativeAd?.nativeAdContent?.image1200_627&lt;br /&gt;
            this.mediaContent = nativeAd?.nativeAdContent?.mediaContent&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 2:&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
使用TWMNativeAdView作為廣告佈局容器, 開發者可在容器中可自行排列文字(TextView)圖形(ImageView)甚至影片(TWMMediaView)等原生廣告&lt;br /&gt;
下面以短標題, 小圖 (長), Call To Action, 及多媒體素材當範例&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;com.taiwanmobile.pt.adp.view.TWMNativeAdView xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    android:id=&amp;quot;@+id/nativeAdView&amp;quot;&lt;br /&gt;
    android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:background=&amp;quot;@android:color/holo_orange_light&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LinearLayout&lt;br /&gt;
        android:id=&amp;quot;@+id/container&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_gravity=&amp;quot;center&amp;quot;&lt;br /&gt;
        android:minHeight=&amp;quot;50dp&amp;quot;&lt;br /&gt;
        android:orientation=&amp;quot;vertical&amp;quot;&lt;br /&gt;
        android:paddingLeft=&amp;quot;20dp&amp;quot;&lt;br /&gt;
        android:paddingRight=&amp;quot;20dp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_short_subject&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;ImageView&lt;br /&gt;
            android:id=&amp;quot;@+id/iv_icon_rect&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_call_to_action&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;com.taiwanmobile.pt.adp.nativead.TWMMediaView&lt;br /&gt;
            android:id=&amp;quot;@+id/ad_media&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;150dp&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;120dp&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;lt;/com.taiwanmobile.pt.adp.view.TWMNativeAdView&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 3:&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
將TWMNativeAd.nativeAdContent的廣告資訊套用在上述廣告佈局中&lt;br /&gt;
並於TWMNativeAdView進行填充(ex. setShortSubjectView()), 賦予點擊後開啟廣告之功能&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        val adContent: TWMNativeAdContent? = ad?.nativeAdContent&lt;br /&gt;
&lt;br /&gt;
        // shortSubject&lt;br /&gt;
        adContent?.shortSubject.let { subject -&amp;gt;&lt;br /&gt;
            // 顯示短標題於TextView之中&lt;br /&gt;
            vb.tvShortSubject.text = subject&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setShortSubjectView(vb.tvShortSubject)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // rect icon&lt;br /&gt;
        adContent?.iconRect?.getDrawable().let { rectDrawable -&amp;gt;&lt;br /&gt;
            // 顯示小圖 (長)於ImageView之中&lt;br /&gt;
            vb.ivIconRect.setImageDrawable(rectDrawable)&lt;br /&gt;
            vb.ivIconRect.adjustViewBounds = true&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setRectangleIconView(vb.ivIconRect)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // call to action&lt;br /&gt;
        adContent?.callToAction?.let { cta -&amp;gt;&lt;br /&gt;
            // 顯示行動呼籲於TextView之中&lt;br /&gt;
            vb.tvCallToAction.text = cta&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setCallToActionView(vb.tvCallToAction)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 4:&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
如欲顯示影片廣告, 將mediaContent指派給TWMMediaView, 用TWMMediaView來顯示影片&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // MediaContent&lt;br /&gt;
        adContent?.mediaContent?.let { content -&amp;gt;&lt;br /&gt;
            // 顯示TWMMediaContent於TWMMediaView&lt;br /&gt;
            vb.adMedia.setMediaContent(content)&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能(前往了解)&lt;br /&gt;
            vb.nativeAdView.setMediaView(vb.adMedia)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 5:&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
完成上述後, TWMNativeAd物件指派給TWMNativeAdView, 啟動原生廣告顯示 (重要!!!)&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;TWMNativeAdOptions&amp;lt;/b&amp;gt; ==&lt;br /&gt;
TWMAdRequest.setNativeAdOptions()供開發者相關功能, 調整原生廣告屬性&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| DISABLE_IMAGE_LOADING || align=&amp;quot;center&amp;quot;| TWMNativeAdContent.Image不含Drawable物件, 加速廣告下載速度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_START_UNMUTED || align=&amp;quot;center&amp;quot;| TWMMediaView影片初始為有聲音, 預設為靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_CUSTOM_CONTROLS_REQUESTED || align=&amp;quot;center&amp;quot;| TWMMediaView不提供影片控制項, 預設為提供&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| MEDIA_PREFER_IMAGE || align=&amp;quot;center&amp;quot;| TWMMediaView總是顯示圖片, 預設為影片&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: 下面例子為影片初始即有聲音&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val adRequest = TWMAdRequest()&lt;br /&gt;
    adRequest.setNativeAdOptions(arrayOf(TWMNativeAdOptions.VIDEO_START_UNMUTED))&lt;br /&gt;
    nativeAd?.loadAd(adRequest)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;釋放廣告&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;請在Activity的生命週期中加入下述的呼叫, 正確釋放TWMNativeAd物件&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  override fun onDestroy() {&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
        nativeAd?.destroy()&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 文字&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 影片&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead1.png | 300px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead2.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 客製化影片撥放元件(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
當TWMAdRequest.setNativeAdOptions()使用VIDEO_CUSTOM_CONTROLS_REQUESTED&lt;br /&gt;
TWMVideoController / TWMMediaContent包含了下列功能, 提供影片相關資訊, 提供開發者客製化自己的影片控制項&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.isMuted() || align=&amp;quot;center&amp;quot;| 影片是否靜音中&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.mute(boolean)|| align=&amp;quot;center&amp;quot;| 影片靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.setVideoLifecycleCallback(callback) || align=&amp;quot;center&amp;quot;| 影片生命週期(VideoLifecycleCallback)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getCurrentTime() || align=&amp;quot;center&amp;quot;| 取得目前撥放進度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getDuration() || align=&amp;quot;center&amp;quot;| 取得影片長度&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. TWMMediaView 預設UI項目客製化(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援TWMMediaView UI項目客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
開發者可透過TWMMediaView下列函式對預設UI控制項進行客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:70%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTAVisible(visible: Boolean) || align=&amp;quot;center&amp;quot;| 設定CTA是否顯示&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTATextSize(textSize: Float)|| align=&amp;quot;center&amp;quot;| 設定CTA文字大小 &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVideoCountdownTextSize(textSize: Float) || align=&amp;quot;center&amp;quot;| 設定影片倒數文字大小&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVolumeImageSize(imageSize: Int) || align=&amp;quot;center&amp;quot;| 設定靜音圖示大小&lt;br /&gt;
|}&lt;br /&gt;
[[image:TWMMediaView_CustomUI_Demo.png | 400px]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 支援Open-Measurement友善障礙物(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援Open-Measurement友善障礙物事件處理&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://interactiveadvertisingbureau.github.io/Open-Measurement-SDKAndroid/&lt;br /&gt;
&lt;br /&gt;
開發者可透過TWMNativeAdView.addFriendlyObstruction(view, purpose)將與原生廣告相關的控制元件設定為友善障礙物&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
下面以FloatingActionButton為例子, 按鈕本身為影片靜音設定,使用FriendlyObstructionPurpose.VIDEO_CONTROLS為障礙物目的&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
於TWMNativeAd.setNativeAd()之前完成障礙物添加&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // friendlyObstruction&lt;br /&gt;
        vb.nativeAdView.addFriendlyObstruction(vb.fab, TWMNativeAdView.FriendlyObstructionPurpose.VIDEO_CONTROLS)&lt;br /&gt;
        vb.fab.setOnClickListener {&lt;br /&gt;
            adContent?.mediaContent?.getVideoController()?.let { videoController -&amp;gt;&lt;br /&gt;
                val isMute = videoController.isMuted()&lt;br /&gt;
                // 設定影片靜音&lt;br /&gt;
                videoController.mute(!isMute)&lt;br /&gt;
                when (videoController.isMuted()) {&lt;br /&gt;
                    true -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_up_24) }&lt;br /&gt;
                    false -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_mute_24) }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 元件總類 !! 描述&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.VIDEO_CONTROLS || align=&amp;quot;center&amp;quot;| 影音控制項&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.CLOSE_AD || align=&amp;quot;center&amp;quot;| 關閉廣告&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.NOT_VISIBLE || align=&amp;quot;center&amp;quot;| 透明元件&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.OTHER || align=&amp;quot;center&amp;quot;| 非上述三種類別&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; [[檔案:new-xxl.png|30px]] ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(NativeAdComposeActivity), TWMNativeAdComposable()中有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;90%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(上頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(下頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊素材後開啟廣告&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_1.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_2.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
原生廣告使用流程為先取得廣告物件TWMNativeAd, 再套用在TWMNativeAdView (TWMNativeAdComposable)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[檔案:SDK8.0.7_nativead_architecture.png | 800px ]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val nativeAd: TWMNativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
    nativeAd.setAdListener(this)&lt;br /&gt;
    nativeAd.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3738</id>
		<title>Android InRead Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3738"/>
		<updated>2025-11-18T08:07:26Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* Compose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;簡介&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:InRead廣告是SDK8新增的內嵌式廣告, 您可將廣告放置在文章、列表中, 當App使用者滑動到您指定的位置時便可看見InRead廣告, 若該廣告為影音廣告, 會等待廣告出現在畫面中才會進行撥放。&amp;lt;br&amp;gt;&lt;br /&gt;
:InRead廣告為:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;&amp;lt;b&amp;gt; TWMInReadAdAnchor:&amp;lt;/b&amp;gt;  固定在螢幕下方的廣告, 廣告高度不會超過螢幕的30%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:在投放限制方面，由於不同版本的手機支援程度不同，InRead廣告僅會投放在符合下列條件的手機：&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android 5.0 (API 21) 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android System WebView 版本43 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:而在介接方式上,下列章節將說明如何串接InRead廣告&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view.inread/index.html InRead]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告串接方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
===&amp;lt;b&amp;gt;InRead&amp;lt;/b&amp;gt; ===&lt;br /&gt;
:InRead廣告, 不需事先設置XML或透過程式動態加入廣告View(addView), 只要直接初始InRead物件並請求廣告即可。&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 1: 廣告初始設置&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
您必須依序輸入&amp;lt;b&amp;gt;Activity&amp;lt;/b&amp;gt;、&amp;lt;b&amp;gt;InRead Anchor版位ID&amp;lt;/b&amp;gt;以初始化InRead物件, 並且設置Listener偵聽廣告的Callback&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;重要! 請務必在onResume、onPause和onDestroy分別加上resume、pause和destroy函式, 避免廣告發生無法預期的問題&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  class InReadActivityKt:AppCompatActivity() {&lt;br /&gt;
    private var mTestResult: TextView? =null&lt;br /&gt;
    private var inread: TWMInReadAdAnchor? = null&lt;br /&gt;
    override fun onCreate(savedInstanceState: Bundle?) {&lt;br /&gt;
        super.onCreate(savedInstanceState)&lt;br /&gt;
        setContentView(R.layout.activity_inread)&lt;br /&gt;
        mTestResult = findViewById(R.id.inread_result)&lt;br /&gt;
        initAd()&lt;br /&gt;
    }&lt;br /&gt;
    private fun initAd() {&lt;br /&gt;
        inread = TWMInReadAdAnchor(this,&amp;lt;b&amp;gt;TAMEDIA_INREAD_ANCHOR_ADUNITID&amp;lt;/b&amp;gt;)&lt;br /&gt;
        inread.apply {&lt;br /&gt;
            inread?.setAdListener(object : TWMAdViewListener {&lt;br /&gt;
                override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求收到廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onFailedToReceiveAd(ad: TWMAd, errorCode: TWMAdRequest.ErrorCode) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求發生錯誤, 並沒有廣告內容可供使用&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onPresentScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已呈現&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onDismissScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已被關閉&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onLeaveApplication(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示因點擊廣告或其他因素離開app&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
            })&lt;br /&gt;
        }&lt;br /&gt;
        inread?.loadAd(TWMAdRequest())&lt;br /&gt;
    }&lt;br /&gt;
    override fun onResume() {&lt;br /&gt;
        super.onResume()&lt;br /&gt;
        inread?.resume()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onPause() {&lt;br /&gt;
        super.onPause()&lt;br /&gt;
        inread?.pause()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onDestroy() {&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
        inread?.destroy()&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
   companion object{&lt;br /&gt;
        const val TAMEDIA_INREAD_ANCHOR_ADUNITID: String = &amp;quot;&amp;lt;b&amp;gt;{TAMEDIA_INREAD_ANCHOR_ADUNITID}&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 2: 請求廣告&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
請求廣告前，你需要創建一個預設的TWMAdRequest物件, 並將TWMAdReqeust物件傳入loadAd&lt;br /&gt;
  inread?.loadAd(TWMAdRequest())&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b&amp;gt;結束廣告&amp;lt;/b&amp;gt; ===&lt;br /&gt;
destroy() 必須被呼叫, 即使TWMInReadAdAnchor沒有被使用到或參考&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
  inread.destroy()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | InRead&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 inread.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; [[檔案:new-xxl.png|30px]] ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(InReadComposeActivity), 內有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊InRead後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val inread: TWMInReadAdAnchor = TWMInReadAdAnchor(activity, adUnitId)&lt;br /&gt;
    inread.setAdListener(this)&lt;br /&gt;
    inread.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Interstitial_Ads_SDK8&amp;diff=3737</id>
		<title>Android Interstitial Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Interstitial_Ads_SDK8&amp;diff=3737"/>
		<updated>2025-11-18T08:07:10Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* Compose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;簡介&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TWMInterstitialAd為全螢幕大小之廣告, 使用方法跟TWMAdView非常類似, 顯示廣告時需在onReceivedAd()之後呼叫show()函式以便顯示&amp;lt;br/&amp;gt;&amp;lt;b&amp;gt;注意：目前Interstitial廣告有相同版位ID在同一台裝置上，預設為120分鐘展示一次,如需調整請洽服務窗口&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-interstitial-ad/index.html Interstitial]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;實作方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;廣告初始設置&amp;lt;/span&amp;gt;&lt;br /&gt;
 var interstitialAd : TWMInterstitialAd? = null&lt;br /&gt;
 interstitialAd = TWMInterstitialAd(this ,TAMEDIA_INTERSTITIAL_ADUNITID)&lt;br /&gt;
 companion object{&lt;br /&gt;
        const val TAMEDIA_INTERSTITIAL_ADUNITID: String = &amp;quot;&amp;lt;b&amp;gt;{TAMEDIA_INTERSTITIAL_ADUNITID}&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;加入TWMAdViewListener監聽廣告投放情況，並在onReceiveAd Callback內呼叫showAd()&amp;lt;/span&amp;gt;&lt;br /&gt;
:在&amp;lt;b&amp;gt;onReceiveAd&amp;lt;/b&amp;gt;後可透過&amp;lt;b&amp;gt;showAd()&amp;lt;/b&amp;gt;顯示廣告&lt;br /&gt;
 interstitialAd.setAdListener(object : TWMAdViewListener {&lt;br /&gt;
     override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示本次請求收到廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
          interstitialAd?.show()&lt;br /&gt;
     }&lt;br /&gt;
     override fun onFailedToReceiveAd(ad: TWMAd, errorCode: TWMAdRequest.ErrorCode) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示本次請求發生錯誤, 並沒有廣告內容可供使用&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onPresentScreen(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示廣告內容已呈現&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onDismissScreen(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示廣告內容已被關閉&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onLeaveApplication(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示因點擊廣告或其他因素離開app&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
 })&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;請求廣告&amp;lt;/span&amp;gt;&lt;br /&gt;
使用預設TWMAdRequest&lt;br /&gt;
  interstitialAd?.loadAd(TWMAdRequest())&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;結束廣告&amp;lt;/span&amp;gt;&lt;br /&gt;
destroy() 必須被呼叫, 即使Interstitial沒有被使用到或參考&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
  interstitialAd.destroy()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interstitial畫面展示 ==&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 插頁式廣告呈現&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8 inerstitial.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; [[檔案:new-xxl.png|30px]] ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(InterstitialComposeActivity), 內有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊Interstitial後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_interstitial.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_interstitial_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_interstitial_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val interstitialAd: TWMInterstitialAd = TWMInterstitialAd(activity, adUnitId)&lt;br /&gt;
    interstitialAd.setAdListener(this)&lt;br /&gt;
    interstitialAd.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Banner_Ads_SDK8&amp;diff=3736</id>
		<title>Android Banner Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Banner_Ads_SDK8&amp;diff=3736"/>
		<updated>2025-11-18T08:06:22Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* Compose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;Banner 廣告支援格式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Banner廣告支援下列數種形式：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告格式 !! 大小(寬度x高度) !! TWMAdSize 常數值&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|BANNER || align=&amp;quot;center&amp;quot;|320x50 || align=&amp;quot;center&amp;quot;|TWMAdSize.BANNER&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|BANNER || align=&amp;quot;center&amp;quot;|300x250 || align=&amp;quot;center&amp;quot;|TWMAdSize.BANNER_300X250&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|BANNER || align=&amp;quot;center&amp;quot;|1200x627 || align=&amp;quot;center&amp;quot;|TWMAdSize.BANNER_1200X627&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|SMART_BANNER || align=&amp;quot;center&amp;quot;|自動對應裝置寬度, 並對應適當的高度 || align=&amp;quot;center&amp;quot;|TWMAdSize.SMART_BANNER&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK設計文件&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-view/index.html Banner]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;實作方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;廣告初始設置&amp;lt;/span&amp;gt;&lt;br /&gt;
:動態生成TWMAdView加入Layout中&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Layout (XML範例) !! Activity(Kotlin)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%; padding:1%;&amp;quot;|&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;RelativeLayout&lt;br /&gt;
  	android:id=&amp;quot;@+id/ad_container&amp;quot;&lt;br /&gt;
  	android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
  	android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
  	android:gravity=&amp;quot;center_horizontal&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/RelativeLayout&amp;gt; &lt;br /&gt;
| style=&amp;quot;width:60%; padding: 1%;&amp;quot;|&lt;br /&gt;
  var adView: TWMAdView? = null&lt;br /&gt;
  var mRelativeLayout: RelativeLayout? = null&lt;br /&gt;
  &lt;br /&gt;
  companion object {  &lt;br /&gt;
      const val TAMEDIA_BANNER_AD_UNIT_ID: String = &amp;quot;INSERT_YOUR_AD_UNIT_ID&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  // Other Implement ... &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 依序傳入Activity, TWMAdSize, 以及Ad Unit Id，TWMAdSize請參考頁首的TWMAdSize常數值&amp;lt;/b&amp;gt;&lt;br /&gt;
  adView = TWMAdView(this,TWMAdSize.BANNER,TAMEDIA_BANNER_AD_UNIT_ID)&lt;br /&gt;
  val layoutParams = RelativeLayout.LayoutParams(&lt;br /&gt;
      RelativeLayout.LayoutParams.WRAP_CONTENT,&lt;br /&gt;
      RelativeLayout.LayoutParams.WRAP_CONTENT&lt;br /&gt;
  )&lt;br /&gt;
  layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM)&lt;br /&gt;
  layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL)&lt;br /&gt;
  adView!!.layoutParams = layoutParams&lt;br /&gt;
  mRelativeLayout?.addView(adView)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:或是將TWMAdView宣告至XML中, 透過findViewById取得TWMAdView&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;LinearLayout xmlns:android=&amp;lt;nowiki&amp;gt;&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
    android:layout_height=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
    android:orientation=&amp;quot;vertical&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;lt;com.taiwanmobile.pt.adp.view.TWMAdView&lt;br /&gt;
        xmlns:ad=&amp;lt;nowiki&amp;gt;&amp;quot;http://schemas.android.com/apk/lib/com.taiwanmobile.pt.adp.view&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
        android:id=&amp;quot;@+id/adView&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        ad:adSize=&amp;quot;BANNER&amp;quot;&lt;br /&gt;
        ad:adunitId=&amp;quot;{AD_UNIT_ID}&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;lt;/com.taiwanmobile.pt.adp.view.TWMAdView&amp;gt;&lt;br /&gt;
 &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;加入TWMAdViewListener監聽廣告投放情況&amp;lt;/span&amp;gt;&lt;br /&gt;
  adView.setAdListener(object : TWMAdViewListener {&lt;br /&gt;
     override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示本次請求收到廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onFailedToReceiveAd(ad: TWMAd, errorCode: TWMAdRequest.ErrorCode) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示本次請求發生錯誤, 並沒有廣告內容可供使用&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onPresentScreen(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示廣告內容已呈現&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onDismissScreen(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示廣告內容已被關閉&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onLeaveApplication(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示因點擊廣告或其他因素離開app&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
  })&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;請求廣告&amp;lt;/span&amp;gt;&lt;br /&gt;
請求廣告前，你需要創建一個預設的TWMAdRequest物件, 並將TWMAdReqeust物件傳入loadAd&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
  adView?.loadAd(TWMAdRequest())	&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;最後請記得, 於Activity.onDestroy()回收TWMAdView物件&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
  override fun onDestroy() {&lt;br /&gt;
      super.onDestroy()&lt;br /&gt;
      if (view is TWMAdView) {&lt;br /&gt;
          view.destroy()&lt;br /&gt;
      }&lt;br /&gt;
      mRelativeLayout?.removeAllViews()&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;b&amp;gt;畫面展示&amp;lt;/b&amp;gt;==&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊Banner後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊Banner後撥打電話&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8 banner.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8 banner click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:4.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; [[檔案:new-xxl.png|30px]] ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(BannerComposeActivity), TWMBannerComposable()中有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊Banner後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_banner.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_banner_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_banner_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        val adView: TWMAdView = TWMAdView(activity, adSize, adunitId)&lt;br /&gt;
        val paramAd = RelativeLayout.LayoutParams(&lt;br /&gt;
            RelativeLayout.LayoutParams.MATCH_PARENT,&lt;br /&gt;
            RelativeLayout.LayoutParams.WRAP_CONTENT&lt;br /&gt;
        )&lt;br /&gt;
        paramAd.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM)&lt;br /&gt;
        paramAd.addRule(RelativeLayout.CENTER_HORIZONTAL)&lt;br /&gt;
        adView?.layoutParams = paramAd&lt;br /&gt;
        adView?.visibility = View.INVISIBLE&lt;br /&gt;
        container?.addView(adView)&lt;br /&gt;
&lt;br /&gt;
        adView?.loadAd(adRequest.apply {&lt;br /&gt;
            setChildDirectedTreatment(true)&lt;br /&gt;
        })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Getting_Started_SDK8&amp;diff=3735</id>
		<title>Android Getting Started SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Getting_Started_SDK8&amp;diff=3735"/>
		<updated>2025-11-18T08:05:51Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* MADP SDK 8.0.7+ (Kotlin 2.0.0+) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;簡介&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:TAmedia SDK提供Android Mobile App開發者簡易迅速的方式整合行動App廣告, 廣告的種類包含&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Banner&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Interstitial&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;InRead Anchor&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Native&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== &amp;lt;b&amp;gt;系統需求&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:Android 5.0以上 (API Level 21+)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK說明文件&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/index.html SDK說明文件]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;APP專案整合SDK&amp;lt;/b&amp;gt; ==&lt;br /&gt;
請按照下列方式設置專案&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 1: 將SDK放入app專案的&amp;lt;b&amp;gt;libs&amp;lt;/b&amp;gt;資料夾&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:請至[[Download MADP Android SDK|下載 Download SDK]]下載SDK，並將壓縮檔內的AAR檔放至專案的libs資料夾, 若無libs資料夾請自行建立&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[檔案:AS SDK8 aar.png | 300px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 2-1: 編輯app專案中&amp;lt;b&amp;gt;build.gradle&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[檔案:AS SDK8 gradle.png | 300px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:請加入TAmedia SDK aar與下列相依性函式庫&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;retrofit&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;ads identifier&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;gson&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;appset&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;jetpack security-crypto&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;activity-ktx&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== MADP SDK 8.0.6 (Kotlin 1.8.x ~ 1.9.22) ======&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
dependencies {&lt;br /&gt;
&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    // MADP library&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    implementation files('libs/adpmobile-lib-r8.0.0.aar')&lt;br /&gt;
    implementation files('libs/omsdk-android-1.3.37-release.aar')&lt;br /&gt;
&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    // MADP library dependencies&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    // retrofit&lt;br /&gt;
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'&lt;br /&gt;
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'&lt;br /&gt;
    implementation 'com.squareup.retrofit2:converter-scalars:2.9.0'&lt;br /&gt;
    // google ads identifier&lt;br /&gt;
    implementation 'com.google.android.gms:play-services-ads-identifier:17.0.1'&lt;br /&gt;
    // google app set id&lt;br /&gt;
    implementation 'com.google.android.gms:play-services-appset:16.0.1'&lt;br /&gt;
    // gson&lt;br /&gt;
    implementation 'com.google.code.gson:gson:2.8.6'&lt;br /&gt;
    // Jetpack Security&lt;br /&gt;
    implementation 'androidx.security:security-crypto:1.1.0-alpha03'&lt;br /&gt;
    // activity-ktx&lt;br /&gt;
    implementation 'androidx.activity:activity-ktx:1.9.3'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== MADP SDK 8.0.7+ (Kotlin 2.0.0+) [[檔案:new-xxl.png|30px]]  ======&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
dependencies {&lt;br /&gt;
&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    // MADP library&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    implementation files('libs/adpmobile-lib-r8.0.7.aar')&lt;br /&gt;
    implementation files('libs/omsdk-android-1.3.37-release.aar')&lt;br /&gt;
&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    // MADP library dependencies&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    // retrofit&lt;br /&gt;
    implementation 'com.squareup.retrofit2:retrofit:3.0.0'&lt;br /&gt;
    implementation 'com.squareup.retrofit2:converter-gson:3.0.0'&lt;br /&gt;
    implementation 'com.squareup.retrofit2:converter-scalars:3.0.0'&lt;br /&gt;
    // google ads identifier&lt;br /&gt;
    implementation 'com.google.android.gms:play-services-ads-identifier:18.2.0'&lt;br /&gt;
    // google app set id&lt;br /&gt;
    implementation 'com.google.android.gms:play-services-appset:16.1.0'&lt;br /&gt;
    // gson&lt;br /&gt;
    implementation 'com.google.code.gson:gson:2.13.2'&lt;br /&gt;
    // Jetpack Security&lt;br /&gt;
    implementation 'androidx.security:security-crypto:1.1.0'&lt;br /&gt;
    // activity-ktx&lt;br /&gt;
    implementation 'androidx.activity:activity-ktx:1.11.0'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;權限設定&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
[[檔案:Import SDK7 Step3-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Required Permission&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;amp;lt;!-- TAmedia Required Permission --&amp;amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.INTERNET&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_WIFI_STATE&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_NETWORK_STATE&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Optional Permission&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;amp;lt;!-- TAmedia Optional Permission --&amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.VIBRATE&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.CAMERA&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.RECORD_AUDIO&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_COARSE_LOCATION&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_FINE_LOCATION&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.WRITE_EXTERNAL_STORAGE&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;targetSdk=35+ (Android 15+) 的應用程式 &amp;lt;/b&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
: Target API 為 35+的開發者應用程式，但是屬於 &amp;lt;b&amp;gt;闔家適用計畫，或將兒童導向應用程式&amp;lt;/b&amp;gt; 請於AndroidManifest.xml中加入下列設定，移除AD_ID使用權限&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;manifest &lt;br /&gt;
    xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    xmlns:tools=&amp;quot;http://schemas.android.com/tools&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;uses-permission android:name=&amp;quot;com.google.android.gms.permission.AD_ID&amp;quot; tools:node=&amp;quot;remove&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
詳情可參考Google網站說明:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://support.google.com/googleplay/android-developer/answer/6048248?hl=zh-Hant 2021 年 Google Play 服務更新]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://support.google.com/googleplay/android-developer/topic/9877766 Google Play Policy - 家庭]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Getting_Started_SDK8&amp;diff=3734</id>
		<title>Android Getting Started SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Getting_Started_SDK8&amp;diff=3734"/>
		<updated>2025-11-18T08:05:27Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* targetSdk=35+ (Android 15+) 的應用程式 30px  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;簡介&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:TAmedia SDK提供Android Mobile App開發者簡易迅速的方式整合行動App廣告, 廣告的種類包含&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Banner&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Interstitial&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;InRead Anchor&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Native&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== &amp;lt;b&amp;gt;系統需求&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:Android 5.0以上 (API Level 21+)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK說明文件&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/index.html SDK說明文件]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;APP專案整合SDK&amp;lt;/b&amp;gt; ==&lt;br /&gt;
請按照下列方式設置專案&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 1: 將SDK放入app專案的&amp;lt;b&amp;gt;libs&amp;lt;/b&amp;gt;資料夾&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:請至[[Download MADP Android SDK|下載 Download SDK]]下載SDK，並將壓縮檔內的AAR檔放至專案的libs資料夾, 若無libs資料夾請自行建立&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[檔案:AS SDK8 aar.png | 300px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 2-1: 編輯app專案中&amp;lt;b&amp;gt;build.gradle&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[檔案:AS SDK8 gradle.png | 300px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:請加入TAmedia SDK aar與下列相依性函式庫&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;retrofit&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;ads identifier&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;gson&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;appset&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;jetpack security-crypto&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;activity-ktx&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== MADP SDK 8.0.6 (Kotlin 1.8.x ~ 1.9.22) ======&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
dependencies {&lt;br /&gt;
&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    // MADP library&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    implementation files('libs/adpmobile-lib-r8.0.0.aar')&lt;br /&gt;
    implementation files('libs/omsdk-android-1.3.37-release.aar')&lt;br /&gt;
&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    // MADP library dependencies&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    // retrofit&lt;br /&gt;
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'&lt;br /&gt;
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'&lt;br /&gt;
    implementation 'com.squareup.retrofit2:converter-scalars:2.9.0'&lt;br /&gt;
    // google ads identifier&lt;br /&gt;
    implementation 'com.google.android.gms:play-services-ads-identifier:17.0.1'&lt;br /&gt;
    // google app set id&lt;br /&gt;
    implementation 'com.google.android.gms:play-services-appset:16.0.1'&lt;br /&gt;
    // gson&lt;br /&gt;
    implementation 'com.google.code.gson:gson:2.8.6'&lt;br /&gt;
    // Jetpack Security&lt;br /&gt;
    implementation 'androidx.security:security-crypto:1.1.0-alpha03'&lt;br /&gt;
    // activity-ktx&lt;br /&gt;
    implementation 'androidx.activity:activity-ktx:1.9.3'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== MADP SDK 8.0.7+ (Kotlin 2.0.0+) ======&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
dependencies {&lt;br /&gt;
&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    // MADP library&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    implementation files('libs/adpmobile-lib-r8.0.7.aar')&lt;br /&gt;
    implementation files('libs/omsdk-android-1.3.37-release.aar')&lt;br /&gt;
&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    // MADP library dependencies&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    // retrofit&lt;br /&gt;
    implementation 'com.squareup.retrofit2:retrofit:3.0.0'&lt;br /&gt;
    implementation 'com.squareup.retrofit2:converter-gson:3.0.0'&lt;br /&gt;
    implementation 'com.squareup.retrofit2:converter-scalars:3.0.0'&lt;br /&gt;
    // google ads identifier&lt;br /&gt;
    implementation 'com.google.android.gms:play-services-ads-identifier:18.2.0'&lt;br /&gt;
    // google app set id&lt;br /&gt;
    implementation 'com.google.android.gms:play-services-appset:16.1.0'&lt;br /&gt;
    // gson&lt;br /&gt;
    implementation 'com.google.code.gson:gson:2.13.2'&lt;br /&gt;
    // Jetpack Security&lt;br /&gt;
    implementation 'androidx.security:security-crypto:1.1.0'&lt;br /&gt;
    // activity-ktx&lt;br /&gt;
    implementation 'androidx.activity:activity-ktx:1.11.0'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;權限設定&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
[[檔案:Import SDK7 Step3-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Required Permission&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;amp;lt;!-- TAmedia Required Permission --&amp;amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.INTERNET&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_WIFI_STATE&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_NETWORK_STATE&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Optional Permission&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;amp;lt;!-- TAmedia Optional Permission --&amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.VIBRATE&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.CAMERA&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.RECORD_AUDIO&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_COARSE_LOCATION&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_FINE_LOCATION&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.WRITE_EXTERNAL_STORAGE&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;targetSdk=35+ (Android 15+) 的應用程式 &amp;lt;/b&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
: Target API 為 35+的開發者應用程式，但是屬於 &amp;lt;b&amp;gt;闔家適用計畫，或將兒童導向應用程式&amp;lt;/b&amp;gt; 請於AndroidManifest.xml中加入下列設定，移除AD_ID使用權限&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;manifest &lt;br /&gt;
    xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    xmlns:tools=&amp;quot;http://schemas.android.com/tools&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;uses-permission android:name=&amp;quot;com.google.android.gms.permission.AD_ID&amp;quot; tools:node=&amp;quot;remove&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
詳情可參考Google網站說明:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://support.google.com/googleplay/android-developer/answer/6048248?hl=zh-Hant 2021 年 Google Play 服務更新]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://support.google.com/googleplay/android-developer/topic/9877766 Google Play Policy - 家庭]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Download_MADP_Android_SDK&amp;diff=3733</id>
		<title>Download MADP Android SDK</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Download_MADP_Android_SDK&amp;diff=3733"/>
		<updated>2025-11-18T07:33:08Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version !! Package !! Size !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|2.0.0 || TAMediaSDK_2.0.0 || 1475 KB || Initial release&lt;br /&gt;
|-&lt;br /&gt;
|2.0.1 || TAMediaSDK_2.0.1 || 1475 KB || 修復若干NullpointerException問題&lt;br /&gt;
|-&lt;br /&gt;
|2.0.2 || TAMediaSDK_2.0.2 || 1567 KB ||  &lt;br /&gt;
* 因應google play 內容政策修訂, 增訂對google play sevice的支援&lt;br /&gt;
* 修復若干已知問題&lt;br /&gt;
|-&lt;br /&gt;
|2.0.3 || TAMediaSDK_2.0.3 || 1588 KB ||  &lt;br /&gt;
* 調整插頁式廣告載入程序以促進更良好的用戶經驗&lt;br /&gt;
|-&lt;br /&gt;
|2.0.4 || TAMediaSDK_2.0.4 || 1588 KB ||  &lt;br /&gt;
* 修復因未設定TWMVideoAdListener所導致的NullPointerException問題&lt;br /&gt;
* 修復若干畫面顯示不正常的現象&lt;br /&gt;
|-&lt;br /&gt;
|2.0.5 || TAMediaSDK_2.0.5 || 1587 KB ||  &lt;br /&gt;
&lt;br /&gt;
* 功能優化, 支援多種多媒體效果&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2.0.6 || TAMediaSDK_2.0.6 || 1587 KB ||  &lt;br /&gt;
* SDK穩定性調整&lt;br /&gt;
|-&lt;br /&gt;
|3.0.0 || TAMediaSDK_3.0.0 || 1876 KB ||  &lt;br /&gt;
* 提供SMART_BANNER廣告型態&lt;br /&gt;
* 提供原生性廣告型態&lt;br /&gt;
|-&lt;br /&gt;
|3.0.1 || TAMediaSDK_3.0.1 || 1876 KB ||  &lt;br /&gt;
* 針對插頁式廣告以及影音廣告呈現優化&lt;br /&gt;
|-&lt;br /&gt;
|4.0.0c ||TAMediaSDK_4.0.0c || 1920 KB ||  &lt;br /&gt;
* 移除READ_PHONE_STATE權限&lt;br /&gt;
* 新增懸浮類型廣告&lt;br /&gt;
* 原生性廣告新增支援1200X627圖示&lt;br /&gt;
* 全版廣告支援互動效果(麥克風&amp;amp;補光燈)&lt;br /&gt;
|-&lt;br /&gt;
|4.0.1 ||TAMediaAndroidSDK_4.0.1 || 1920 KB ||  &lt;br /&gt;
* 廣告效能優化&lt;br /&gt;
|-&lt;br /&gt;
|5.0.1 ||TAMediaAndroidSDK_5.0.1 || 1.88 MB ||&lt;br /&gt;
* SDK 穩定性調整&lt;br /&gt;
* 增加互動式插頁廣告種類&lt;br /&gt;
* 優化插頁: 小鍵盤不再擋住輸入框&lt;br /&gt;
* 調整 Callback 時機&lt;br /&gt;
|-&lt;br /&gt;
|5.0.2 || TAMediaAndroidSDK_5.0.2 || 2.02 MB ||&lt;br /&gt;
* 修正部份 Samsung 手機在特定狀況出現異常的問題&lt;br /&gt;
|-&lt;br /&gt;
|6.0.0 || TAMediaAndroidSDK_6.0.0 || 539 KB ||&lt;br /&gt;
* SDK 穩定性調整&lt;br /&gt;
* 新增 InRead 類型廣告&lt;br /&gt;
* 網路模組更改為 Retrofit 2&lt;br /&gt;
* 導入 MRAID 2.0 架構&lt;br /&gt;
|-&lt;br /&gt;
|6.1.1 || TAMediaAndroidSDK_6.1.1 || 908 KB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|6.1.2 || TAMediaAndroidSDK_6.1.2 || 908 KB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|6.2.0 || TAMediaAndroidSDK_6.2.0 || 908 KB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
|-&lt;br /&gt;
|7.0.0 || TAMediaAndroidSDK_7.0.0 || 959 KB ||&lt;br /&gt;
* 新增可支援的廣告素材&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
|-&lt;br /&gt;
|7.0.1 || TAMediaAndroidSDK_7.0.1 || 959 KB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|7.0.2 || TAMediaAndroidSDK_7.0.2 || 960 KB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|7.0.3 || TAMediaAndroidSDK_7.0.3 || 4.23 MB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
|-&lt;br /&gt;
|7.0.4 || TAMediaAndroidSDK_7.0.4 || 4.79 MB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
|-&lt;br /&gt;
|8.0.0 || TAMediaAndroidSDK_8.0.0 || 2.7 MB ||&lt;br /&gt;
* 新增原生廣告整合方式&lt;br /&gt;
* 調整橫幅與InRead廣告&lt;br /&gt;
* 新增兒童導向廣告設定&lt;br /&gt;
|-&lt;br /&gt;
|8.0.1 || [[媒體:TAMediaAndroidSDK_8.0.1.zip|TAMediaAndroidSDK_8.0.1]] || 2.7 MB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
* 支援Android 12上取得AAID之宣告&lt;br /&gt;
|-&lt;br /&gt;
|8.0.2 || [[媒體:TAMediaAndroidSDK 8.0.2.zip|TAMediaAndroidSDK_8.0.2]] || 2.81 MB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|8.0.3 || [[媒體:TAMediaAndroidSDK_8.0.3.zip|TAMediaAndroidSDK_8.0.3]] || 2.68 MB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|8.0.4 || [[媒體:TAMediaAndroidSDK_8.0.4.zip|TAMediaAndroidSDK_8.0.4]] || 2.71 MB ||&lt;br /&gt;
* 原生廣告優化&lt;br /&gt;
* 資安修正&lt;br /&gt;
* [https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Getting_Started_SDK8#Gradle%E8%A8%AD%E5%AE%9A Gradle更新]&lt;br /&gt;
* [https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Proguard_SDK8 Proguard更新]&lt;br /&gt;
|-&lt;br /&gt;
|8.0.5 || [[媒體:TAMediaAndroidSDK_8.0.5.zip|TAMediaAndroidSDK_8.0.5]] || 1.9 MB ||&lt;br /&gt;
* 支援targetSdk=34 (Android 14)&lt;br /&gt;
* 修正InRead廣告寬度問題&lt;br /&gt;
* [https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Getting_Started_SDK8#Gradle%E8%A8%AD%E5%AE%9A_2 Gradle更新]&lt;br /&gt;
* [https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Getting_Started_SDK8#Proguard%E8%A8%AD%E5%AE%9A Proguard更新]&lt;br /&gt;
|-&lt;br /&gt;
|8.0.6 || [[媒體:TAMediaAndroidSDK_8.0.6.zip|TAMediaAndroidSDK_8.0.6]] || 2.1 MB ||&lt;br /&gt;
* 修正Interstitial偶發閃退問題&lt;br /&gt;
|-&lt;br /&gt;
|8.0.7 [[檔案:new-xxl.png|40px]] || [[媒體:TAMediaAndroidSDK_8.0.7.zip|TAMediaAndroidSDK_8.0.7]] || 3.1 MB ||&lt;br /&gt;
* 支援Kotlin 2.2.0&lt;br /&gt;
* 支持Retrofit 3.0.0&lt;br /&gt;
* 支持Jetpack Compose開發&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide|回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Getting_Started_SDK8&amp;diff=3732</id>
		<title>Android Getting Started SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Getting_Started_SDK8&amp;diff=3732"/>
		<updated>2025-11-18T06:31:29Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* targetSdk=35 (Android 15) 的應用程式 30px  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;簡介&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:TAmedia SDK提供Android Mobile App開發者簡易迅速的方式整合行動App廣告, 廣告的種類包含&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Banner&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Interstitial&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;InRead Anchor&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Native&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== &amp;lt;b&amp;gt;系統需求&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:Android 5.0以上 (API Level 21+)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK說明文件&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/index.html SDK說明文件]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;APP專案整合SDK&amp;lt;/b&amp;gt; ==&lt;br /&gt;
請按照下列方式設置專案&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 1: 將SDK放入app專案的&amp;lt;b&amp;gt;libs&amp;lt;/b&amp;gt;資料夾&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:請至[[Download MADP Android SDK|下載 Download SDK]]下載SDK，並將壓縮檔內的AAR檔放至專案的libs資料夾, 若無libs資料夾請自行建立&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[檔案:AS SDK8 aar.png | 300px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 2-1: 編輯app專案中&amp;lt;b&amp;gt;build.gradle&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[檔案:AS SDK8 gradle.png | 300px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:請加入TAmedia SDK aar與下列相依性函式庫&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;retrofit&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;ads identifier&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;gson&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;appset&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;jetpack security-crypto&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;activity-ktx&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== MADP SDK 8.0.6 (Kotlin 1.8.x ~ 1.9.22) ======&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
dependencies {&lt;br /&gt;
&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    // MADP library&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    implementation files('libs/adpmobile-lib-r8.0.0.aar')&lt;br /&gt;
    implementation files('libs/omsdk-android-1.3.37-release.aar')&lt;br /&gt;
&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    // MADP library dependencies&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    // retrofit&lt;br /&gt;
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'&lt;br /&gt;
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'&lt;br /&gt;
    implementation 'com.squareup.retrofit2:converter-scalars:2.9.0'&lt;br /&gt;
    // google ads identifier&lt;br /&gt;
    implementation 'com.google.android.gms:play-services-ads-identifier:17.0.1'&lt;br /&gt;
    // google app set id&lt;br /&gt;
    implementation 'com.google.android.gms:play-services-appset:16.0.1'&lt;br /&gt;
    // gson&lt;br /&gt;
    implementation 'com.google.code.gson:gson:2.8.6'&lt;br /&gt;
    // Jetpack Security&lt;br /&gt;
    implementation 'androidx.security:security-crypto:1.1.0-alpha03'&lt;br /&gt;
    // activity-ktx&lt;br /&gt;
    implementation 'androidx.activity:activity-ktx:1.9.3'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== MADP SDK 8.0.7+ (Kotlin 2.0.0+) ======&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
dependencies {&lt;br /&gt;
&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    // MADP library&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    implementation files('libs/adpmobile-lib-r8.0.7.aar')&lt;br /&gt;
    implementation files('libs/omsdk-android-1.3.37-release.aar')&lt;br /&gt;
&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    // MADP library dependencies&lt;br /&gt;
    // =======================================================================//&lt;br /&gt;
    // retrofit&lt;br /&gt;
    implementation 'com.squareup.retrofit2:retrofit:3.0.0'&lt;br /&gt;
    implementation 'com.squareup.retrofit2:converter-gson:3.0.0'&lt;br /&gt;
    implementation 'com.squareup.retrofit2:converter-scalars:3.0.0'&lt;br /&gt;
    // google ads identifier&lt;br /&gt;
    implementation 'com.google.android.gms:play-services-ads-identifier:18.2.0'&lt;br /&gt;
    // google app set id&lt;br /&gt;
    implementation 'com.google.android.gms:play-services-appset:16.1.0'&lt;br /&gt;
    // gson&lt;br /&gt;
    implementation 'com.google.code.gson:gson:2.13.2'&lt;br /&gt;
    // Jetpack Security&lt;br /&gt;
    implementation 'androidx.security:security-crypto:1.1.0'&lt;br /&gt;
    // activity-ktx&lt;br /&gt;
    implementation 'androidx.activity:activity-ktx:1.11.0'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;權限設定&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
[[檔案:Import SDK7 Step3-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Required Permission&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;amp;lt;!-- TAmedia Required Permission --&amp;amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.INTERNET&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_WIFI_STATE&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_NETWORK_STATE&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Optional Permission&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;amp;lt;!-- TAmedia Optional Permission --&amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.VIBRATE&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.CAMERA&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.RECORD_AUDIO&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_COARSE_LOCATION&amp;quot; /&amp;gt; &lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_FINE_LOCATION&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;uses-permission android:name=&amp;quot;android.permission.WRITE_EXTERNAL_STORAGE&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;targetSdk=35+ (Android 15+) 的應用程式 [[檔案:new-xxl.png|30px]] &amp;lt;/b&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
: Target API 為 35+的開發者應用程式，但是屬於 &amp;lt;b&amp;gt;闔家適用計畫，或將兒童導向應用程式&amp;lt;/b&amp;gt; 請於AndroidManifest.xml中加入下列設定，移除AD_ID使用權限&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;manifest &lt;br /&gt;
    xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    xmlns:tools=&amp;quot;http://schemas.android.com/tools&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;uses-permission android:name=&amp;quot;com.google.android.gms.permission.AD_ID&amp;quot; tools:node=&amp;quot;remove&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
詳情可參考Google網站說明:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://support.google.com/googleplay/android-developer/answer/6048248?hl=zh-Hant 2021 年 Google Play 服務更新]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://support.google.com/googleplay/android-developer/topic/9877766 Google Play Policy - 家庭]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3731</id>
		<title>Android InRead Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3731"/>
		<updated>2025-11-17T09:28:18Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;簡介&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:InRead廣告是SDK8新增的內嵌式廣告, 您可將廣告放置在文章、列表中, 當App使用者滑動到您指定的位置時便可看見InRead廣告, 若該廣告為影音廣告, 會等待廣告出現在畫面中才會進行撥放。&amp;lt;br&amp;gt;&lt;br /&gt;
:InRead廣告為:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;&amp;lt;b&amp;gt; TWMInReadAdAnchor:&amp;lt;/b&amp;gt;  固定在螢幕下方的廣告, 廣告高度不會超過螢幕的30%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:在投放限制方面，由於不同版本的手機支援程度不同，InRead廣告僅會投放在符合下列條件的手機：&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android 5.0 (API 21) 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android System WebView 版本43 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:而在介接方式上,下列章節將說明如何串接InRead廣告&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view.inread/index.html InRead]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告串接方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
===&amp;lt;b&amp;gt;InRead&amp;lt;/b&amp;gt; ===&lt;br /&gt;
:InRead廣告, 不需事先設置XML或透過程式動態加入廣告View(addView), 只要直接初始InRead物件並請求廣告即可。&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 1: 廣告初始設置&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
您必須依序輸入&amp;lt;b&amp;gt;Activity&amp;lt;/b&amp;gt;、&amp;lt;b&amp;gt;InRead Anchor版位ID&amp;lt;/b&amp;gt;以初始化InRead物件, 並且設置Listener偵聽廣告的Callback&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;重要! 請務必在onResume、onPause和onDestroy分別加上resume、pause和destroy函式, 避免廣告發生無法預期的問題&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  class InReadActivityKt:AppCompatActivity() {&lt;br /&gt;
    private var mTestResult: TextView? =null&lt;br /&gt;
    private var inread: TWMInReadAdAnchor? = null&lt;br /&gt;
    override fun onCreate(savedInstanceState: Bundle?) {&lt;br /&gt;
        super.onCreate(savedInstanceState)&lt;br /&gt;
        setContentView(R.layout.activity_inread)&lt;br /&gt;
        mTestResult = findViewById(R.id.inread_result)&lt;br /&gt;
        initAd()&lt;br /&gt;
    }&lt;br /&gt;
    private fun initAd() {&lt;br /&gt;
        inread = TWMInReadAdAnchor(this,&amp;lt;b&amp;gt;TAMEDIA_INREAD_ANCHOR_ADUNITID&amp;lt;/b&amp;gt;)&lt;br /&gt;
        inread.apply {&lt;br /&gt;
            inread?.setAdListener(object : TWMAdViewListener {&lt;br /&gt;
                override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求收到廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onFailedToReceiveAd(ad: TWMAd, errorCode: TWMAdRequest.ErrorCode) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求發生錯誤, 並沒有廣告內容可供使用&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onPresentScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已呈現&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onDismissScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已被關閉&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onLeaveApplication(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示因點擊廣告或其他因素離開app&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
            })&lt;br /&gt;
        }&lt;br /&gt;
        inread?.loadAd(TWMAdRequest())&lt;br /&gt;
    }&lt;br /&gt;
    override fun onResume() {&lt;br /&gt;
        super.onResume()&lt;br /&gt;
        inread?.resume()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onPause() {&lt;br /&gt;
        super.onPause()&lt;br /&gt;
        inread?.pause()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onDestroy() {&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
        inread?.destroy()&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
   companion object{&lt;br /&gt;
        const val TAMEDIA_INREAD_ANCHOR_ADUNITID: String = &amp;quot;&amp;lt;b&amp;gt;{TAMEDIA_INREAD_ANCHOR_ADUNITID}&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 2: 請求廣告&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
請求廣告前，你需要創建一個預設的TWMAdRequest物件, 並將TWMAdReqeust物件傳入loadAd&lt;br /&gt;
  inread?.loadAd(TWMAdRequest())&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b&amp;gt;結束廣告&amp;lt;/b&amp;gt; ===&lt;br /&gt;
destroy() 必須被呼叫, 即使TWMInReadAdAnchor沒有被使用到或參考&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
  inread.destroy()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | InRead&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 inread.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(InReadComposeActivity), 內有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊InRead後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val inread: TWMInReadAdAnchor = TWMInReadAdAnchor(activity, adUnitId)&lt;br /&gt;
    inread.setAdListener(this)&lt;br /&gt;
    inread.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3730</id>
		<title>Android InRead Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3730"/>
		<updated>2025-11-17T09:27:20Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* 廣告串接方式 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;簡介&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:InRead廣告是SDK8新增的內嵌式廣告, 您可將廣告放置在文章、列表中, 當App使用者滑動到您指定的位置時便可看見InRead廣告, 若該廣告為影音廣告, 會等待廣告出現在畫面中才會進行撥放。&amp;lt;br&amp;gt;&lt;br /&gt;
:InRead廣告為:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;&amp;lt;b&amp;gt; TWMInReadAdAnchor:&amp;lt;/b&amp;gt;  固定在螢幕下方的廣告, 廣告高度不會超過螢幕的30%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:在投放限制方面，由於不同版本的手機支援程度不同，InRead廣告僅會投放在符合下列條件的手機：&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android 5.0 (API 21) 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android System WebView 版本43 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:而在介接方式上,下列章節將說明如何串接InRead廣告&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view.inread/index.html InRead]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告串接方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
===&amp;lt;b&amp;gt;InRead&amp;lt;/b&amp;gt; ===&lt;br /&gt;
:InRead廣告, 不需事先設置XML或透過程式動態加入廣告View(addView), 只要直接初始InRead物件並請求廣告即可。&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 1: 廣告初始設置&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
您必須依序輸入&amp;lt;b&amp;gt;Activity&amp;lt;/b&amp;gt;、&amp;lt;b&amp;gt;InRead Anchor版位ID&amp;lt;/b&amp;gt;以初始化InRead物件, 並且設置Listener偵聽廣告的Callback&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;重要! 請務必在onResume、onPause和onDestroy分別加上resume、pause和destroy函式, 避免廣告發生無法預期的問題&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  class InReadActivityKt:AppCompatActivity() {&lt;br /&gt;
    private var mTestResult: TextView? =null&lt;br /&gt;
    private var inread: TWMInReadAdAnchor? = null&lt;br /&gt;
    override fun onCreate(savedInstanceState: Bundle?) {&lt;br /&gt;
        super.onCreate(savedInstanceState)&lt;br /&gt;
        setContentView(R.layout.activity_inread)&lt;br /&gt;
        mTestResult = findViewById(R.id.inread_result)&lt;br /&gt;
        initAd()&lt;br /&gt;
    }&lt;br /&gt;
    private fun initAd() {&lt;br /&gt;
        inread = TWMInReadAdAnchor(this,&amp;lt;b&amp;gt;TAMEDIA_INREAD_ANCHOR_ADUNITID&amp;lt;/b&amp;gt;)&lt;br /&gt;
        inread.apply {&lt;br /&gt;
            inread?.setAdListener(object : TWMAdViewListener {&lt;br /&gt;
                override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求收到廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onFailedToReceiveAd(ad: TWMAd, errorCode: TWMAdRequest.ErrorCode) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求發生錯誤, 並沒有廣告內容可供使用&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onPresentScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已呈現&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onDismissScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已被關閉&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onLeaveApplication(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示因點擊廣告或其他因素離開app&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
            })&lt;br /&gt;
        }&lt;br /&gt;
        inread?.loadAd(TWMAdRequest())&lt;br /&gt;
    }&lt;br /&gt;
    override fun onResume() {&lt;br /&gt;
        super.onResume()&lt;br /&gt;
        inread?.resume()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onPause() {&lt;br /&gt;
        super.onPause()&lt;br /&gt;
        inread?.pause()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onDestroy() {&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
        inread?.destroy()&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
   companion object{&lt;br /&gt;
        const val TAMEDIA_INREAD_ANCHOR_ADUNITID: String = &amp;quot;&amp;lt;b&amp;gt;{TAMEDIA_INREAD_ANCHOR_ADUNITID}&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 2: 請求廣告&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
請求廣告前，你需要創建一個預設的TWMAdRequest物件, 並將TWMAdReqeust物件傳入loadAd&lt;br /&gt;
  inread?.loadAd(TWMAdRequest())&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 3: 結束廣告&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
destroy() 必須被呼叫, 即使TWMInReadAdAnchor沒有被使用到或參考&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
  inread.destroy()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | InRead&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 inread.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(InReadComposeActivity), 內有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊InRead後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val inread: TWMInReadAdAnchor = TWMInReadAdAnchor(activity, adUnitId)&lt;br /&gt;
    inread.setAdListener(this)&lt;br /&gt;
    inread.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3729</id>
		<title>Android Native Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3729"/>
		<updated>2025-11-17T09:24:59Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* 實作方式 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;Native廣告支援內容&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節 !! 資料型別&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| ShortSubject || align=&amp;quot;center&amp;quot;| 短標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| LongSubject || align=&amp;quot;center&amp;quot;| 長標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| Body || align=&amp;quot;center&amp;quot;| 內文 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| CTA || align=&amp;quot;center&amp;quot;| 行動呼籲 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconRect || align=&amp;quot;center&amp;quot;| 小圖 (長) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconSquare || align=&amp;quot;center&amp;quot;| 小圖 (方) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image960_640 || align=&amp;quot;center&amp;quot;| 大圖 (960x640) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image1200_627 || align=&amp;quot;center&amp;quot;| 大圖 (1200x627) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| mediaContent || align=&amp;quot;center&amp;quot;| 多媒體素材(影音或主要圖片) || align=&amp;quot;center&amp;quot;| TWMMediaContent&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-native-ad-view/index.html NativeAd]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;實作方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 1:&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
產生一個TWMNativeAd物件, 設定廣告版位adUnitId, 並呼叫load()請求原生廣告&lt;br /&gt;
監聽TWMAdListener, 透過onReceivedAd()取得原生廣告資訊TWMNativeAd.nativeAdContent&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // Native ad assets.&lt;br /&gt;
        var body: String? = null&lt;br /&gt;
        var shortSubject: String? = null&lt;br /&gt;
        var longSubject: String? = null&lt;br /&gt;
        var callToAction:String? = null&lt;br /&gt;
        var iconRect: TWMNativeAd.Image? = null&lt;br /&gt;
        var iconSquare: TWMNativeAd.Image? = null&lt;br /&gt;
        var image960x640: TWMNativeAd.Image? = null&lt;br /&gt;
        var image1200x627: TWMNativeAd.Image? = null&lt;br /&gt;
        var mediaContent: TWMMediaContent? = null&lt;br /&gt;
&lt;br /&gt;
        fun loadAd(context: Context,&lt;br /&gt;
                   adUnitId: String) {&lt;br /&gt;
            nativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
            nativeAd?.setAdListener(this)&lt;br /&gt;
            nativeAd?.loadAd(TWMAdRequest())&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
            this.body = nativeAd?.nativeAdContent?.body&lt;br /&gt;
            this.shortSubject = nativeAd?.nativeAdContent?.shortSubject&lt;br /&gt;
            this.longSubject = nativeAd?.nativeAdContent?.longSubject&lt;br /&gt;
            this.callToAction = nativeAd?.nativeAdContent?.callToAction&lt;br /&gt;
            this.iconRect = nativeAd?.nativeAdContent?.iconRect&lt;br /&gt;
            this.iconSquare = nativeAd?.nativeAdContent?.iconSquare&lt;br /&gt;
            this.image960x640 = nativeAd?.nativeAdContent?.image960_640&lt;br /&gt;
            this.image1200x627 = nativeAd?.nativeAdContent?.image1200_627&lt;br /&gt;
            this.mediaContent = nativeAd?.nativeAdContent?.mediaContent&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 2:&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
使用TWMNativeAdView作為廣告佈局容器, 開發者可在容器中可自行排列文字(TextView)圖形(ImageView)甚至影片(TWMMediaView)等原生廣告&lt;br /&gt;
下面以短標題, 小圖 (長), Call To Action, 及多媒體素材當範例&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;com.taiwanmobile.pt.adp.view.TWMNativeAdView xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    android:id=&amp;quot;@+id/nativeAdView&amp;quot;&lt;br /&gt;
    android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:background=&amp;quot;@android:color/holo_orange_light&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LinearLayout&lt;br /&gt;
        android:id=&amp;quot;@+id/container&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_gravity=&amp;quot;center&amp;quot;&lt;br /&gt;
        android:minHeight=&amp;quot;50dp&amp;quot;&lt;br /&gt;
        android:orientation=&amp;quot;vertical&amp;quot;&lt;br /&gt;
        android:paddingLeft=&amp;quot;20dp&amp;quot;&lt;br /&gt;
        android:paddingRight=&amp;quot;20dp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_short_subject&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;ImageView&lt;br /&gt;
            android:id=&amp;quot;@+id/iv_icon_rect&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_call_to_action&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;com.taiwanmobile.pt.adp.nativead.TWMMediaView&lt;br /&gt;
            android:id=&amp;quot;@+id/ad_media&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;150dp&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;120dp&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;lt;/com.taiwanmobile.pt.adp.view.TWMNativeAdView&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 3:&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
將TWMNativeAd.nativeAdContent的廣告資訊套用在上述廣告佈局中&lt;br /&gt;
並於TWMNativeAdView進行填充(ex. setShortSubjectView()), 賦予點擊後開啟廣告之功能&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        val adContent: TWMNativeAdContent? = ad?.nativeAdContent&lt;br /&gt;
&lt;br /&gt;
        // shortSubject&lt;br /&gt;
        adContent?.shortSubject.let { subject -&amp;gt;&lt;br /&gt;
            // 顯示短標題於TextView之中&lt;br /&gt;
            vb.tvShortSubject.text = subject&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setShortSubjectView(vb.tvShortSubject)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // rect icon&lt;br /&gt;
        adContent?.iconRect?.getDrawable().let { rectDrawable -&amp;gt;&lt;br /&gt;
            // 顯示小圖 (長)於ImageView之中&lt;br /&gt;
            vb.ivIconRect.setImageDrawable(rectDrawable)&lt;br /&gt;
            vb.ivIconRect.adjustViewBounds = true&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setRectangleIconView(vb.ivIconRect)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // call to action&lt;br /&gt;
        adContent?.callToAction?.let { cta -&amp;gt;&lt;br /&gt;
            // 顯示行動呼籲於TextView之中&lt;br /&gt;
            vb.tvCallToAction.text = cta&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setCallToActionView(vb.tvCallToAction)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 4:&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
如欲顯示影片廣告, 將mediaContent指派給TWMMediaView, 用TWMMediaView來顯示影片&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // MediaContent&lt;br /&gt;
        adContent?.mediaContent?.let { content -&amp;gt;&lt;br /&gt;
            // 顯示TWMMediaContent於TWMMediaView&lt;br /&gt;
            vb.adMedia.setMediaContent(content)&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能(前往了解)&lt;br /&gt;
            vb.nativeAdView.setMediaView(vb.adMedia)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 5:&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
完成上述後, TWMNativeAd物件指派給TWMNativeAdView, 啟動原生廣告顯示 (重要!!!)&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;TWMNativeAdOptions&amp;lt;/b&amp;gt; ==&lt;br /&gt;
TWMAdRequest.setNativeAdOptions()供開發者相關功能, 調整原生廣告屬性&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| DISABLE_IMAGE_LOADING || align=&amp;quot;center&amp;quot;| TWMNativeAdContent.Image不含Drawable物件, 加速廣告下載速度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_START_UNMUTED || align=&amp;quot;center&amp;quot;| TWMMediaView影片初始為有聲音, 預設為靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_CUSTOM_CONTROLS_REQUESTED || align=&amp;quot;center&amp;quot;| TWMMediaView不提供影片控制項, 預設為提供&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| MEDIA_PREFER_IMAGE || align=&amp;quot;center&amp;quot;| TWMMediaView總是顯示圖片, 預設為影片&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: 下面例子為影片初始即有聲音&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val adRequest = TWMAdRequest()&lt;br /&gt;
    adRequest.setNativeAdOptions(arrayOf(TWMNativeAdOptions.VIDEO_START_UNMUTED))&lt;br /&gt;
    nativeAd?.loadAd(adRequest)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;釋放廣告&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;請在Activity的生命週期中加入下述的呼叫, 正確釋放TWMNativeAd物件&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  override fun onDestroy() {&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
        nativeAd?.destroy()&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 文字&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 影片&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead1.png | 300px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead2.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 客製化影片撥放元件(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
當TWMAdRequest.setNativeAdOptions()使用VIDEO_CUSTOM_CONTROLS_REQUESTED&lt;br /&gt;
TWMVideoController / TWMMediaContent包含了下列功能, 提供影片相關資訊, 提供開發者客製化自己的影片控制項&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.isMuted() || align=&amp;quot;center&amp;quot;| 影片是否靜音中&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.mute(boolean)|| align=&amp;quot;center&amp;quot;| 影片靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.setVideoLifecycleCallback(callback) || align=&amp;quot;center&amp;quot;| 影片生命週期(VideoLifecycleCallback)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getCurrentTime() || align=&amp;quot;center&amp;quot;| 取得目前撥放進度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getDuration() || align=&amp;quot;center&amp;quot;| 取得影片長度&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. TWMMediaView 預設UI項目客製化(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援TWMMediaView UI項目客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
開發者可透過TWMMediaView下列函式對預設UI控制項進行客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:70%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTAVisible(visible: Boolean) || align=&amp;quot;center&amp;quot;| 設定CTA是否顯示&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTATextSize(textSize: Float)|| align=&amp;quot;center&amp;quot;| 設定CTA文字大小 &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVideoCountdownTextSize(textSize: Float) || align=&amp;quot;center&amp;quot;| 設定影片倒數文字大小&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVolumeImageSize(imageSize: Int) || align=&amp;quot;center&amp;quot;| 設定靜音圖示大小&lt;br /&gt;
|}&lt;br /&gt;
[[image:TWMMediaView_CustomUI_Demo.png | 400px]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 支援Open-Measurement友善障礙物(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援Open-Measurement友善障礙物事件處理&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://interactiveadvertisingbureau.github.io/Open-Measurement-SDKAndroid/&lt;br /&gt;
&lt;br /&gt;
開發者可透過TWMNativeAdView.addFriendlyObstruction(view, purpose)將與原生廣告相關的控制元件設定為友善障礙物&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
下面以FloatingActionButton為例子, 按鈕本身為影片靜音設定,使用FriendlyObstructionPurpose.VIDEO_CONTROLS為障礙物目的&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
於TWMNativeAd.setNativeAd()之前完成障礙物添加&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // friendlyObstruction&lt;br /&gt;
        vb.nativeAdView.addFriendlyObstruction(vb.fab, TWMNativeAdView.FriendlyObstructionPurpose.VIDEO_CONTROLS)&lt;br /&gt;
        vb.fab.setOnClickListener {&lt;br /&gt;
            adContent?.mediaContent?.getVideoController()?.let { videoController -&amp;gt;&lt;br /&gt;
                val isMute = videoController.isMuted()&lt;br /&gt;
                // 設定影片靜音&lt;br /&gt;
                videoController.mute(!isMute)&lt;br /&gt;
                when (videoController.isMuted()) {&lt;br /&gt;
                    true -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_up_24) }&lt;br /&gt;
                    false -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_mute_24) }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 元件總類 !! 描述&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.VIDEO_CONTROLS || align=&amp;quot;center&amp;quot;| 影音控制項&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.CLOSE_AD || align=&amp;quot;center&amp;quot;| 關閉廣告&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.NOT_VISIBLE || align=&amp;quot;center&amp;quot;| 透明元件&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.OTHER || align=&amp;quot;center&amp;quot;| 非上述三種類別&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(NativeAdComposeActivity), TWMNativeAdComposable()中有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;90%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(上頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(下頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊素材後開啟廣告&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_1.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_2.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
原生廣告使用流程為先取得廣告物件TWMNativeAd, 再套用在TWMNativeAdView (TWMNativeAdComposable)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[檔案:SDK8.0.7_nativead_architecture.png | 800px ]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val nativeAd: TWMNativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
    nativeAd.setAdListener(this)&lt;br /&gt;
    nativeAd.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3728</id>
		<title>Android Native Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3728"/>
		<updated>2025-11-17T09:21:54Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* Native廣告支援內容 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;Native廣告支援內容&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節 !! 資料型別&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| ShortSubject || align=&amp;quot;center&amp;quot;| 短標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| LongSubject || align=&amp;quot;center&amp;quot;| 長標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| Body || align=&amp;quot;center&amp;quot;| 內文 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| CTA || align=&amp;quot;center&amp;quot;| 行動呼籲 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconRect || align=&amp;quot;center&amp;quot;| 小圖 (長) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconSquare || align=&amp;quot;center&amp;quot;| 小圖 (方) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image960_640 || align=&amp;quot;center&amp;quot;| 大圖 (960x640) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image1200_627 || align=&amp;quot;center&amp;quot;| 大圖 (1200x627) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| mediaContent || align=&amp;quot;center&amp;quot;| 多媒體素材(影音或主要圖片) || align=&amp;quot;center&amp;quot;| TWMMediaContent&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-native-ad-view/index.html NativeAd]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;實作方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
:步驟1&lt;br /&gt;
: 產生一個TWMNativeAd物件, 設定廣告版位adUnitId, 並呼叫load()請求原生廣告&lt;br /&gt;
: 監聽TWMAdListener, 透過onReceivedAd()取得原生廣告資訊TWMNativeAd.nativeAdContent&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // Native ad assets.&lt;br /&gt;
        var body: String? = null&lt;br /&gt;
        var shortSubject: String? = null&lt;br /&gt;
        var longSubject: String? = null&lt;br /&gt;
        var callToAction:String? = null&lt;br /&gt;
        var iconRect: TWMNativeAd.Image? = null&lt;br /&gt;
        var iconSquare: TWMNativeAd.Image? = null&lt;br /&gt;
        var image960x640: TWMNativeAd.Image? = null&lt;br /&gt;
        var image1200x627: TWMNativeAd.Image? = null&lt;br /&gt;
        var mediaContent: TWMMediaContent? = null&lt;br /&gt;
&lt;br /&gt;
        fun loadAd(context: Context,&lt;br /&gt;
                   adUnitId: String) {&lt;br /&gt;
            nativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
            nativeAd?.setAdListener(this)&lt;br /&gt;
            nativeAd?.loadAd(TWMAdRequest())&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
            this.body = nativeAd?.nativeAdContent?.body&lt;br /&gt;
            this.shortSubject = nativeAd?.nativeAdContent?.shortSubject&lt;br /&gt;
            this.longSubject = nativeAd?.nativeAdContent?.longSubject&lt;br /&gt;
            this.callToAction = nativeAd?.nativeAdContent?.callToAction&lt;br /&gt;
            this.iconRect = nativeAd?.nativeAdContent?.iconRect&lt;br /&gt;
            this.iconSquare = nativeAd?.nativeAdContent?.iconSquare&lt;br /&gt;
            this.image960x640 = nativeAd?.nativeAdContent?.image960_640&lt;br /&gt;
            this.image1200x627 = nativeAd?.nativeAdContent?.image1200_627&lt;br /&gt;
            this.mediaContent = nativeAd?.nativeAdContent?.mediaContent&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟2&lt;br /&gt;
: 使用TWMNativeAdView作為廣告佈局容器, 開發者可在容器中可自行排列文字(TextView)圖形(ImageView)甚至影片(TWMMediaView)等原生廣告&lt;br /&gt;
: 下面以短標題, 小圖 (長), Call To Action, 及多媒體素材當範例&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;com.taiwanmobile.pt.adp.view.TWMNativeAdView xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    android:id=&amp;quot;@+id/nativeAdView&amp;quot;&lt;br /&gt;
    android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:background=&amp;quot;@android:color/holo_orange_light&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LinearLayout&lt;br /&gt;
        android:id=&amp;quot;@+id/container&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_gravity=&amp;quot;center&amp;quot;&lt;br /&gt;
        android:minHeight=&amp;quot;50dp&amp;quot;&lt;br /&gt;
        android:orientation=&amp;quot;vertical&amp;quot;&lt;br /&gt;
        android:paddingLeft=&amp;quot;20dp&amp;quot;&lt;br /&gt;
        android:paddingRight=&amp;quot;20dp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_short_subject&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;ImageView&lt;br /&gt;
            android:id=&amp;quot;@+id/iv_icon_rect&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_call_to_action&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;com.taiwanmobile.pt.adp.nativead.TWMMediaView&lt;br /&gt;
            android:id=&amp;quot;@+id/ad_media&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;150dp&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;120dp&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;lt;/com.taiwanmobile.pt.adp.view.TWMNativeAdView&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟3&lt;br /&gt;
: 將TWMNativeAd.nativeAdContent的廣告資訊套用在上述廣告佈局中&lt;br /&gt;
: 並於TWMNativeAdView進行填充(ex. setShortSubjectView()), 賦予點擊後開啟廣告之功能&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        val adContent: TWMNativeAdContent? = ad?.nativeAdContent&lt;br /&gt;
&lt;br /&gt;
        // shortSubject&lt;br /&gt;
        adContent?.shortSubject.let { subject -&amp;gt;&lt;br /&gt;
            // 顯示短標題於TextView之中&lt;br /&gt;
            vb.tvShortSubject.text = subject&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setShortSubjectView(vb.tvShortSubject)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // rect icon&lt;br /&gt;
        adContent?.iconRect?.getDrawable().let { rectDrawable -&amp;gt;&lt;br /&gt;
            // 顯示小圖 (長)於ImageView之中&lt;br /&gt;
            vb.ivIconRect.setImageDrawable(rectDrawable)&lt;br /&gt;
            vb.ivIconRect.adjustViewBounds = true&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setRectangleIconView(vb.ivIconRect)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // call to action&lt;br /&gt;
        adContent?.callToAction?.let { cta -&amp;gt;&lt;br /&gt;
            // 顯示行動呼籲於TextView之中&lt;br /&gt;
            vb.tvCallToAction.text = cta&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setCallToActionView(vb.tvCallToAction)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟4&lt;br /&gt;
: 如欲顯示影片廣告, 將mediaContent指派給TWMMediaView, 用TWMMediaView來顯示影片&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // MediaContent&lt;br /&gt;
        adContent?.mediaContent?.let { content -&amp;gt;&lt;br /&gt;
            // 顯示TWMMediaContent於TWMMediaView&lt;br /&gt;
            vb.adMedia.setMediaContent(content)&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能(前往了解)&lt;br /&gt;
            vb.nativeAdView.setMediaView(vb.adMedia)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟5&lt;br /&gt;
: 完成上述後, TWMNativeAd物件指派給TWMNativeAdView, 啟動原生廣告顯示 (重要!!!)&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;TWMNativeAdOptions&amp;lt;/b&amp;gt; ==&lt;br /&gt;
TWMAdRequest.setNativeAdOptions()供開發者相關功能, 調整原生廣告屬性&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| DISABLE_IMAGE_LOADING || align=&amp;quot;center&amp;quot;| TWMNativeAdContent.Image不含Drawable物件, 加速廣告下載速度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_START_UNMUTED || align=&amp;quot;center&amp;quot;| TWMMediaView影片初始為有聲音, 預設為靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_CUSTOM_CONTROLS_REQUESTED || align=&amp;quot;center&amp;quot;| TWMMediaView不提供影片控制項, 預設為提供&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| MEDIA_PREFER_IMAGE || align=&amp;quot;center&amp;quot;| TWMMediaView總是顯示圖片, 預設為影片&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: 下面例子為影片初始即有聲音&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val adRequest = TWMAdRequest()&lt;br /&gt;
    adRequest.setNativeAdOptions(arrayOf(TWMNativeAdOptions.VIDEO_START_UNMUTED))&lt;br /&gt;
    nativeAd?.loadAd(adRequest)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;釋放廣告&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;請在Activity的生命週期中加入下述的呼叫, 正確釋放TWMNativeAd物件&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  override fun onDestroy() {&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
        nativeAd?.destroy()&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 文字&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 影片&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead1.png | 300px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead2.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 客製化影片撥放元件(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
當TWMAdRequest.setNativeAdOptions()使用VIDEO_CUSTOM_CONTROLS_REQUESTED&lt;br /&gt;
TWMVideoController / TWMMediaContent包含了下列功能, 提供影片相關資訊, 提供開發者客製化自己的影片控制項&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.isMuted() || align=&amp;quot;center&amp;quot;| 影片是否靜音中&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.mute(boolean)|| align=&amp;quot;center&amp;quot;| 影片靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.setVideoLifecycleCallback(callback) || align=&amp;quot;center&amp;quot;| 影片生命週期(VideoLifecycleCallback)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getCurrentTime() || align=&amp;quot;center&amp;quot;| 取得目前撥放進度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getDuration() || align=&amp;quot;center&amp;quot;| 取得影片長度&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. TWMMediaView 預設UI項目客製化(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援TWMMediaView UI項目客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
開發者可透過TWMMediaView下列函式對預設UI控制項進行客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:70%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTAVisible(visible: Boolean) || align=&amp;quot;center&amp;quot;| 設定CTA是否顯示&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTATextSize(textSize: Float)|| align=&amp;quot;center&amp;quot;| 設定CTA文字大小 &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVideoCountdownTextSize(textSize: Float) || align=&amp;quot;center&amp;quot;| 設定影片倒數文字大小&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVolumeImageSize(imageSize: Int) || align=&amp;quot;center&amp;quot;| 設定靜音圖示大小&lt;br /&gt;
|}&lt;br /&gt;
[[image:TWMMediaView_CustomUI_Demo.png | 400px]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 支援Open-Measurement友善障礙物(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援Open-Measurement友善障礙物事件處理&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://interactiveadvertisingbureau.github.io/Open-Measurement-SDKAndroid/&lt;br /&gt;
&lt;br /&gt;
開發者可透過TWMNativeAdView.addFriendlyObstruction(view, purpose)將與原生廣告相關的控制元件設定為友善障礙物&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
下面以FloatingActionButton為例子, 按鈕本身為影片靜音設定,使用FriendlyObstructionPurpose.VIDEO_CONTROLS為障礙物目的&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
於TWMNativeAd.setNativeAd()之前完成障礙物添加&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // friendlyObstruction&lt;br /&gt;
        vb.nativeAdView.addFriendlyObstruction(vb.fab, TWMNativeAdView.FriendlyObstructionPurpose.VIDEO_CONTROLS)&lt;br /&gt;
        vb.fab.setOnClickListener {&lt;br /&gt;
            adContent?.mediaContent?.getVideoController()?.let { videoController -&amp;gt;&lt;br /&gt;
                val isMute = videoController.isMuted()&lt;br /&gt;
                // 設定影片靜音&lt;br /&gt;
                videoController.mute(!isMute)&lt;br /&gt;
                when (videoController.isMuted()) {&lt;br /&gt;
                    true -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_up_24) }&lt;br /&gt;
                    false -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_mute_24) }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 元件總類 !! 描述&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.VIDEO_CONTROLS || align=&amp;quot;center&amp;quot;| 影音控制項&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.CLOSE_AD || align=&amp;quot;center&amp;quot;| 關閉廣告&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.NOT_VISIBLE || align=&amp;quot;center&amp;quot;| 透明元件&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.OTHER || align=&amp;quot;center&amp;quot;| 非上述三種類別&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(NativeAdComposeActivity), TWMNativeAdComposable()中有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;90%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(上頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(下頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊素材後開啟廣告&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_1.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_2.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
原生廣告使用流程為先取得廣告物件TWMNativeAd, 再套用在TWMNativeAdView (TWMNativeAdComposable)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[檔案:SDK8.0.7_nativead_architecture.png | 800px ]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val nativeAd: TWMNativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
    nativeAd.setAdListener(this)&lt;br /&gt;
    nativeAd.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3727</id>
		<title>Android Native Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3727"/>
		<updated>2025-11-17T06:51:50Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* Compose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;Native廣告支援內容&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節 !! 資料型別&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| ShortSubject || align=&amp;quot;center&amp;quot;| 短標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| LongSubject || align=&amp;quot;center&amp;quot;| 長標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| Body || align=&amp;quot;center&amp;quot;| 內文 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| CTA || align=&amp;quot;center&amp;quot;| 行動呼籲 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconRect || align=&amp;quot;center&amp;quot;| 小圖 (長) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconSquare || align=&amp;quot;center&amp;quot;| 小圖 (方) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image960_640 || align=&amp;quot;center&amp;quot;| 大圖 (960x640) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image1200_627 || align=&amp;quot;center&amp;quot;| 大圖 (1200x627) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| mediaContent || align=&amp;quot;center&amp;quot;| 多媒體素材(影音或主要圖片) || align=&amp;quot;center&amp;quot;| TWMMediaContent&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-native-ad-view/index.html NativeAd]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;實作方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
:步驟1&lt;br /&gt;
: 產生一個TWMNativeAd物件, 設定廣告版位adUnitId, 並呼叫load()請求原生廣告&lt;br /&gt;
: 監聽TWMAdListener, 透過onReceivedAd()取得原生廣告資訊TWMNativeAd.nativeAdContent&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // Native ad assets.&lt;br /&gt;
        var body: String? = null&lt;br /&gt;
        var shortSubject: String? = null&lt;br /&gt;
        var longSubject: String? = null&lt;br /&gt;
        var callToAction:String? = null&lt;br /&gt;
        var iconRect: TWMNativeAd.Image? = null&lt;br /&gt;
        var iconSquare: TWMNativeAd.Image? = null&lt;br /&gt;
        var image960x640: TWMNativeAd.Image? = null&lt;br /&gt;
        var image1200x627: TWMNativeAd.Image? = null&lt;br /&gt;
        var mediaContent: TWMMediaContent? = null&lt;br /&gt;
&lt;br /&gt;
        fun loadAd(context: Context,&lt;br /&gt;
                   adUnitId: String) {&lt;br /&gt;
            nativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
            nativeAd?.setAdListener(this)&lt;br /&gt;
            nativeAd?.loadAd(TWMAdRequest())&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
            this.body = nativeAd?.nativeAdContent?.body&lt;br /&gt;
            this.shortSubject = nativeAd?.nativeAdContent?.shortSubject&lt;br /&gt;
            this.longSubject = nativeAd?.nativeAdContent?.longSubject&lt;br /&gt;
            this.callToAction = nativeAd?.nativeAdContent?.callToAction&lt;br /&gt;
            this.iconRect = nativeAd?.nativeAdContent?.iconRect&lt;br /&gt;
            this.iconSquare = nativeAd?.nativeAdContent?.iconSquare&lt;br /&gt;
            this.image960x640 = nativeAd?.nativeAdContent?.image960_640&lt;br /&gt;
            this.image1200x627 = nativeAd?.nativeAdContent?.image1200_627&lt;br /&gt;
            this.mediaContent = nativeAd?.nativeAdContent?.mediaContent&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟2&lt;br /&gt;
: 使用TWMNativeAdView作為廣告佈局容器, 開發者可在容器中可自行排列文字(TextView)圖形(ImageView)甚至影片(TWMMediaView)等原生廣告&lt;br /&gt;
: 下面以短標題, 小圖 (長), Call To Action, 及多媒體素材當範例&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;com.taiwanmobile.pt.adp.view.TWMNativeAdView xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    android:id=&amp;quot;@+id/nativeAdView&amp;quot;&lt;br /&gt;
    android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:background=&amp;quot;@android:color/holo_orange_light&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LinearLayout&lt;br /&gt;
        android:id=&amp;quot;@+id/container&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_gravity=&amp;quot;center&amp;quot;&lt;br /&gt;
        android:minHeight=&amp;quot;50dp&amp;quot;&lt;br /&gt;
        android:orientation=&amp;quot;vertical&amp;quot;&lt;br /&gt;
        android:paddingLeft=&amp;quot;20dp&amp;quot;&lt;br /&gt;
        android:paddingRight=&amp;quot;20dp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_short_subject&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;ImageView&lt;br /&gt;
            android:id=&amp;quot;@+id/iv_icon_rect&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_call_to_action&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;com.taiwanmobile.pt.adp.nativead.TWMMediaView&lt;br /&gt;
            android:id=&amp;quot;@+id/ad_media&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;150dp&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;120dp&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;lt;/com.taiwanmobile.pt.adp.view.TWMNativeAdView&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟3&lt;br /&gt;
: 將TWMNativeAd.nativeAdContent的廣告資訊套用在上述廣告佈局中&lt;br /&gt;
: 並於TWMNativeAdView進行填充(ex. setShortSubjectView()), 賦予點擊後開啟廣告之功能&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        val adContent: TWMNativeAdContent? = ad?.nativeAdContent&lt;br /&gt;
&lt;br /&gt;
        // shortSubject&lt;br /&gt;
        adContent?.shortSubject.let { subject -&amp;gt;&lt;br /&gt;
            // 顯示短標題於TextView之中&lt;br /&gt;
            vb.tvShortSubject.text = subject&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setShortSubjectView(vb.tvShortSubject)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // rect icon&lt;br /&gt;
        adContent?.iconRect?.getDrawable().let { rectDrawable -&amp;gt;&lt;br /&gt;
            // 顯示小圖 (長)於ImageView之中&lt;br /&gt;
            vb.ivIconRect.setImageDrawable(rectDrawable)&lt;br /&gt;
            vb.ivIconRect.adjustViewBounds = true&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setRectangleIconView(vb.ivIconRect)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // call to action&lt;br /&gt;
        adContent?.callToAction?.let { cta -&amp;gt;&lt;br /&gt;
            // 顯示行動呼籲於TextView之中&lt;br /&gt;
            vb.tvCallToAction.text = cta&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setCallToActionView(vb.tvCallToAction)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟4&lt;br /&gt;
: 如欲顯示影片廣告, 將mediaContent指派給TWMMediaView, 用TWMMediaView來顯示影片&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // MediaContent&lt;br /&gt;
        adContent?.mediaContent?.let { content -&amp;gt;&lt;br /&gt;
            // 顯示TWMMediaContent於TWMMediaView&lt;br /&gt;
            vb.adMedia.setMediaContent(content)&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能(前往了解)&lt;br /&gt;
            vb.nativeAdView.setMediaView(vb.adMedia)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟5&lt;br /&gt;
: 完成上述後, TWMNativeAd物件指派給TWMNativeAdView, 啟動原生廣告顯示 (重要!!!)&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;TWMNativeAdOptions&amp;lt;/b&amp;gt; ==&lt;br /&gt;
TWMAdRequest.setNativeAdOptions()供開發者相關功能, 調整原生廣告屬性&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| DISABLE_IMAGE_LOADING || align=&amp;quot;center&amp;quot;| TWMNativeAdContent.Image不含Drawable物件, 加速廣告下載速度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_START_UNMUTED || align=&amp;quot;center&amp;quot;| TWMMediaView影片初始為有聲音, 預設為靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_CUSTOM_CONTROLS_REQUESTED || align=&amp;quot;center&amp;quot;| TWMMediaView不提供影片控制項, 預設為提供&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| MEDIA_PREFER_IMAGE || align=&amp;quot;center&amp;quot;| TWMMediaView總是顯示圖片, 預設為影片&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: 下面例子為影片初始即有聲音&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val adRequest = TWMAdRequest()&lt;br /&gt;
    adRequest.setNativeAdOptions(arrayOf(TWMNativeAdOptions.VIDEO_START_UNMUTED))&lt;br /&gt;
    nativeAd?.loadAd(adRequest)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;釋放廣告&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;請在Activity的生命週期中加入下述的呼叫, 正確釋放TWMNativeAd物件&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  override fun onDestroy() {&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
        nativeAd?.destroy()&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 文字&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 影片&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead1.png | 300px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead2.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 客製化影片撥放元件(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
當TWMAdRequest.setNativeAdOptions()使用VIDEO_CUSTOM_CONTROLS_REQUESTED&lt;br /&gt;
TWMVideoController / TWMMediaContent包含了下列功能, 提供影片相關資訊, 提供開發者客製化自己的影片控制項&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.isMuted() || align=&amp;quot;center&amp;quot;| 影片是否靜音中&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.mute(boolean)|| align=&amp;quot;center&amp;quot;| 影片靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.setVideoLifecycleCallback(callback) || align=&amp;quot;center&amp;quot;| 影片生命週期(VideoLifecycleCallback)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getCurrentTime() || align=&amp;quot;center&amp;quot;| 取得目前撥放進度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getDuration() || align=&amp;quot;center&amp;quot;| 取得影片長度&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. TWMMediaView 預設UI項目客製化(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援TWMMediaView UI項目客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
開發者可透過TWMMediaView下列函式對預設UI控制項進行客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:70%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTAVisible(visible: Boolean) || align=&amp;quot;center&amp;quot;| 設定CTA是否顯示&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTATextSize(textSize: Float)|| align=&amp;quot;center&amp;quot;| 設定CTA文字大小 &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVideoCountdownTextSize(textSize: Float) || align=&amp;quot;center&amp;quot;| 設定影片倒數文字大小&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVolumeImageSize(imageSize: Int) || align=&amp;quot;center&amp;quot;| 設定靜音圖示大小&lt;br /&gt;
|}&lt;br /&gt;
[[image:TWMMediaView_CustomUI_Demo.png | 400px]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 支援Open-Measurement友善障礙物(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援Open-Measurement友善障礙物事件處理&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://interactiveadvertisingbureau.github.io/Open-Measurement-SDKAndroid/&lt;br /&gt;
&lt;br /&gt;
開發者可透過TWMNativeAdView.addFriendlyObstruction(view, purpose)將與原生廣告相關的控制元件設定為友善障礙物&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
下面以FloatingActionButton為例子, 按鈕本身為影片靜音設定,使用FriendlyObstructionPurpose.VIDEO_CONTROLS為障礙物目的&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
於TWMNativeAd.setNativeAd()之前完成障礙物添加&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // friendlyObstruction&lt;br /&gt;
        vb.nativeAdView.addFriendlyObstruction(vb.fab, TWMNativeAdView.FriendlyObstructionPurpose.VIDEO_CONTROLS)&lt;br /&gt;
        vb.fab.setOnClickListener {&lt;br /&gt;
            adContent?.mediaContent?.getVideoController()?.let { videoController -&amp;gt;&lt;br /&gt;
                val isMute = videoController.isMuted()&lt;br /&gt;
                // 設定影片靜音&lt;br /&gt;
                videoController.mute(!isMute)&lt;br /&gt;
                when (videoController.isMuted()) {&lt;br /&gt;
                    true -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_up_24) }&lt;br /&gt;
                    false -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_mute_24) }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 元件總類 !! 描述&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.VIDEO_CONTROLS || align=&amp;quot;center&amp;quot;| 影音控制項&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.CLOSE_AD || align=&amp;quot;center&amp;quot;| 關閉廣告&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.NOT_VISIBLE || align=&amp;quot;center&amp;quot;| 透明元件&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.OTHER || align=&amp;quot;center&amp;quot;| 非上述三種類別&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(NativeAdComposeActivity), TWMNativeAdComposable()中有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;90%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(上頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(下頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊素材後開啟廣告&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_1.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_2.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
原生廣告使用流程為先取得廣告物件TWMNativeAd, 再套用在TWMNativeAdView (TWMNativeAdComposable)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[檔案:SDK8.0.7_nativead_architecture.png | 800px ]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val nativeAd: TWMNativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
    nativeAd.setAdListener(this)&lt;br /&gt;
    nativeAd.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3726</id>
		<title>Android Native Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3726"/>
		<updated>2025-11-17T06:50:51Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* 進階. TWMMediaView 預設UI項目客製化(選擇性實作, 非必要) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;Native廣告支援內容&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節 !! 資料型別&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| ShortSubject || align=&amp;quot;center&amp;quot;| 短標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| LongSubject || align=&amp;quot;center&amp;quot;| 長標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| Body || align=&amp;quot;center&amp;quot;| 內文 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| CTA || align=&amp;quot;center&amp;quot;| 行動呼籲 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconRect || align=&amp;quot;center&amp;quot;| 小圖 (長) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconSquare || align=&amp;quot;center&amp;quot;| 小圖 (方) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image960_640 || align=&amp;quot;center&amp;quot;| 大圖 (960x640) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image1200_627 || align=&amp;quot;center&amp;quot;| 大圖 (1200x627) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| mediaContent || align=&amp;quot;center&amp;quot;| 多媒體素材(影音或主要圖片) || align=&amp;quot;center&amp;quot;| TWMMediaContent&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-native-ad-view/index.html NativeAd]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;實作方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
:步驟1&lt;br /&gt;
: 產生一個TWMNativeAd物件, 設定廣告版位adUnitId, 並呼叫load()請求原生廣告&lt;br /&gt;
: 監聽TWMAdListener, 透過onReceivedAd()取得原生廣告資訊TWMNativeAd.nativeAdContent&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // Native ad assets.&lt;br /&gt;
        var body: String? = null&lt;br /&gt;
        var shortSubject: String? = null&lt;br /&gt;
        var longSubject: String? = null&lt;br /&gt;
        var callToAction:String? = null&lt;br /&gt;
        var iconRect: TWMNativeAd.Image? = null&lt;br /&gt;
        var iconSquare: TWMNativeAd.Image? = null&lt;br /&gt;
        var image960x640: TWMNativeAd.Image? = null&lt;br /&gt;
        var image1200x627: TWMNativeAd.Image? = null&lt;br /&gt;
        var mediaContent: TWMMediaContent? = null&lt;br /&gt;
&lt;br /&gt;
        fun loadAd(context: Context,&lt;br /&gt;
                   adUnitId: String) {&lt;br /&gt;
            nativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
            nativeAd?.setAdListener(this)&lt;br /&gt;
            nativeAd?.loadAd(TWMAdRequest())&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
            this.body = nativeAd?.nativeAdContent?.body&lt;br /&gt;
            this.shortSubject = nativeAd?.nativeAdContent?.shortSubject&lt;br /&gt;
            this.longSubject = nativeAd?.nativeAdContent?.longSubject&lt;br /&gt;
            this.callToAction = nativeAd?.nativeAdContent?.callToAction&lt;br /&gt;
            this.iconRect = nativeAd?.nativeAdContent?.iconRect&lt;br /&gt;
            this.iconSquare = nativeAd?.nativeAdContent?.iconSquare&lt;br /&gt;
            this.image960x640 = nativeAd?.nativeAdContent?.image960_640&lt;br /&gt;
            this.image1200x627 = nativeAd?.nativeAdContent?.image1200_627&lt;br /&gt;
            this.mediaContent = nativeAd?.nativeAdContent?.mediaContent&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟2&lt;br /&gt;
: 使用TWMNativeAdView作為廣告佈局容器, 開發者可在容器中可自行排列文字(TextView)圖形(ImageView)甚至影片(TWMMediaView)等原生廣告&lt;br /&gt;
: 下面以短標題, 小圖 (長), Call To Action, 及多媒體素材當範例&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;com.taiwanmobile.pt.adp.view.TWMNativeAdView xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    android:id=&amp;quot;@+id/nativeAdView&amp;quot;&lt;br /&gt;
    android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:background=&amp;quot;@android:color/holo_orange_light&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LinearLayout&lt;br /&gt;
        android:id=&amp;quot;@+id/container&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_gravity=&amp;quot;center&amp;quot;&lt;br /&gt;
        android:minHeight=&amp;quot;50dp&amp;quot;&lt;br /&gt;
        android:orientation=&amp;quot;vertical&amp;quot;&lt;br /&gt;
        android:paddingLeft=&amp;quot;20dp&amp;quot;&lt;br /&gt;
        android:paddingRight=&amp;quot;20dp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_short_subject&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;ImageView&lt;br /&gt;
            android:id=&amp;quot;@+id/iv_icon_rect&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_call_to_action&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;com.taiwanmobile.pt.adp.nativead.TWMMediaView&lt;br /&gt;
            android:id=&amp;quot;@+id/ad_media&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;150dp&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;120dp&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;lt;/com.taiwanmobile.pt.adp.view.TWMNativeAdView&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟3&lt;br /&gt;
: 將TWMNativeAd.nativeAdContent的廣告資訊套用在上述廣告佈局中&lt;br /&gt;
: 並於TWMNativeAdView進行填充(ex. setShortSubjectView()), 賦予點擊後開啟廣告之功能&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        val adContent: TWMNativeAdContent? = ad?.nativeAdContent&lt;br /&gt;
&lt;br /&gt;
        // shortSubject&lt;br /&gt;
        adContent?.shortSubject.let { subject -&amp;gt;&lt;br /&gt;
            // 顯示短標題於TextView之中&lt;br /&gt;
            vb.tvShortSubject.text = subject&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setShortSubjectView(vb.tvShortSubject)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // rect icon&lt;br /&gt;
        adContent?.iconRect?.getDrawable().let { rectDrawable -&amp;gt;&lt;br /&gt;
            // 顯示小圖 (長)於ImageView之中&lt;br /&gt;
            vb.ivIconRect.setImageDrawable(rectDrawable)&lt;br /&gt;
            vb.ivIconRect.adjustViewBounds = true&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setRectangleIconView(vb.ivIconRect)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // call to action&lt;br /&gt;
        adContent?.callToAction?.let { cta -&amp;gt;&lt;br /&gt;
            // 顯示行動呼籲於TextView之中&lt;br /&gt;
            vb.tvCallToAction.text = cta&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setCallToActionView(vb.tvCallToAction)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟4&lt;br /&gt;
: 如欲顯示影片廣告, 將mediaContent指派給TWMMediaView, 用TWMMediaView來顯示影片&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // MediaContent&lt;br /&gt;
        adContent?.mediaContent?.let { content -&amp;gt;&lt;br /&gt;
            // 顯示TWMMediaContent於TWMMediaView&lt;br /&gt;
            vb.adMedia.setMediaContent(content)&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能(前往了解)&lt;br /&gt;
            vb.nativeAdView.setMediaView(vb.adMedia)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟5&lt;br /&gt;
: 完成上述後, TWMNativeAd物件指派給TWMNativeAdView, 啟動原生廣告顯示 (重要!!!)&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;TWMNativeAdOptions&amp;lt;/b&amp;gt; ==&lt;br /&gt;
TWMAdRequest.setNativeAdOptions()供開發者相關功能, 調整原生廣告屬性&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| DISABLE_IMAGE_LOADING || align=&amp;quot;center&amp;quot;| TWMNativeAdContent.Image不含Drawable物件, 加速廣告下載速度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_START_UNMUTED || align=&amp;quot;center&amp;quot;| TWMMediaView影片初始為有聲音, 預設為靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_CUSTOM_CONTROLS_REQUESTED || align=&amp;quot;center&amp;quot;| TWMMediaView不提供影片控制項, 預設為提供&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| MEDIA_PREFER_IMAGE || align=&amp;quot;center&amp;quot;| TWMMediaView總是顯示圖片, 預設為影片&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: 下面例子為影片初始即有聲音&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val adRequest = TWMAdRequest()&lt;br /&gt;
    adRequest.setNativeAdOptions(arrayOf(TWMNativeAdOptions.VIDEO_START_UNMUTED))&lt;br /&gt;
    nativeAd?.loadAd(adRequest)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;釋放廣告&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;請在Activity的生命週期中加入下述的呼叫, 正確釋放TWMNativeAd物件&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  override fun onDestroy() {&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
        nativeAd?.destroy()&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 文字&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 影片&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead1.png | 300px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead2.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 客製化影片撥放元件(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
當TWMAdRequest.setNativeAdOptions()使用VIDEO_CUSTOM_CONTROLS_REQUESTED&lt;br /&gt;
TWMVideoController / TWMMediaContent包含了下列功能, 提供影片相關資訊, 提供開發者客製化自己的影片控制項&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.isMuted() || align=&amp;quot;center&amp;quot;| 影片是否靜音中&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.mute(boolean)|| align=&amp;quot;center&amp;quot;| 影片靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.setVideoLifecycleCallback(callback) || align=&amp;quot;center&amp;quot;| 影片生命週期(VideoLifecycleCallback)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getCurrentTime() || align=&amp;quot;center&amp;quot;| 取得目前撥放進度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getDuration() || align=&amp;quot;center&amp;quot;| 取得影片長度&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. TWMMediaView 預設UI項目客製化(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援TWMMediaView UI項目客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
開發者可透過TWMMediaView下列函式對預設UI控制項進行客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:70%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTAVisible(visible: Boolean) || align=&amp;quot;center&amp;quot;| 設定CTA是否顯示&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTATextSize(textSize: Float)|| align=&amp;quot;center&amp;quot;| 設定CTA文字大小 &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVideoCountdownTextSize(textSize: Float) || align=&amp;quot;center&amp;quot;| 設定影片倒數文字大小&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVolumeImageSize(imageSize: Int) || align=&amp;quot;center&amp;quot;| 設定靜音圖示大小&lt;br /&gt;
|}&lt;br /&gt;
[[image:TWMMediaView_CustomUI_Demo.png | 400px]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 支援Open-Measurement友善障礙物(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援Open-Measurement友善障礙物事件處理&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://interactiveadvertisingbureau.github.io/Open-Measurement-SDKAndroid/&lt;br /&gt;
&lt;br /&gt;
開發者可透過TWMNativeAdView.addFriendlyObstruction(view, purpose)將與原生廣告相關的控制元件設定為友善障礙物&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
下面以FloatingActionButton為例子, 按鈕本身為影片靜音設定,使用FriendlyObstructionPurpose.VIDEO_CONTROLS為障礙物目的&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
於TWMNativeAd.setNativeAd()之前完成障礙物添加&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // friendlyObstruction&lt;br /&gt;
        vb.nativeAdView.addFriendlyObstruction(vb.fab, TWMNativeAdView.FriendlyObstructionPurpose.VIDEO_CONTROLS)&lt;br /&gt;
        vb.fab.setOnClickListener {&lt;br /&gt;
            adContent?.mediaContent?.getVideoController()?.let { videoController -&amp;gt;&lt;br /&gt;
                val isMute = videoController.isMuted()&lt;br /&gt;
                // 設定影片靜音&lt;br /&gt;
                videoController.mute(!isMute)&lt;br /&gt;
                when (videoController.isMuted()) {&lt;br /&gt;
                    true -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_up_24) }&lt;br /&gt;
                    false -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_mute_24) }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 元件總類 !! 描述&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.VIDEO_CONTROLS || align=&amp;quot;center&amp;quot;| 影音控制項&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.CLOSE_AD || align=&amp;quot;center&amp;quot;| 關閉廣告&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.NOT_VISIBLE || align=&amp;quot;center&amp;quot;| 透明元件&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.OTHER || align=&amp;quot;center&amp;quot;| 非上述三種類別&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(NativeAdComposeActivity), TWMNativeAdComposable()中有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;90%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(上頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(下頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊素材後開啟廣告&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_1.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_2.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
原生廣告使用流程為先取得廣告物件TWMNativeAd, 再套用在TWMNativeAdView (TWMNativeAdComposable)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[檔案:SDK8.0.7_nativead_architecture.png]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val nativeAd: TWMNativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
    nativeAd.setAdListener(this)&lt;br /&gt;
    nativeAd.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3725</id>
		<title>Android Native Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3725"/>
		<updated>2025-11-17T06:50:37Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* 進階. TWMMediaView 預設UI項目客製化(選擇性實作, 非必要) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;Native廣告支援內容&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節 !! 資料型別&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| ShortSubject || align=&amp;quot;center&amp;quot;| 短標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| LongSubject || align=&amp;quot;center&amp;quot;| 長標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| Body || align=&amp;quot;center&amp;quot;| 內文 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| CTA || align=&amp;quot;center&amp;quot;| 行動呼籲 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconRect || align=&amp;quot;center&amp;quot;| 小圖 (長) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconSquare || align=&amp;quot;center&amp;quot;| 小圖 (方) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image960_640 || align=&amp;quot;center&amp;quot;| 大圖 (960x640) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image1200_627 || align=&amp;quot;center&amp;quot;| 大圖 (1200x627) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| mediaContent || align=&amp;quot;center&amp;quot;| 多媒體素材(影音或主要圖片) || align=&amp;quot;center&amp;quot;| TWMMediaContent&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-native-ad-view/index.html NativeAd]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;實作方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
:步驟1&lt;br /&gt;
: 產生一個TWMNativeAd物件, 設定廣告版位adUnitId, 並呼叫load()請求原生廣告&lt;br /&gt;
: 監聽TWMAdListener, 透過onReceivedAd()取得原生廣告資訊TWMNativeAd.nativeAdContent&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // Native ad assets.&lt;br /&gt;
        var body: String? = null&lt;br /&gt;
        var shortSubject: String? = null&lt;br /&gt;
        var longSubject: String? = null&lt;br /&gt;
        var callToAction:String? = null&lt;br /&gt;
        var iconRect: TWMNativeAd.Image? = null&lt;br /&gt;
        var iconSquare: TWMNativeAd.Image? = null&lt;br /&gt;
        var image960x640: TWMNativeAd.Image? = null&lt;br /&gt;
        var image1200x627: TWMNativeAd.Image? = null&lt;br /&gt;
        var mediaContent: TWMMediaContent? = null&lt;br /&gt;
&lt;br /&gt;
        fun loadAd(context: Context,&lt;br /&gt;
                   adUnitId: String) {&lt;br /&gt;
            nativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
            nativeAd?.setAdListener(this)&lt;br /&gt;
            nativeAd?.loadAd(TWMAdRequest())&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
            this.body = nativeAd?.nativeAdContent?.body&lt;br /&gt;
            this.shortSubject = nativeAd?.nativeAdContent?.shortSubject&lt;br /&gt;
            this.longSubject = nativeAd?.nativeAdContent?.longSubject&lt;br /&gt;
            this.callToAction = nativeAd?.nativeAdContent?.callToAction&lt;br /&gt;
            this.iconRect = nativeAd?.nativeAdContent?.iconRect&lt;br /&gt;
            this.iconSquare = nativeAd?.nativeAdContent?.iconSquare&lt;br /&gt;
            this.image960x640 = nativeAd?.nativeAdContent?.image960_640&lt;br /&gt;
            this.image1200x627 = nativeAd?.nativeAdContent?.image1200_627&lt;br /&gt;
            this.mediaContent = nativeAd?.nativeAdContent?.mediaContent&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟2&lt;br /&gt;
: 使用TWMNativeAdView作為廣告佈局容器, 開發者可在容器中可自行排列文字(TextView)圖形(ImageView)甚至影片(TWMMediaView)等原生廣告&lt;br /&gt;
: 下面以短標題, 小圖 (長), Call To Action, 及多媒體素材當範例&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;com.taiwanmobile.pt.adp.view.TWMNativeAdView xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    android:id=&amp;quot;@+id/nativeAdView&amp;quot;&lt;br /&gt;
    android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:background=&amp;quot;@android:color/holo_orange_light&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LinearLayout&lt;br /&gt;
        android:id=&amp;quot;@+id/container&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_gravity=&amp;quot;center&amp;quot;&lt;br /&gt;
        android:minHeight=&amp;quot;50dp&amp;quot;&lt;br /&gt;
        android:orientation=&amp;quot;vertical&amp;quot;&lt;br /&gt;
        android:paddingLeft=&amp;quot;20dp&amp;quot;&lt;br /&gt;
        android:paddingRight=&amp;quot;20dp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_short_subject&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;ImageView&lt;br /&gt;
            android:id=&amp;quot;@+id/iv_icon_rect&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_call_to_action&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;com.taiwanmobile.pt.adp.nativead.TWMMediaView&lt;br /&gt;
            android:id=&amp;quot;@+id/ad_media&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;150dp&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;120dp&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;lt;/com.taiwanmobile.pt.adp.view.TWMNativeAdView&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟3&lt;br /&gt;
: 將TWMNativeAd.nativeAdContent的廣告資訊套用在上述廣告佈局中&lt;br /&gt;
: 並於TWMNativeAdView進行填充(ex. setShortSubjectView()), 賦予點擊後開啟廣告之功能&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        val adContent: TWMNativeAdContent? = ad?.nativeAdContent&lt;br /&gt;
&lt;br /&gt;
        // shortSubject&lt;br /&gt;
        adContent?.shortSubject.let { subject -&amp;gt;&lt;br /&gt;
            // 顯示短標題於TextView之中&lt;br /&gt;
            vb.tvShortSubject.text = subject&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setShortSubjectView(vb.tvShortSubject)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // rect icon&lt;br /&gt;
        adContent?.iconRect?.getDrawable().let { rectDrawable -&amp;gt;&lt;br /&gt;
            // 顯示小圖 (長)於ImageView之中&lt;br /&gt;
            vb.ivIconRect.setImageDrawable(rectDrawable)&lt;br /&gt;
            vb.ivIconRect.adjustViewBounds = true&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setRectangleIconView(vb.ivIconRect)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // call to action&lt;br /&gt;
        adContent?.callToAction?.let { cta -&amp;gt;&lt;br /&gt;
            // 顯示行動呼籲於TextView之中&lt;br /&gt;
            vb.tvCallToAction.text = cta&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setCallToActionView(vb.tvCallToAction)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟4&lt;br /&gt;
: 如欲顯示影片廣告, 將mediaContent指派給TWMMediaView, 用TWMMediaView來顯示影片&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // MediaContent&lt;br /&gt;
        adContent?.mediaContent?.let { content -&amp;gt;&lt;br /&gt;
            // 顯示TWMMediaContent於TWMMediaView&lt;br /&gt;
            vb.adMedia.setMediaContent(content)&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能(前往了解)&lt;br /&gt;
            vb.nativeAdView.setMediaView(vb.adMedia)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟5&lt;br /&gt;
: 完成上述後, TWMNativeAd物件指派給TWMNativeAdView, 啟動原生廣告顯示 (重要!!!)&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;TWMNativeAdOptions&amp;lt;/b&amp;gt; ==&lt;br /&gt;
TWMAdRequest.setNativeAdOptions()供開發者相關功能, 調整原生廣告屬性&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| DISABLE_IMAGE_LOADING || align=&amp;quot;center&amp;quot;| TWMNativeAdContent.Image不含Drawable物件, 加速廣告下載速度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_START_UNMUTED || align=&amp;quot;center&amp;quot;| TWMMediaView影片初始為有聲音, 預設為靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_CUSTOM_CONTROLS_REQUESTED || align=&amp;quot;center&amp;quot;| TWMMediaView不提供影片控制項, 預設為提供&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| MEDIA_PREFER_IMAGE || align=&amp;quot;center&amp;quot;| TWMMediaView總是顯示圖片, 預設為影片&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: 下面例子為影片初始即有聲音&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val adRequest = TWMAdRequest()&lt;br /&gt;
    adRequest.setNativeAdOptions(arrayOf(TWMNativeAdOptions.VIDEO_START_UNMUTED))&lt;br /&gt;
    nativeAd?.loadAd(adRequest)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;釋放廣告&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;請在Activity的生命週期中加入下述的呼叫, 正確釋放TWMNativeAd物件&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  override fun onDestroy() {&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
        nativeAd?.destroy()&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 文字&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 影片&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead1.png | 300px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead2.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 客製化影片撥放元件(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
當TWMAdRequest.setNativeAdOptions()使用VIDEO_CUSTOM_CONTROLS_REQUESTED&lt;br /&gt;
TWMVideoController / TWMMediaContent包含了下列功能, 提供影片相關資訊, 提供開發者客製化自己的影片控制項&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.isMuted() || align=&amp;quot;center&amp;quot;| 影片是否靜音中&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.mute(boolean)|| align=&amp;quot;center&amp;quot;| 影片靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.setVideoLifecycleCallback(callback) || align=&amp;quot;center&amp;quot;| 影片生命週期(VideoLifecycleCallback)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getCurrentTime() || align=&amp;quot;center&amp;quot;| 取得目前撥放進度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getDuration() || align=&amp;quot;center&amp;quot;| 取得影片長度&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. TWMMediaView 預設UI項目客製化(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援TWMMediaView UI項目客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
開發者可透過TWMMediaView下列函式對預設UI控制項進行客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:70%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTAVisible(visible: Boolean) || align=&amp;quot;center&amp;quot;| 設定CTA是否顯示&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTATextSize(textSize: Float)|| align=&amp;quot;center&amp;quot;| 設定CTA文字大小 &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVideoCountdownTextSize(textSize: Float) || align=&amp;quot;center&amp;quot;| 設定影片倒數文字大小&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVolumeImageSize(imageSize: Int) || align=&amp;quot;center&amp;quot;| 設定靜音圖示大小&lt;br /&gt;
|}&lt;br /&gt;
[[image:TWMMediaView_CustomUI_Demo.png | 300px]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 支援Open-Measurement友善障礙物(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援Open-Measurement友善障礙物事件處理&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://interactiveadvertisingbureau.github.io/Open-Measurement-SDKAndroid/&lt;br /&gt;
&lt;br /&gt;
開發者可透過TWMNativeAdView.addFriendlyObstruction(view, purpose)將與原生廣告相關的控制元件設定為友善障礙物&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
下面以FloatingActionButton為例子, 按鈕本身為影片靜音設定,使用FriendlyObstructionPurpose.VIDEO_CONTROLS為障礙物目的&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
於TWMNativeAd.setNativeAd()之前完成障礙物添加&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // friendlyObstruction&lt;br /&gt;
        vb.nativeAdView.addFriendlyObstruction(vb.fab, TWMNativeAdView.FriendlyObstructionPurpose.VIDEO_CONTROLS)&lt;br /&gt;
        vb.fab.setOnClickListener {&lt;br /&gt;
            adContent?.mediaContent?.getVideoController()?.let { videoController -&amp;gt;&lt;br /&gt;
                val isMute = videoController.isMuted()&lt;br /&gt;
                // 設定影片靜音&lt;br /&gt;
                videoController.mute(!isMute)&lt;br /&gt;
                when (videoController.isMuted()) {&lt;br /&gt;
                    true -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_up_24) }&lt;br /&gt;
                    false -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_mute_24) }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 元件總類 !! 描述&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.VIDEO_CONTROLS || align=&amp;quot;center&amp;quot;| 影音控制項&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.CLOSE_AD || align=&amp;quot;center&amp;quot;| 關閉廣告&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.NOT_VISIBLE || align=&amp;quot;center&amp;quot;| 透明元件&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.OTHER || align=&amp;quot;center&amp;quot;| 非上述三種類別&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(NativeAdComposeActivity), TWMNativeAdComposable()中有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;90%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(上頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(下頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊素材後開啟廣告&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_1.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_2.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
原生廣告使用流程為先取得廣告物件TWMNativeAd, 再套用在TWMNativeAdView (TWMNativeAdComposable)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[檔案:SDK8.0.7_nativead_architecture.png]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val nativeAd: TWMNativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
    nativeAd.setAdListener(this)&lt;br /&gt;
    nativeAd.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3724</id>
		<title>Android Native Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3724"/>
		<updated>2025-11-17T06:31:57Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* Compose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;Native廣告支援內容&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節 !! 資料型別&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| ShortSubject || align=&amp;quot;center&amp;quot;| 短標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| LongSubject || align=&amp;quot;center&amp;quot;| 長標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| Body || align=&amp;quot;center&amp;quot;| 內文 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| CTA || align=&amp;quot;center&amp;quot;| 行動呼籲 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconRect || align=&amp;quot;center&amp;quot;| 小圖 (長) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconSquare || align=&amp;quot;center&amp;quot;| 小圖 (方) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image960_640 || align=&amp;quot;center&amp;quot;| 大圖 (960x640) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image1200_627 || align=&amp;quot;center&amp;quot;| 大圖 (1200x627) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| mediaContent || align=&amp;quot;center&amp;quot;| 多媒體素材(影音或主要圖片) || align=&amp;quot;center&amp;quot;| TWMMediaContent&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-native-ad-view/index.html NativeAd]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;實作方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
:步驟1&lt;br /&gt;
: 產生一個TWMNativeAd物件, 設定廣告版位adUnitId, 並呼叫load()請求原生廣告&lt;br /&gt;
: 監聽TWMAdListener, 透過onReceivedAd()取得原生廣告資訊TWMNativeAd.nativeAdContent&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // Native ad assets.&lt;br /&gt;
        var body: String? = null&lt;br /&gt;
        var shortSubject: String? = null&lt;br /&gt;
        var longSubject: String? = null&lt;br /&gt;
        var callToAction:String? = null&lt;br /&gt;
        var iconRect: TWMNativeAd.Image? = null&lt;br /&gt;
        var iconSquare: TWMNativeAd.Image? = null&lt;br /&gt;
        var image960x640: TWMNativeAd.Image? = null&lt;br /&gt;
        var image1200x627: TWMNativeAd.Image? = null&lt;br /&gt;
        var mediaContent: TWMMediaContent? = null&lt;br /&gt;
&lt;br /&gt;
        fun loadAd(context: Context,&lt;br /&gt;
                   adUnitId: String) {&lt;br /&gt;
            nativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
            nativeAd?.setAdListener(this)&lt;br /&gt;
            nativeAd?.loadAd(TWMAdRequest())&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
            this.body = nativeAd?.nativeAdContent?.body&lt;br /&gt;
            this.shortSubject = nativeAd?.nativeAdContent?.shortSubject&lt;br /&gt;
            this.longSubject = nativeAd?.nativeAdContent?.longSubject&lt;br /&gt;
            this.callToAction = nativeAd?.nativeAdContent?.callToAction&lt;br /&gt;
            this.iconRect = nativeAd?.nativeAdContent?.iconRect&lt;br /&gt;
            this.iconSquare = nativeAd?.nativeAdContent?.iconSquare&lt;br /&gt;
            this.image960x640 = nativeAd?.nativeAdContent?.image960_640&lt;br /&gt;
            this.image1200x627 = nativeAd?.nativeAdContent?.image1200_627&lt;br /&gt;
            this.mediaContent = nativeAd?.nativeAdContent?.mediaContent&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟2&lt;br /&gt;
: 使用TWMNativeAdView作為廣告佈局容器, 開發者可在容器中可自行排列文字(TextView)圖形(ImageView)甚至影片(TWMMediaView)等原生廣告&lt;br /&gt;
: 下面以短標題, 小圖 (長), Call To Action, 及多媒體素材當範例&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;com.taiwanmobile.pt.adp.view.TWMNativeAdView xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    android:id=&amp;quot;@+id/nativeAdView&amp;quot;&lt;br /&gt;
    android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:background=&amp;quot;@android:color/holo_orange_light&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LinearLayout&lt;br /&gt;
        android:id=&amp;quot;@+id/container&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_gravity=&amp;quot;center&amp;quot;&lt;br /&gt;
        android:minHeight=&amp;quot;50dp&amp;quot;&lt;br /&gt;
        android:orientation=&amp;quot;vertical&amp;quot;&lt;br /&gt;
        android:paddingLeft=&amp;quot;20dp&amp;quot;&lt;br /&gt;
        android:paddingRight=&amp;quot;20dp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_short_subject&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;ImageView&lt;br /&gt;
            android:id=&amp;quot;@+id/iv_icon_rect&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_call_to_action&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;com.taiwanmobile.pt.adp.nativead.TWMMediaView&lt;br /&gt;
            android:id=&amp;quot;@+id/ad_media&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;150dp&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;120dp&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;lt;/com.taiwanmobile.pt.adp.view.TWMNativeAdView&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟3&lt;br /&gt;
: 將TWMNativeAd.nativeAdContent的廣告資訊套用在上述廣告佈局中&lt;br /&gt;
: 並於TWMNativeAdView進行填充(ex. setShortSubjectView()), 賦予點擊後開啟廣告之功能&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        val adContent: TWMNativeAdContent? = ad?.nativeAdContent&lt;br /&gt;
&lt;br /&gt;
        // shortSubject&lt;br /&gt;
        adContent?.shortSubject.let { subject -&amp;gt;&lt;br /&gt;
            // 顯示短標題於TextView之中&lt;br /&gt;
            vb.tvShortSubject.text = subject&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setShortSubjectView(vb.tvShortSubject)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // rect icon&lt;br /&gt;
        adContent?.iconRect?.getDrawable().let { rectDrawable -&amp;gt;&lt;br /&gt;
            // 顯示小圖 (長)於ImageView之中&lt;br /&gt;
            vb.ivIconRect.setImageDrawable(rectDrawable)&lt;br /&gt;
            vb.ivIconRect.adjustViewBounds = true&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setRectangleIconView(vb.ivIconRect)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // call to action&lt;br /&gt;
        adContent?.callToAction?.let { cta -&amp;gt;&lt;br /&gt;
            // 顯示行動呼籲於TextView之中&lt;br /&gt;
            vb.tvCallToAction.text = cta&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setCallToActionView(vb.tvCallToAction)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟4&lt;br /&gt;
: 如欲顯示影片廣告, 將mediaContent指派給TWMMediaView, 用TWMMediaView來顯示影片&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // MediaContent&lt;br /&gt;
        adContent?.mediaContent?.let { content -&amp;gt;&lt;br /&gt;
            // 顯示TWMMediaContent於TWMMediaView&lt;br /&gt;
            vb.adMedia.setMediaContent(content)&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能(前往了解)&lt;br /&gt;
            vb.nativeAdView.setMediaView(vb.adMedia)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟5&lt;br /&gt;
: 完成上述後, TWMNativeAd物件指派給TWMNativeAdView, 啟動原生廣告顯示 (重要!!!)&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;TWMNativeAdOptions&amp;lt;/b&amp;gt; ==&lt;br /&gt;
TWMAdRequest.setNativeAdOptions()供開發者相關功能, 調整原生廣告屬性&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| DISABLE_IMAGE_LOADING || align=&amp;quot;center&amp;quot;| TWMNativeAdContent.Image不含Drawable物件, 加速廣告下載速度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_START_UNMUTED || align=&amp;quot;center&amp;quot;| TWMMediaView影片初始為有聲音, 預設為靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_CUSTOM_CONTROLS_REQUESTED || align=&amp;quot;center&amp;quot;| TWMMediaView不提供影片控制項, 預設為提供&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| MEDIA_PREFER_IMAGE || align=&amp;quot;center&amp;quot;| TWMMediaView總是顯示圖片, 預設為影片&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: 下面例子為影片初始即有聲音&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val adRequest = TWMAdRequest()&lt;br /&gt;
    adRequest.setNativeAdOptions(arrayOf(TWMNativeAdOptions.VIDEO_START_UNMUTED))&lt;br /&gt;
    nativeAd?.loadAd(adRequest)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;釋放廣告&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;請在Activity的生命週期中加入下述的呼叫, 正確釋放TWMNativeAd物件&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  override fun onDestroy() {&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
        nativeAd?.destroy()&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 文字&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 影片&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead1.png | 300px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead2.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 客製化影片撥放元件(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
當TWMAdRequest.setNativeAdOptions()使用VIDEO_CUSTOM_CONTROLS_REQUESTED&lt;br /&gt;
TWMVideoController / TWMMediaContent包含了下列功能, 提供影片相關資訊, 提供開發者客製化自己的影片控制項&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.isMuted() || align=&amp;quot;center&amp;quot;| 影片是否靜音中&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.mute(boolean)|| align=&amp;quot;center&amp;quot;| 影片靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.setVideoLifecycleCallback(callback) || align=&amp;quot;center&amp;quot;| 影片生命週期(VideoLifecycleCallback)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getCurrentTime() || align=&amp;quot;center&amp;quot;| 取得目前撥放進度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getDuration() || align=&amp;quot;center&amp;quot;| 取得影片長度&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. TWMMediaView 預設UI項目客製化(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援TWMMediaView UI項目客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
開發者可透過TWMMediaView下列函式對預設UI控制項進行客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTAVisible(visible: Boolean) || align=&amp;quot;center&amp;quot;| 設定CTA是否顯示&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTATextSize(textSize: Float)|| align=&amp;quot;center&amp;quot;| 設定CTA文字大小 &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVideoCountdownTextSize(textSize: Float) || align=&amp;quot;center&amp;quot;| 設定影片倒數文字大小&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVolumeImageSize(imageSize: Int) || align=&amp;quot;center&amp;quot;| 設定靜音圖示大小&lt;br /&gt;
|}&lt;br /&gt;
[[image:TWMMediaView_CustomUI_Demo.png | 300px]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 支援Open-Measurement友善障礙物(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援Open-Measurement友善障礙物事件處理&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://interactiveadvertisingbureau.github.io/Open-Measurement-SDKAndroid/&lt;br /&gt;
&lt;br /&gt;
開發者可透過TWMNativeAdView.addFriendlyObstruction(view, purpose)將與原生廣告相關的控制元件設定為友善障礙物&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
下面以FloatingActionButton為例子, 按鈕本身為影片靜音設定,使用FriendlyObstructionPurpose.VIDEO_CONTROLS為障礙物目的&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
於TWMNativeAd.setNativeAd()之前完成障礙物添加&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // friendlyObstruction&lt;br /&gt;
        vb.nativeAdView.addFriendlyObstruction(vb.fab, TWMNativeAdView.FriendlyObstructionPurpose.VIDEO_CONTROLS)&lt;br /&gt;
        vb.fab.setOnClickListener {&lt;br /&gt;
            adContent?.mediaContent?.getVideoController()?.let { videoController -&amp;gt;&lt;br /&gt;
                val isMute = videoController.isMuted()&lt;br /&gt;
                // 設定影片靜音&lt;br /&gt;
                videoController.mute(!isMute)&lt;br /&gt;
                when (videoController.isMuted()) {&lt;br /&gt;
                    true -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_up_24) }&lt;br /&gt;
                    false -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_mute_24) }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 元件總類 !! 描述&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.VIDEO_CONTROLS || align=&amp;quot;center&amp;quot;| 影音控制項&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.CLOSE_AD || align=&amp;quot;center&amp;quot;| 關閉廣告&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.NOT_VISIBLE || align=&amp;quot;center&amp;quot;| 透明元件&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.OTHER || align=&amp;quot;center&amp;quot;| 非上述三種類別&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(NativeAdComposeActivity), TWMNativeAdComposable()中有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;90%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(上頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(下頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊素材後開啟廣告&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_1.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_2.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
原生廣告使用流程為先取得廣告物件TWMNativeAd, 再套用在TWMNativeAdView (TWMNativeAdComposable)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[檔案:SDK8.0.7_nativead_architecture.png]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val nativeAd: TWMNativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
    nativeAd.setAdListener(this)&lt;br /&gt;
    nativeAd.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3723</id>
		<title>Android Native Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3723"/>
		<updated>2025-11-17T06:31:37Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* Compose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;Native廣告支援內容&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節 !! 資料型別&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| ShortSubject || align=&amp;quot;center&amp;quot;| 短標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| LongSubject || align=&amp;quot;center&amp;quot;| 長標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| Body || align=&amp;quot;center&amp;quot;| 內文 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| CTA || align=&amp;quot;center&amp;quot;| 行動呼籲 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconRect || align=&amp;quot;center&amp;quot;| 小圖 (長) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconSquare || align=&amp;quot;center&amp;quot;| 小圖 (方) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image960_640 || align=&amp;quot;center&amp;quot;| 大圖 (960x640) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image1200_627 || align=&amp;quot;center&amp;quot;| 大圖 (1200x627) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| mediaContent || align=&amp;quot;center&amp;quot;| 多媒體素材(影音或主要圖片) || align=&amp;quot;center&amp;quot;| TWMMediaContent&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-native-ad-view/index.html NativeAd]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;實作方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
:步驟1&lt;br /&gt;
: 產生一個TWMNativeAd物件, 設定廣告版位adUnitId, 並呼叫load()請求原生廣告&lt;br /&gt;
: 監聽TWMAdListener, 透過onReceivedAd()取得原生廣告資訊TWMNativeAd.nativeAdContent&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // Native ad assets.&lt;br /&gt;
        var body: String? = null&lt;br /&gt;
        var shortSubject: String? = null&lt;br /&gt;
        var longSubject: String? = null&lt;br /&gt;
        var callToAction:String? = null&lt;br /&gt;
        var iconRect: TWMNativeAd.Image? = null&lt;br /&gt;
        var iconSquare: TWMNativeAd.Image? = null&lt;br /&gt;
        var image960x640: TWMNativeAd.Image? = null&lt;br /&gt;
        var image1200x627: TWMNativeAd.Image? = null&lt;br /&gt;
        var mediaContent: TWMMediaContent? = null&lt;br /&gt;
&lt;br /&gt;
        fun loadAd(context: Context,&lt;br /&gt;
                   adUnitId: String) {&lt;br /&gt;
            nativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
            nativeAd?.setAdListener(this)&lt;br /&gt;
            nativeAd?.loadAd(TWMAdRequest())&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
            this.body = nativeAd?.nativeAdContent?.body&lt;br /&gt;
            this.shortSubject = nativeAd?.nativeAdContent?.shortSubject&lt;br /&gt;
            this.longSubject = nativeAd?.nativeAdContent?.longSubject&lt;br /&gt;
            this.callToAction = nativeAd?.nativeAdContent?.callToAction&lt;br /&gt;
            this.iconRect = nativeAd?.nativeAdContent?.iconRect&lt;br /&gt;
            this.iconSquare = nativeAd?.nativeAdContent?.iconSquare&lt;br /&gt;
            this.image960x640 = nativeAd?.nativeAdContent?.image960_640&lt;br /&gt;
            this.image1200x627 = nativeAd?.nativeAdContent?.image1200_627&lt;br /&gt;
            this.mediaContent = nativeAd?.nativeAdContent?.mediaContent&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟2&lt;br /&gt;
: 使用TWMNativeAdView作為廣告佈局容器, 開發者可在容器中可自行排列文字(TextView)圖形(ImageView)甚至影片(TWMMediaView)等原生廣告&lt;br /&gt;
: 下面以短標題, 小圖 (長), Call To Action, 及多媒體素材當範例&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;com.taiwanmobile.pt.adp.view.TWMNativeAdView xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    android:id=&amp;quot;@+id/nativeAdView&amp;quot;&lt;br /&gt;
    android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:background=&amp;quot;@android:color/holo_orange_light&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LinearLayout&lt;br /&gt;
        android:id=&amp;quot;@+id/container&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_gravity=&amp;quot;center&amp;quot;&lt;br /&gt;
        android:minHeight=&amp;quot;50dp&amp;quot;&lt;br /&gt;
        android:orientation=&amp;quot;vertical&amp;quot;&lt;br /&gt;
        android:paddingLeft=&amp;quot;20dp&amp;quot;&lt;br /&gt;
        android:paddingRight=&amp;quot;20dp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_short_subject&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;ImageView&lt;br /&gt;
            android:id=&amp;quot;@+id/iv_icon_rect&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_call_to_action&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;com.taiwanmobile.pt.adp.nativead.TWMMediaView&lt;br /&gt;
            android:id=&amp;quot;@+id/ad_media&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;150dp&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;120dp&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;lt;/com.taiwanmobile.pt.adp.view.TWMNativeAdView&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟3&lt;br /&gt;
: 將TWMNativeAd.nativeAdContent的廣告資訊套用在上述廣告佈局中&lt;br /&gt;
: 並於TWMNativeAdView進行填充(ex. setShortSubjectView()), 賦予點擊後開啟廣告之功能&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        val adContent: TWMNativeAdContent? = ad?.nativeAdContent&lt;br /&gt;
&lt;br /&gt;
        // shortSubject&lt;br /&gt;
        adContent?.shortSubject.let { subject -&amp;gt;&lt;br /&gt;
            // 顯示短標題於TextView之中&lt;br /&gt;
            vb.tvShortSubject.text = subject&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setShortSubjectView(vb.tvShortSubject)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // rect icon&lt;br /&gt;
        adContent?.iconRect?.getDrawable().let { rectDrawable -&amp;gt;&lt;br /&gt;
            // 顯示小圖 (長)於ImageView之中&lt;br /&gt;
            vb.ivIconRect.setImageDrawable(rectDrawable)&lt;br /&gt;
            vb.ivIconRect.adjustViewBounds = true&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setRectangleIconView(vb.ivIconRect)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // call to action&lt;br /&gt;
        adContent?.callToAction?.let { cta -&amp;gt;&lt;br /&gt;
            // 顯示行動呼籲於TextView之中&lt;br /&gt;
            vb.tvCallToAction.text = cta&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setCallToActionView(vb.tvCallToAction)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟4&lt;br /&gt;
: 如欲顯示影片廣告, 將mediaContent指派給TWMMediaView, 用TWMMediaView來顯示影片&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // MediaContent&lt;br /&gt;
        adContent?.mediaContent?.let { content -&amp;gt;&lt;br /&gt;
            // 顯示TWMMediaContent於TWMMediaView&lt;br /&gt;
            vb.adMedia.setMediaContent(content)&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能(前往了解)&lt;br /&gt;
            vb.nativeAdView.setMediaView(vb.adMedia)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟5&lt;br /&gt;
: 完成上述後, TWMNativeAd物件指派給TWMNativeAdView, 啟動原生廣告顯示 (重要!!!)&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;TWMNativeAdOptions&amp;lt;/b&amp;gt; ==&lt;br /&gt;
TWMAdRequest.setNativeAdOptions()供開發者相關功能, 調整原生廣告屬性&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| DISABLE_IMAGE_LOADING || align=&amp;quot;center&amp;quot;| TWMNativeAdContent.Image不含Drawable物件, 加速廣告下載速度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_START_UNMUTED || align=&amp;quot;center&amp;quot;| TWMMediaView影片初始為有聲音, 預設為靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_CUSTOM_CONTROLS_REQUESTED || align=&amp;quot;center&amp;quot;| TWMMediaView不提供影片控制項, 預設為提供&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| MEDIA_PREFER_IMAGE || align=&amp;quot;center&amp;quot;| TWMMediaView總是顯示圖片, 預設為影片&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: 下面例子為影片初始即有聲音&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val adRequest = TWMAdRequest()&lt;br /&gt;
    adRequest.setNativeAdOptions(arrayOf(TWMNativeAdOptions.VIDEO_START_UNMUTED))&lt;br /&gt;
    nativeAd?.loadAd(adRequest)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;釋放廣告&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;請在Activity的生命週期中加入下述的呼叫, 正確釋放TWMNativeAd物件&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  override fun onDestroy() {&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
        nativeAd?.destroy()&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 文字&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 影片&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead1.png | 300px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead2.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 客製化影片撥放元件(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
當TWMAdRequest.setNativeAdOptions()使用VIDEO_CUSTOM_CONTROLS_REQUESTED&lt;br /&gt;
TWMVideoController / TWMMediaContent包含了下列功能, 提供影片相關資訊, 提供開發者客製化自己的影片控制項&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.isMuted() || align=&amp;quot;center&amp;quot;| 影片是否靜音中&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.mute(boolean)|| align=&amp;quot;center&amp;quot;| 影片靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.setVideoLifecycleCallback(callback) || align=&amp;quot;center&amp;quot;| 影片生命週期(VideoLifecycleCallback)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getCurrentTime() || align=&amp;quot;center&amp;quot;| 取得目前撥放進度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getDuration() || align=&amp;quot;center&amp;quot;| 取得影片長度&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. TWMMediaView 預設UI項目客製化(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援TWMMediaView UI項目客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
開發者可透過TWMMediaView下列函式對預設UI控制項進行客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTAVisible(visible: Boolean) || align=&amp;quot;center&amp;quot;| 設定CTA是否顯示&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTATextSize(textSize: Float)|| align=&amp;quot;center&amp;quot;| 設定CTA文字大小 &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVideoCountdownTextSize(textSize: Float) || align=&amp;quot;center&amp;quot;| 設定影片倒數文字大小&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVolumeImageSize(imageSize: Int) || align=&amp;quot;center&amp;quot;| 設定靜音圖示大小&lt;br /&gt;
|}&lt;br /&gt;
[[image:TWMMediaView_CustomUI_Demo.png | 300px]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 支援Open-Measurement友善障礙物(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援Open-Measurement友善障礙物事件處理&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://interactiveadvertisingbureau.github.io/Open-Measurement-SDKAndroid/&lt;br /&gt;
&lt;br /&gt;
開發者可透過TWMNativeAdView.addFriendlyObstruction(view, purpose)將與原生廣告相關的控制元件設定為友善障礙物&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
下面以FloatingActionButton為例子, 按鈕本身為影片靜音設定,使用FriendlyObstructionPurpose.VIDEO_CONTROLS為障礙物目的&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
於TWMNativeAd.setNativeAd()之前完成障礙物添加&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // friendlyObstruction&lt;br /&gt;
        vb.nativeAdView.addFriendlyObstruction(vb.fab, TWMNativeAdView.FriendlyObstructionPurpose.VIDEO_CONTROLS)&lt;br /&gt;
        vb.fab.setOnClickListener {&lt;br /&gt;
            adContent?.mediaContent?.getVideoController()?.let { videoController -&amp;gt;&lt;br /&gt;
                val isMute = videoController.isMuted()&lt;br /&gt;
                // 設定影片靜音&lt;br /&gt;
                videoController.mute(!isMute)&lt;br /&gt;
                when (videoController.isMuted()) {&lt;br /&gt;
                    true -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_up_24) }&lt;br /&gt;
                    false -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_mute_24) }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 元件總類 !! 描述&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.VIDEO_CONTROLS || align=&amp;quot;center&amp;quot;| 影音控制項&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.CLOSE_AD || align=&amp;quot;center&amp;quot;| 關閉廣告&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.NOT_VISIBLE || align=&amp;quot;center&amp;quot;| 透明元件&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.OTHER || align=&amp;quot;center&amp;quot;| 非上述三種類別&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(NativeAdComposeActivity), TWMNativeAdComposable()中有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;90%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(上頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(下頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊素材後開啟廣告&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_1.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_2.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
原生廣告使用流程為先取得廣告物件TWMNativeAd, 再套用在TWMNativeAdView (TWMNativeAdComposable)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[檔案:SDK8.0.7_nativead_architecture.png]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val nativeAd: TWMNativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
    nativeAd.setAdListener(this)&lt;br /&gt;
    nativeAd.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_nativead_architecture.png&amp;diff=3722</id>
		<title>檔案:SDK8.0.7 nativead architecture.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_nativead_architecture.png&amp;diff=3722"/>
		<updated>2025-11-17T06:26:17Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3721</id>
		<title>Android Native Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3721"/>
		<updated>2025-11-17T06:26:03Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* Compose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;Native廣告支援內容&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節 !! 資料型別&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| ShortSubject || align=&amp;quot;center&amp;quot;| 短標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| LongSubject || align=&amp;quot;center&amp;quot;| 長標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| Body || align=&amp;quot;center&amp;quot;| 內文 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| CTA || align=&amp;quot;center&amp;quot;| 行動呼籲 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconRect || align=&amp;quot;center&amp;quot;| 小圖 (長) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconSquare || align=&amp;quot;center&amp;quot;| 小圖 (方) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image960_640 || align=&amp;quot;center&amp;quot;| 大圖 (960x640) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image1200_627 || align=&amp;quot;center&amp;quot;| 大圖 (1200x627) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| mediaContent || align=&amp;quot;center&amp;quot;| 多媒體素材(影音或主要圖片) || align=&amp;quot;center&amp;quot;| TWMMediaContent&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-native-ad-view/index.html NativeAd]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;實作方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
:步驟1&lt;br /&gt;
: 產生一個TWMNativeAd物件, 設定廣告版位adUnitId, 並呼叫load()請求原生廣告&lt;br /&gt;
: 監聽TWMAdListener, 透過onReceivedAd()取得原生廣告資訊TWMNativeAd.nativeAdContent&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // Native ad assets.&lt;br /&gt;
        var body: String? = null&lt;br /&gt;
        var shortSubject: String? = null&lt;br /&gt;
        var longSubject: String? = null&lt;br /&gt;
        var callToAction:String? = null&lt;br /&gt;
        var iconRect: TWMNativeAd.Image? = null&lt;br /&gt;
        var iconSquare: TWMNativeAd.Image? = null&lt;br /&gt;
        var image960x640: TWMNativeAd.Image? = null&lt;br /&gt;
        var image1200x627: TWMNativeAd.Image? = null&lt;br /&gt;
        var mediaContent: TWMMediaContent? = null&lt;br /&gt;
&lt;br /&gt;
        fun loadAd(context: Context,&lt;br /&gt;
                   adUnitId: String) {&lt;br /&gt;
            nativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
            nativeAd?.setAdListener(this)&lt;br /&gt;
            nativeAd?.loadAd(TWMAdRequest())&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
            this.body = nativeAd?.nativeAdContent?.body&lt;br /&gt;
            this.shortSubject = nativeAd?.nativeAdContent?.shortSubject&lt;br /&gt;
            this.longSubject = nativeAd?.nativeAdContent?.longSubject&lt;br /&gt;
            this.callToAction = nativeAd?.nativeAdContent?.callToAction&lt;br /&gt;
            this.iconRect = nativeAd?.nativeAdContent?.iconRect&lt;br /&gt;
            this.iconSquare = nativeAd?.nativeAdContent?.iconSquare&lt;br /&gt;
            this.image960x640 = nativeAd?.nativeAdContent?.image960_640&lt;br /&gt;
            this.image1200x627 = nativeAd?.nativeAdContent?.image1200_627&lt;br /&gt;
            this.mediaContent = nativeAd?.nativeAdContent?.mediaContent&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟2&lt;br /&gt;
: 使用TWMNativeAdView作為廣告佈局容器, 開發者可在容器中可自行排列文字(TextView)圖形(ImageView)甚至影片(TWMMediaView)等原生廣告&lt;br /&gt;
: 下面以短標題, 小圖 (長), Call To Action, 及多媒體素材當範例&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;com.taiwanmobile.pt.adp.view.TWMNativeAdView xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    android:id=&amp;quot;@+id/nativeAdView&amp;quot;&lt;br /&gt;
    android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:background=&amp;quot;@android:color/holo_orange_light&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LinearLayout&lt;br /&gt;
        android:id=&amp;quot;@+id/container&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_gravity=&amp;quot;center&amp;quot;&lt;br /&gt;
        android:minHeight=&amp;quot;50dp&amp;quot;&lt;br /&gt;
        android:orientation=&amp;quot;vertical&amp;quot;&lt;br /&gt;
        android:paddingLeft=&amp;quot;20dp&amp;quot;&lt;br /&gt;
        android:paddingRight=&amp;quot;20dp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_short_subject&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;ImageView&lt;br /&gt;
            android:id=&amp;quot;@+id/iv_icon_rect&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_call_to_action&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;com.taiwanmobile.pt.adp.nativead.TWMMediaView&lt;br /&gt;
            android:id=&amp;quot;@+id/ad_media&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;150dp&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;120dp&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;lt;/com.taiwanmobile.pt.adp.view.TWMNativeAdView&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟3&lt;br /&gt;
: 將TWMNativeAd.nativeAdContent的廣告資訊套用在上述廣告佈局中&lt;br /&gt;
: 並於TWMNativeAdView進行填充(ex. setShortSubjectView()), 賦予點擊後開啟廣告之功能&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        val adContent: TWMNativeAdContent? = ad?.nativeAdContent&lt;br /&gt;
&lt;br /&gt;
        // shortSubject&lt;br /&gt;
        adContent?.shortSubject.let { subject -&amp;gt;&lt;br /&gt;
            // 顯示短標題於TextView之中&lt;br /&gt;
            vb.tvShortSubject.text = subject&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setShortSubjectView(vb.tvShortSubject)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // rect icon&lt;br /&gt;
        adContent?.iconRect?.getDrawable().let { rectDrawable -&amp;gt;&lt;br /&gt;
            // 顯示小圖 (長)於ImageView之中&lt;br /&gt;
            vb.ivIconRect.setImageDrawable(rectDrawable)&lt;br /&gt;
            vb.ivIconRect.adjustViewBounds = true&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setRectangleIconView(vb.ivIconRect)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // call to action&lt;br /&gt;
        adContent?.callToAction?.let { cta -&amp;gt;&lt;br /&gt;
            // 顯示行動呼籲於TextView之中&lt;br /&gt;
            vb.tvCallToAction.text = cta&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setCallToActionView(vb.tvCallToAction)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟4&lt;br /&gt;
: 如欲顯示影片廣告, 將mediaContent指派給TWMMediaView, 用TWMMediaView來顯示影片&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // MediaContent&lt;br /&gt;
        adContent?.mediaContent?.let { content -&amp;gt;&lt;br /&gt;
            // 顯示TWMMediaContent於TWMMediaView&lt;br /&gt;
            vb.adMedia.setMediaContent(content)&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能(前往了解)&lt;br /&gt;
            vb.nativeAdView.setMediaView(vb.adMedia)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟5&lt;br /&gt;
: 完成上述後, TWMNativeAd物件指派給TWMNativeAdView, 啟動原生廣告顯示 (重要!!!)&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;TWMNativeAdOptions&amp;lt;/b&amp;gt; ==&lt;br /&gt;
TWMAdRequest.setNativeAdOptions()供開發者相關功能, 調整原生廣告屬性&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| DISABLE_IMAGE_LOADING || align=&amp;quot;center&amp;quot;| TWMNativeAdContent.Image不含Drawable物件, 加速廣告下載速度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_START_UNMUTED || align=&amp;quot;center&amp;quot;| TWMMediaView影片初始為有聲音, 預設為靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_CUSTOM_CONTROLS_REQUESTED || align=&amp;quot;center&amp;quot;| TWMMediaView不提供影片控制項, 預設為提供&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| MEDIA_PREFER_IMAGE || align=&amp;quot;center&amp;quot;| TWMMediaView總是顯示圖片, 預設為影片&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: 下面例子為影片初始即有聲音&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val adRequest = TWMAdRequest()&lt;br /&gt;
    adRequest.setNativeAdOptions(arrayOf(TWMNativeAdOptions.VIDEO_START_UNMUTED))&lt;br /&gt;
    nativeAd?.loadAd(adRequest)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;釋放廣告&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;請在Activity的生命週期中加入下述的呼叫, 正確釋放TWMNativeAd物件&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  override fun onDestroy() {&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
        nativeAd?.destroy()&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 文字&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 影片&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead1.png | 300px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead2.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 客製化影片撥放元件(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
當TWMAdRequest.setNativeAdOptions()使用VIDEO_CUSTOM_CONTROLS_REQUESTED&lt;br /&gt;
TWMVideoController / TWMMediaContent包含了下列功能, 提供影片相關資訊, 提供開發者客製化自己的影片控制項&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.isMuted() || align=&amp;quot;center&amp;quot;| 影片是否靜音中&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.mute(boolean)|| align=&amp;quot;center&amp;quot;| 影片靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.setVideoLifecycleCallback(callback) || align=&amp;quot;center&amp;quot;| 影片生命週期(VideoLifecycleCallback)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getCurrentTime() || align=&amp;quot;center&amp;quot;| 取得目前撥放進度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getDuration() || align=&amp;quot;center&amp;quot;| 取得影片長度&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. TWMMediaView 預設UI項目客製化(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援TWMMediaView UI項目客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
開發者可透過TWMMediaView下列函式對預設UI控制項進行客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTAVisible(visible: Boolean) || align=&amp;quot;center&amp;quot;| 設定CTA是否顯示&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTATextSize(textSize: Float)|| align=&amp;quot;center&amp;quot;| 設定CTA文字大小 &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVideoCountdownTextSize(textSize: Float) || align=&amp;quot;center&amp;quot;| 設定影片倒數文字大小&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVolumeImageSize(imageSize: Int) || align=&amp;quot;center&amp;quot;| 設定靜音圖示大小&lt;br /&gt;
|}&lt;br /&gt;
[[image:TWMMediaView_CustomUI_Demo.png | 300px]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 支援Open-Measurement友善障礙物(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援Open-Measurement友善障礙物事件處理&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://interactiveadvertisingbureau.github.io/Open-Measurement-SDKAndroid/&lt;br /&gt;
&lt;br /&gt;
開發者可透過TWMNativeAdView.addFriendlyObstruction(view, purpose)將與原生廣告相關的控制元件設定為友善障礙物&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
下面以FloatingActionButton為例子, 按鈕本身為影片靜音設定,使用FriendlyObstructionPurpose.VIDEO_CONTROLS為障礙物目的&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
於TWMNativeAd.setNativeAd()之前完成障礙物添加&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // friendlyObstruction&lt;br /&gt;
        vb.nativeAdView.addFriendlyObstruction(vb.fab, TWMNativeAdView.FriendlyObstructionPurpose.VIDEO_CONTROLS)&lt;br /&gt;
        vb.fab.setOnClickListener {&lt;br /&gt;
            adContent?.mediaContent?.getVideoController()?.let { videoController -&amp;gt;&lt;br /&gt;
                val isMute = videoController.isMuted()&lt;br /&gt;
                // 設定影片靜音&lt;br /&gt;
                videoController.mute(!isMute)&lt;br /&gt;
                when (videoController.isMuted()) {&lt;br /&gt;
                    true -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_up_24) }&lt;br /&gt;
                    false -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_mute_24) }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 元件總類 !! 描述&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.VIDEO_CONTROLS || align=&amp;quot;center&amp;quot;| 影音控制項&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.CLOSE_AD || align=&amp;quot;center&amp;quot;| 關閉廣告&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.NOT_VISIBLE || align=&amp;quot;center&amp;quot;| 透明元件&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.OTHER || align=&amp;quot;center&amp;quot;| 非上述三種類別&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(NativeAdComposeActivity), TWMNativeAdComposable()中有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;90%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(上頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(下頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊素材後開啟廣告&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_1.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_2.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
原生廣告使用流程為先取得廣告物件TWMNativeAd, 再套用在TWMNativeAdView (TWMNativeAdComposable)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[檔案:SDK8.0.7_nativead_architecture.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val nativeAd: TWMNativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
    nativeAd.setAdListener(this)&lt;br /&gt;
    nativeAd.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_nativead_click.png&amp;diff=3720</id>
		<title>檔案:SDK8.0.7 nativead click.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_nativead_click.png&amp;diff=3720"/>
		<updated>2025-11-17T06:21:34Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3719</id>
		<title>Android Native Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3719"/>
		<updated>2025-11-17T06:21:10Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* Compose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;Native廣告支援內容&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節 !! 資料型別&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| ShortSubject || align=&amp;quot;center&amp;quot;| 短標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| LongSubject || align=&amp;quot;center&amp;quot;| 長標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| Body || align=&amp;quot;center&amp;quot;| 內文 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| CTA || align=&amp;quot;center&amp;quot;| 行動呼籲 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconRect || align=&amp;quot;center&amp;quot;| 小圖 (長) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconSquare || align=&amp;quot;center&amp;quot;| 小圖 (方) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image960_640 || align=&amp;quot;center&amp;quot;| 大圖 (960x640) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image1200_627 || align=&amp;quot;center&amp;quot;| 大圖 (1200x627) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| mediaContent || align=&amp;quot;center&amp;quot;| 多媒體素材(影音或主要圖片) || align=&amp;quot;center&amp;quot;| TWMMediaContent&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-native-ad-view/index.html NativeAd]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;實作方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
:步驟1&lt;br /&gt;
: 產生一個TWMNativeAd物件, 設定廣告版位adUnitId, 並呼叫load()請求原生廣告&lt;br /&gt;
: 監聽TWMAdListener, 透過onReceivedAd()取得原生廣告資訊TWMNativeAd.nativeAdContent&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // Native ad assets.&lt;br /&gt;
        var body: String? = null&lt;br /&gt;
        var shortSubject: String? = null&lt;br /&gt;
        var longSubject: String? = null&lt;br /&gt;
        var callToAction:String? = null&lt;br /&gt;
        var iconRect: TWMNativeAd.Image? = null&lt;br /&gt;
        var iconSquare: TWMNativeAd.Image? = null&lt;br /&gt;
        var image960x640: TWMNativeAd.Image? = null&lt;br /&gt;
        var image1200x627: TWMNativeAd.Image? = null&lt;br /&gt;
        var mediaContent: TWMMediaContent? = null&lt;br /&gt;
&lt;br /&gt;
        fun loadAd(context: Context,&lt;br /&gt;
                   adUnitId: String) {&lt;br /&gt;
            nativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
            nativeAd?.setAdListener(this)&lt;br /&gt;
            nativeAd?.loadAd(TWMAdRequest())&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
            this.body = nativeAd?.nativeAdContent?.body&lt;br /&gt;
            this.shortSubject = nativeAd?.nativeAdContent?.shortSubject&lt;br /&gt;
            this.longSubject = nativeAd?.nativeAdContent?.longSubject&lt;br /&gt;
            this.callToAction = nativeAd?.nativeAdContent?.callToAction&lt;br /&gt;
            this.iconRect = nativeAd?.nativeAdContent?.iconRect&lt;br /&gt;
            this.iconSquare = nativeAd?.nativeAdContent?.iconSquare&lt;br /&gt;
            this.image960x640 = nativeAd?.nativeAdContent?.image960_640&lt;br /&gt;
            this.image1200x627 = nativeAd?.nativeAdContent?.image1200_627&lt;br /&gt;
            this.mediaContent = nativeAd?.nativeAdContent?.mediaContent&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟2&lt;br /&gt;
: 使用TWMNativeAdView作為廣告佈局容器, 開發者可在容器中可自行排列文字(TextView)圖形(ImageView)甚至影片(TWMMediaView)等原生廣告&lt;br /&gt;
: 下面以短標題, 小圖 (長), Call To Action, 及多媒體素材當範例&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;com.taiwanmobile.pt.adp.view.TWMNativeAdView xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    android:id=&amp;quot;@+id/nativeAdView&amp;quot;&lt;br /&gt;
    android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:background=&amp;quot;@android:color/holo_orange_light&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LinearLayout&lt;br /&gt;
        android:id=&amp;quot;@+id/container&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_gravity=&amp;quot;center&amp;quot;&lt;br /&gt;
        android:minHeight=&amp;quot;50dp&amp;quot;&lt;br /&gt;
        android:orientation=&amp;quot;vertical&amp;quot;&lt;br /&gt;
        android:paddingLeft=&amp;quot;20dp&amp;quot;&lt;br /&gt;
        android:paddingRight=&amp;quot;20dp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_short_subject&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;ImageView&lt;br /&gt;
            android:id=&amp;quot;@+id/iv_icon_rect&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_call_to_action&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;com.taiwanmobile.pt.adp.nativead.TWMMediaView&lt;br /&gt;
            android:id=&amp;quot;@+id/ad_media&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;150dp&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;120dp&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;lt;/com.taiwanmobile.pt.adp.view.TWMNativeAdView&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟3&lt;br /&gt;
: 將TWMNativeAd.nativeAdContent的廣告資訊套用在上述廣告佈局中&lt;br /&gt;
: 並於TWMNativeAdView進行填充(ex. setShortSubjectView()), 賦予點擊後開啟廣告之功能&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        val adContent: TWMNativeAdContent? = ad?.nativeAdContent&lt;br /&gt;
&lt;br /&gt;
        // shortSubject&lt;br /&gt;
        adContent?.shortSubject.let { subject -&amp;gt;&lt;br /&gt;
            // 顯示短標題於TextView之中&lt;br /&gt;
            vb.tvShortSubject.text = subject&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setShortSubjectView(vb.tvShortSubject)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // rect icon&lt;br /&gt;
        adContent?.iconRect?.getDrawable().let { rectDrawable -&amp;gt;&lt;br /&gt;
            // 顯示小圖 (長)於ImageView之中&lt;br /&gt;
            vb.ivIconRect.setImageDrawable(rectDrawable)&lt;br /&gt;
            vb.ivIconRect.adjustViewBounds = true&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setRectangleIconView(vb.ivIconRect)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // call to action&lt;br /&gt;
        adContent?.callToAction?.let { cta -&amp;gt;&lt;br /&gt;
            // 顯示行動呼籲於TextView之中&lt;br /&gt;
            vb.tvCallToAction.text = cta&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setCallToActionView(vb.tvCallToAction)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟4&lt;br /&gt;
: 如欲顯示影片廣告, 將mediaContent指派給TWMMediaView, 用TWMMediaView來顯示影片&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // MediaContent&lt;br /&gt;
        adContent?.mediaContent?.let { content -&amp;gt;&lt;br /&gt;
            // 顯示TWMMediaContent於TWMMediaView&lt;br /&gt;
            vb.adMedia.setMediaContent(content)&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能(前往了解)&lt;br /&gt;
            vb.nativeAdView.setMediaView(vb.adMedia)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟5&lt;br /&gt;
: 完成上述後, TWMNativeAd物件指派給TWMNativeAdView, 啟動原生廣告顯示 (重要!!!)&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;TWMNativeAdOptions&amp;lt;/b&amp;gt; ==&lt;br /&gt;
TWMAdRequest.setNativeAdOptions()供開發者相關功能, 調整原生廣告屬性&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| DISABLE_IMAGE_LOADING || align=&amp;quot;center&amp;quot;| TWMNativeAdContent.Image不含Drawable物件, 加速廣告下載速度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_START_UNMUTED || align=&amp;quot;center&amp;quot;| TWMMediaView影片初始為有聲音, 預設為靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_CUSTOM_CONTROLS_REQUESTED || align=&amp;quot;center&amp;quot;| TWMMediaView不提供影片控制項, 預設為提供&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| MEDIA_PREFER_IMAGE || align=&amp;quot;center&amp;quot;| TWMMediaView總是顯示圖片, 預設為影片&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: 下面例子為影片初始即有聲音&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val adRequest = TWMAdRequest()&lt;br /&gt;
    adRequest.setNativeAdOptions(arrayOf(TWMNativeAdOptions.VIDEO_START_UNMUTED))&lt;br /&gt;
    nativeAd?.loadAd(adRequest)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;釋放廣告&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;請在Activity的生命週期中加入下述的呼叫, 正確釋放TWMNativeAd物件&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  override fun onDestroy() {&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
        nativeAd?.destroy()&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 文字&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 影片&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead1.png | 300px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead2.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 客製化影片撥放元件(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
當TWMAdRequest.setNativeAdOptions()使用VIDEO_CUSTOM_CONTROLS_REQUESTED&lt;br /&gt;
TWMVideoController / TWMMediaContent包含了下列功能, 提供影片相關資訊, 提供開發者客製化自己的影片控制項&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.isMuted() || align=&amp;quot;center&amp;quot;| 影片是否靜音中&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.mute(boolean)|| align=&amp;quot;center&amp;quot;| 影片靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.setVideoLifecycleCallback(callback) || align=&amp;quot;center&amp;quot;| 影片生命週期(VideoLifecycleCallback)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getCurrentTime() || align=&amp;quot;center&amp;quot;| 取得目前撥放進度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getDuration() || align=&amp;quot;center&amp;quot;| 取得影片長度&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. TWMMediaView 預設UI項目客製化(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援TWMMediaView UI項目客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
開發者可透過TWMMediaView下列函式對預設UI控制項進行客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTAVisible(visible: Boolean) || align=&amp;quot;center&amp;quot;| 設定CTA是否顯示&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTATextSize(textSize: Float)|| align=&amp;quot;center&amp;quot;| 設定CTA文字大小 &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVideoCountdownTextSize(textSize: Float) || align=&amp;quot;center&amp;quot;| 設定影片倒數文字大小&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVolumeImageSize(imageSize: Int) || align=&amp;quot;center&amp;quot;| 設定靜音圖示大小&lt;br /&gt;
|}&lt;br /&gt;
[[image:TWMMediaView_CustomUI_Demo.png | 300px]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 支援Open-Measurement友善障礙物(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援Open-Measurement友善障礙物事件處理&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://interactiveadvertisingbureau.github.io/Open-Measurement-SDKAndroid/&lt;br /&gt;
&lt;br /&gt;
開發者可透過TWMNativeAdView.addFriendlyObstruction(view, purpose)將與原生廣告相關的控制元件設定為友善障礙物&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
下面以FloatingActionButton為例子, 按鈕本身為影片靜音設定,使用FriendlyObstructionPurpose.VIDEO_CONTROLS為障礙物目的&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
於TWMNativeAd.setNativeAd()之前完成障礙物添加&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // friendlyObstruction&lt;br /&gt;
        vb.nativeAdView.addFriendlyObstruction(vb.fab, TWMNativeAdView.FriendlyObstructionPurpose.VIDEO_CONTROLS)&lt;br /&gt;
        vb.fab.setOnClickListener {&lt;br /&gt;
            adContent?.mediaContent?.getVideoController()?.let { videoController -&amp;gt;&lt;br /&gt;
                val isMute = videoController.isMuted()&lt;br /&gt;
                // 設定影片靜音&lt;br /&gt;
                videoController.mute(!isMute)&lt;br /&gt;
                when (videoController.isMuted()) {&lt;br /&gt;
                    true -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_up_24) }&lt;br /&gt;
                    false -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_mute_24) }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 元件總類 !! 描述&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.VIDEO_CONTROLS || align=&amp;quot;center&amp;quot;| 影音控制項&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.CLOSE_AD || align=&amp;quot;center&amp;quot;| 關閉廣告&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.NOT_VISIBLE || align=&amp;quot;center&amp;quot;| 透明元件&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.OTHER || align=&amp;quot;center&amp;quot;| 非上述三種類別&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(NativeAdComposeActivity), TWMNativeAdComposable()中有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;90%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(上頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(下頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊素材後開啟廣告&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_1.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_2.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val nativeAd: TWMNativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
    nativeAd.setAdListener(this)&lt;br /&gt;
    nativeAd.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_nativead_1.png&amp;diff=3718</id>
		<title>檔案:SDK8.0.7 nativead 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_nativead_1.png&amp;diff=3718"/>
		<updated>2025-11-17T06:19:36Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_nativead_2.png&amp;diff=3717</id>
		<title>檔案:SDK8.0.7 nativead 2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_nativead_2.png&amp;diff=3717"/>
		<updated>2025-11-17T06:19:26Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3716</id>
		<title>Android Native Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3716"/>
		<updated>2025-11-17T06:18:56Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* Compose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;Native廣告支援內容&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節 !! 資料型別&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| ShortSubject || align=&amp;quot;center&amp;quot;| 短標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| LongSubject || align=&amp;quot;center&amp;quot;| 長標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| Body || align=&amp;quot;center&amp;quot;| 內文 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| CTA || align=&amp;quot;center&amp;quot;| 行動呼籲 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconRect || align=&amp;quot;center&amp;quot;| 小圖 (長) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconSquare || align=&amp;quot;center&amp;quot;| 小圖 (方) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image960_640 || align=&amp;quot;center&amp;quot;| 大圖 (960x640) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image1200_627 || align=&amp;quot;center&amp;quot;| 大圖 (1200x627) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| mediaContent || align=&amp;quot;center&amp;quot;| 多媒體素材(影音或主要圖片) || align=&amp;quot;center&amp;quot;| TWMMediaContent&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-native-ad-view/index.html NativeAd]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;實作方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
:步驟1&lt;br /&gt;
: 產生一個TWMNativeAd物件, 設定廣告版位adUnitId, 並呼叫load()請求原生廣告&lt;br /&gt;
: 監聽TWMAdListener, 透過onReceivedAd()取得原生廣告資訊TWMNativeAd.nativeAdContent&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // Native ad assets.&lt;br /&gt;
        var body: String? = null&lt;br /&gt;
        var shortSubject: String? = null&lt;br /&gt;
        var longSubject: String? = null&lt;br /&gt;
        var callToAction:String? = null&lt;br /&gt;
        var iconRect: TWMNativeAd.Image? = null&lt;br /&gt;
        var iconSquare: TWMNativeAd.Image? = null&lt;br /&gt;
        var image960x640: TWMNativeAd.Image? = null&lt;br /&gt;
        var image1200x627: TWMNativeAd.Image? = null&lt;br /&gt;
        var mediaContent: TWMMediaContent? = null&lt;br /&gt;
&lt;br /&gt;
        fun loadAd(context: Context,&lt;br /&gt;
                   adUnitId: String) {&lt;br /&gt;
            nativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
            nativeAd?.setAdListener(this)&lt;br /&gt;
            nativeAd?.loadAd(TWMAdRequest())&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
            this.body = nativeAd?.nativeAdContent?.body&lt;br /&gt;
            this.shortSubject = nativeAd?.nativeAdContent?.shortSubject&lt;br /&gt;
            this.longSubject = nativeAd?.nativeAdContent?.longSubject&lt;br /&gt;
            this.callToAction = nativeAd?.nativeAdContent?.callToAction&lt;br /&gt;
            this.iconRect = nativeAd?.nativeAdContent?.iconRect&lt;br /&gt;
            this.iconSquare = nativeAd?.nativeAdContent?.iconSquare&lt;br /&gt;
            this.image960x640 = nativeAd?.nativeAdContent?.image960_640&lt;br /&gt;
            this.image1200x627 = nativeAd?.nativeAdContent?.image1200_627&lt;br /&gt;
            this.mediaContent = nativeAd?.nativeAdContent?.mediaContent&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟2&lt;br /&gt;
: 使用TWMNativeAdView作為廣告佈局容器, 開發者可在容器中可自行排列文字(TextView)圖形(ImageView)甚至影片(TWMMediaView)等原生廣告&lt;br /&gt;
: 下面以短標題, 小圖 (長), Call To Action, 及多媒體素材當範例&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;com.taiwanmobile.pt.adp.view.TWMNativeAdView xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    android:id=&amp;quot;@+id/nativeAdView&amp;quot;&lt;br /&gt;
    android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:background=&amp;quot;@android:color/holo_orange_light&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LinearLayout&lt;br /&gt;
        android:id=&amp;quot;@+id/container&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_gravity=&amp;quot;center&amp;quot;&lt;br /&gt;
        android:minHeight=&amp;quot;50dp&amp;quot;&lt;br /&gt;
        android:orientation=&amp;quot;vertical&amp;quot;&lt;br /&gt;
        android:paddingLeft=&amp;quot;20dp&amp;quot;&lt;br /&gt;
        android:paddingRight=&amp;quot;20dp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_short_subject&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;ImageView&lt;br /&gt;
            android:id=&amp;quot;@+id/iv_icon_rect&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_call_to_action&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;com.taiwanmobile.pt.adp.nativead.TWMMediaView&lt;br /&gt;
            android:id=&amp;quot;@+id/ad_media&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;150dp&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;120dp&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;lt;/com.taiwanmobile.pt.adp.view.TWMNativeAdView&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟3&lt;br /&gt;
: 將TWMNativeAd.nativeAdContent的廣告資訊套用在上述廣告佈局中&lt;br /&gt;
: 並於TWMNativeAdView進行填充(ex. setShortSubjectView()), 賦予點擊後開啟廣告之功能&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        val adContent: TWMNativeAdContent? = ad?.nativeAdContent&lt;br /&gt;
&lt;br /&gt;
        // shortSubject&lt;br /&gt;
        adContent?.shortSubject.let { subject -&amp;gt;&lt;br /&gt;
            // 顯示短標題於TextView之中&lt;br /&gt;
            vb.tvShortSubject.text = subject&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setShortSubjectView(vb.tvShortSubject)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // rect icon&lt;br /&gt;
        adContent?.iconRect?.getDrawable().let { rectDrawable -&amp;gt;&lt;br /&gt;
            // 顯示小圖 (長)於ImageView之中&lt;br /&gt;
            vb.ivIconRect.setImageDrawable(rectDrawable)&lt;br /&gt;
            vb.ivIconRect.adjustViewBounds = true&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setRectangleIconView(vb.ivIconRect)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // call to action&lt;br /&gt;
        adContent?.callToAction?.let { cta -&amp;gt;&lt;br /&gt;
            // 顯示行動呼籲於TextView之中&lt;br /&gt;
            vb.tvCallToAction.text = cta&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setCallToActionView(vb.tvCallToAction)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟4&lt;br /&gt;
: 如欲顯示影片廣告, 將mediaContent指派給TWMMediaView, 用TWMMediaView來顯示影片&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // MediaContent&lt;br /&gt;
        adContent?.mediaContent?.let { content -&amp;gt;&lt;br /&gt;
            // 顯示TWMMediaContent於TWMMediaView&lt;br /&gt;
            vb.adMedia.setMediaContent(content)&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能(前往了解)&lt;br /&gt;
            vb.nativeAdView.setMediaView(vb.adMedia)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟5&lt;br /&gt;
: 完成上述後, TWMNativeAd物件指派給TWMNativeAdView, 啟動原生廣告顯示 (重要!!!)&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;TWMNativeAdOptions&amp;lt;/b&amp;gt; ==&lt;br /&gt;
TWMAdRequest.setNativeAdOptions()供開發者相關功能, 調整原生廣告屬性&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| DISABLE_IMAGE_LOADING || align=&amp;quot;center&amp;quot;| TWMNativeAdContent.Image不含Drawable物件, 加速廣告下載速度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_START_UNMUTED || align=&amp;quot;center&amp;quot;| TWMMediaView影片初始為有聲音, 預設為靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_CUSTOM_CONTROLS_REQUESTED || align=&amp;quot;center&amp;quot;| TWMMediaView不提供影片控制項, 預設為提供&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| MEDIA_PREFER_IMAGE || align=&amp;quot;center&amp;quot;| TWMMediaView總是顯示圖片, 預設為影片&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: 下面例子為影片初始即有聲音&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val adRequest = TWMAdRequest()&lt;br /&gt;
    adRequest.setNativeAdOptions(arrayOf(TWMNativeAdOptions.VIDEO_START_UNMUTED))&lt;br /&gt;
    nativeAd?.loadAd(adRequest)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;釋放廣告&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;請在Activity的生命週期中加入下述的呼叫, 正確釋放TWMNativeAd物件&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  override fun onDestroy() {&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
        nativeAd?.destroy()&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 文字&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 影片&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead1.png | 300px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead2.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 客製化影片撥放元件(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
當TWMAdRequest.setNativeAdOptions()使用VIDEO_CUSTOM_CONTROLS_REQUESTED&lt;br /&gt;
TWMVideoController / TWMMediaContent包含了下列功能, 提供影片相關資訊, 提供開發者客製化自己的影片控制項&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.isMuted() || align=&amp;quot;center&amp;quot;| 影片是否靜音中&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.mute(boolean)|| align=&amp;quot;center&amp;quot;| 影片靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.setVideoLifecycleCallback(callback) || align=&amp;quot;center&amp;quot;| 影片生命週期(VideoLifecycleCallback)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getCurrentTime() || align=&amp;quot;center&amp;quot;| 取得目前撥放進度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getDuration() || align=&amp;quot;center&amp;quot;| 取得影片長度&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. TWMMediaView 預設UI項目客製化(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援TWMMediaView UI項目客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
開發者可透過TWMMediaView下列函式對預設UI控制項進行客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTAVisible(visible: Boolean) || align=&amp;quot;center&amp;quot;| 設定CTA是否顯示&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTATextSize(textSize: Float)|| align=&amp;quot;center&amp;quot;| 設定CTA文字大小 &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVideoCountdownTextSize(textSize: Float) || align=&amp;quot;center&amp;quot;| 設定影片倒數文字大小&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVolumeImageSize(imageSize: Int) || align=&amp;quot;center&amp;quot;| 設定靜音圖示大小&lt;br /&gt;
|}&lt;br /&gt;
[[image:TWMMediaView_CustomUI_Demo.png | 300px]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 支援Open-Measurement友善障礙物(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援Open-Measurement友善障礙物事件處理&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://interactiveadvertisingbureau.github.io/Open-Measurement-SDKAndroid/&lt;br /&gt;
&lt;br /&gt;
開發者可透過TWMNativeAdView.addFriendlyObstruction(view, purpose)將與原生廣告相關的控制元件設定為友善障礙物&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
下面以FloatingActionButton為例子, 按鈕本身為影片靜音設定,使用FriendlyObstructionPurpose.VIDEO_CONTROLS為障礙物目的&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
於TWMNativeAd.setNativeAd()之前完成障礙物添加&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // friendlyObstruction&lt;br /&gt;
        vb.nativeAdView.addFriendlyObstruction(vb.fab, TWMNativeAdView.FriendlyObstructionPurpose.VIDEO_CONTROLS)&lt;br /&gt;
        vb.fab.setOnClickListener {&lt;br /&gt;
            adContent?.mediaContent?.getVideoController()?.let { videoController -&amp;gt;&lt;br /&gt;
                val isMute = videoController.isMuted()&lt;br /&gt;
                // 設定影片靜音&lt;br /&gt;
                videoController.mute(!isMute)&lt;br /&gt;
                when (videoController.isMuted()) {&lt;br /&gt;
                    true -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_up_24) }&lt;br /&gt;
                    false -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_mute_24) }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 元件總類 !! 描述&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.VIDEO_CONTROLS || align=&amp;quot;center&amp;quot;| 影音控制項&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.CLOSE_AD || align=&amp;quot;center&amp;quot;| 關閉廣告&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.NOT_VISIBLE || align=&amp;quot;center&amp;quot;| 透明元件&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.OTHER || align=&amp;quot;center&amp;quot;| 非上述三種類別&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(NativeAdComposeActivity), TWMNativeAdComposable()中有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(上頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟(下頁)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_1.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_2.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val nativeAd: TWMNativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
    nativeAd.setAdListener(this)&lt;br /&gt;
    nativeAd.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_nativead_no_fill.png&amp;diff=3715</id>
		<title>檔案:SDK8.0.7 nativead no fill.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_nativead_no_fill.png&amp;diff=3715"/>
		<updated>2025-11-17T06:16:31Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3714</id>
		<title>Android Native Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Native_Ads_SDK8&amp;diff=3714"/>
		<updated>2025-11-17T05:57:06Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;Native廣告支援內容&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節 !! 資料型別&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| ShortSubject || align=&amp;quot;center&amp;quot;| 短標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| LongSubject || align=&amp;quot;center&amp;quot;| 長標題 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| Body || align=&amp;quot;center&amp;quot;| 內文 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| CTA || align=&amp;quot;center&amp;quot;| 行動呼籲 || align=&amp;quot;center&amp;quot;| String&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconRect || align=&amp;quot;center&amp;quot;| 小圖 (長) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| iconSquare || align=&amp;quot;center&amp;quot;| 小圖 (方) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image960_640 || align=&amp;quot;center&amp;quot;| 大圖 (960x640) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| image1200_627 || align=&amp;quot;center&amp;quot;| 大圖 (1200x627) || align=&amp;quot;center&amp;quot;| TWMNativeAd.Image&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| mediaContent || align=&amp;quot;center&amp;quot;| 多媒體素材(影音或主要圖片) || align=&amp;quot;center&amp;quot;| TWMMediaContent&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-native-ad-view/index.html NativeAd]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;實作方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
:步驟1&lt;br /&gt;
: 產生一個TWMNativeAd物件, 設定廣告版位adUnitId, 並呼叫load()請求原生廣告&lt;br /&gt;
: 監聽TWMAdListener, 透過onReceivedAd()取得原生廣告資訊TWMNativeAd.nativeAdContent&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // Native ad assets.&lt;br /&gt;
        var body: String? = null&lt;br /&gt;
        var shortSubject: String? = null&lt;br /&gt;
        var longSubject: String? = null&lt;br /&gt;
        var callToAction:String? = null&lt;br /&gt;
        var iconRect: TWMNativeAd.Image? = null&lt;br /&gt;
        var iconSquare: TWMNativeAd.Image? = null&lt;br /&gt;
        var image960x640: TWMNativeAd.Image? = null&lt;br /&gt;
        var image1200x627: TWMNativeAd.Image? = null&lt;br /&gt;
        var mediaContent: TWMMediaContent? = null&lt;br /&gt;
&lt;br /&gt;
        fun loadAd(context: Context,&lt;br /&gt;
                   adUnitId: String) {&lt;br /&gt;
            nativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
            nativeAd?.setAdListener(this)&lt;br /&gt;
            nativeAd?.loadAd(TWMAdRequest())&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
            this.body = nativeAd?.nativeAdContent?.body&lt;br /&gt;
            this.shortSubject = nativeAd?.nativeAdContent?.shortSubject&lt;br /&gt;
            this.longSubject = nativeAd?.nativeAdContent?.longSubject&lt;br /&gt;
            this.callToAction = nativeAd?.nativeAdContent?.callToAction&lt;br /&gt;
            this.iconRect = nativeAd?.nativeAdContent?.iconRect&lt;br /&gt;
            this.iconSquare = nativeAd?.nativeAdContent?.iconSquare&lt;br /&gt;
            this.image960x640 = nativeAd?.nativeAdContent?.image960_640&lt;br /&gt;
            this.image1200x627 = nativeAd?.nativeAdContent?.image1200_627&lt;br /&gt;
            this.mediaContent = nativeAd?.nativeAdContent?.mediaContent&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟2&lt;br /&gt;
: 使用TWMNativeAdView作為廣告佈局容器, 開發者可在容器中可自行排列文字(TextView)圖形(ImageView)甚至影片(TWMMediaView)等原生廣告&lt;br /&gt;
: 下面以短標題, 小圖 (長), Call To Action, 及多媒體素材當範例&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;com.taiwanmobile.pt.adp.view.TWMNativeAdView xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    android:id=&amp;quot;@+id/nativeAdView&amp;quot;&lt;br /&gt;
    android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
    android:background=&amp;quot;@android:color/holo_orange_light&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LinearLayout&lt;br /&gt;
        android:id=&amp;quot;@+id/container&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_gravity=&amp;quot;center&amp;quot;&lt;br /&gt;
        android:minHeight=&amp;quot;50dp&amp;quot;&lt;br /&gt;
        android:orientation=&amp;quot;vertical&amp;quot;&lt;br /&gt;
        android:paddingLeft=&amp;quot;20dp&amp;quot;&lt;br /&gt;
        android:paddingRight=&amp;quot;20dp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_short_subject&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;ImageView&lt;br /&gt;
            android:id=&amp;quot;@+id/iv_icon_rect&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;TextView&lt;br /&gt;
            android:id=&amp;quot;@+id/tv_call_to_action&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;com.taiwanmobile.pt.adp.nativead.TWMMediaView&lt;br /&gt;
            android:id=&amp;quot;@+id/ad_media&amp;quot;&lt;br /&gt;
            android:layout_width=&amp;quot;150dp&amp;quot;&lt;br /&gt;
            android:layout_height=&amp;quot;120dp&amp;quot;&lt;br /&gt;
            android:layout_marginTop=&amp;quot;10dp&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;lt;/com.taiwanmobile.pt.adp.view.TWMNativeAdView&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟3&lt;br /&gt;
: 將TWMNativeAd.nativeAdContent的廣告資訊套用在上述廣告佈局中&lt;br /&gt;
: 並於TWMNativeAdView進行填充(ex. setShortSubjectView()), 賦予點擊後開啟廣告之功能&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        val adContent: TWMNativeAdContent? = ad?.nativeAdContent&lt;br /&gt;
&lt;br /&gt;
        // shortSubject&lt;br /&gt;
        adContent?.shortSubject.let { subject -&amp;gt;&lt;br /&gt;
            // 顯示短標題於TextView之中&lt;br /&gt;
            vb.tvShortSubject.text = subject&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setShortSubjectView(vb.tvShortSubject)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // rect icon&lt;br /&gt;
        adContent?.iconRect?.getDrawable().let { rectDrawable -&amp;gt;&lt;br /&gt;
            // 顯示小圖 (長)於ImageView之中&lt;br /&gt;
            vb.ivIconRect.setImageDrawable(rectDrawable)&lt;br /&gt;
            vb.ivIconRect.adjustViewBounds = true&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setRectangleIconView(vb.ivIconRect)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // call to action&lt;br /&gt;
        adContent?.callToAction?.let { cta -&amp;gt;&lt;br /&gt;
            // 顯示行動呼籲於TextView之中&lt;br /&gt;
            vb.tvCallToAction.text = cta&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能&lt;br /&gt;
            vb.nativeAdView.setCallToActionView(vb.tvCallToAction)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟4&lt;br /&gt;
: 如欲顯示影片廣告, 將mediaContent指派給TWMMediaView, 用TWMMediaView來顯示影片&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // MediaContent&lt;br /&gt;
        adContent?.mediaContent?.let { content -&amp;gt;&lt;br /&gt;
            // 顯示TWMMediaContent於TWMMediaView&lt;br /&gt;
            vb.adMedia.setMediaContent(content)&lt;br /&gt;
            // 於TWMNativeAdView進行填充, 賦予點擊後開啟廣告之功能(前往了解)&lt;br /&gt;
            vb.nativeAdView.setMediaView(vb.adMedia)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:步驟5&lt;br /&gt;
: 完成上述後, TWMNativeAd物件指派給TWMNativeAdView, 啟動原生廣告顯示 (重要!!!)&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;TWMNativeAdOptions&amp;lt;/b&amp;gt; ==&lt;br /&gt;
TWMAdRequest.setNativeAdOptions()供開發者相關功能, 調整原生廣告屬性&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Native廣告支援下列數種內容：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告內容 !! 內容細節&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| DISABLE_IMAGE_LOADING || align=&amp;quot;center&amp;quot;| TWMNativeAdContent.Image不含Drawable物件, 加速廣告下載速度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_START_UNMUTED || align=&amp;quot;center&amp;quot;| TWMMediaView影片初始為有聲音, 預設為靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| VIDEO_CUSTOM_CONTROLS_REQUESTED || align=&amp;quot;center&amp;quot;| TWMMediaView不提供影片控制項, 預設為提供&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| MEDIA_PREFER_IMAGE || align=&amp;quot;center&amp;quot;| TWMMediaView總是顯示圖片, 預設為影片&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: 下面例子為影片初始即有聲音&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val adRequest = TWMAdRequest()&lt;br /&gt;
    adRequest.setNativeAdOptions(arrayOf(TWMNativeAdOptions.VIDEO_START_UNMUTED))&lt;br /&gt;
    nativeAd?.loadAd(adRequest)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;釋放廣告&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;請在Activity的生命週期中加入下述的呼叫, 正確釋放TWMNativeAd物件&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  override fun onDestroy() {&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
        nativeAd?.destroy()&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 文字&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 影片&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead1.png | 300px]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 nativead2.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 客製化影片撥放元件(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
當TWMAdRequest.setNativeAdOptions()使用VIDEO_CUSTOM_CONTROLS_REQUESTED&lt;br /&gt;
TWMVideoController / TWMMediaContent包含了下列功能, 提供影片相關資訊, 提供開發者客製化自己的影片控制項&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.isMuted() || align=&amp;quot;center&amp;quot;| 影片是否靜音中&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.mute(boolean)|| align=&amp;quot;center&amp;quot;| 影片靜音&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMVideoController.setVideoLifecycleCallback(callback) || align=&amp;quot;center&amp;quot;| 影片生命週期(VideoLifecycleCallback)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getCurrentTime() || align=&amp;quot;center&amp;quot;| 取得目前撥放進度&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaContent.getDuration() || align=&amp;quot;center&amp;quot;| 取得影片長度&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. TWMMediaView 預設UI項目客製化(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援TWMMediaView UI項目客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
開發者可透過TWMMediaView下列函式對預設UI控制項進行客製化&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 函式名稱 !! 功能&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTAVisible(visible: Boolean) || align=&amp;quot;center&amp;quot;| 設定CTA是否顯示&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setCTATextSize(textSize: Float)|| align=&amp;quot;center&amp;quot;| 設定CTA文字大小 &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVideoCountdownTextSize(textSize: Float) || align=&amp;quot;center&amp;quot;| 設定影片倒數文字大小&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| TWMMediaView.setVolumeImageSize(imageSize: Int) || align=&amp;quot;center&amp;quot;| 設定靜音圖示大小&lt;br /&gt;
|}&lt;br /&gt;
[[image:TWMMediaView_CustomUI_Demo.png | 300px]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;進階. 支援Open-Measurement友善障礙物(選擇性實作, 非必要)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8支援Open-Measurement友善障礙物事件處理&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
https://interactiveadvertisingbureau.github.io/Open-Measurement-SDKAndroid/&lt;br /&gt;
&lt;br /&gt;
開發者可透過TWMNativeAdView.addFriendlyObstruction(view, purpose)將與原生廣告相關的控制元件設定為友善障礙物&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
下面以FloatingActionButton為例子, 按鈕本身為影片靜音設定,使用FriendlyObstructionPurpose.VIDEO_CONTROLS為障礙物目的&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
於TWMNativeAd.setNativeAd()之前完成障礙物添加&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        // friendlyObstruction&lt;br /&gt;
        vb.nativeAdView.addFriendlyObstruction(vb.fab, TWMNativeAdView.FriendlyObstructionPurpose.VIDEO_CONTROLS)&lt;br /&gt;
        vb.fab.setOnClickListener {&lt;br /&gt;
            adContent?.mediaContent?.getVideoController()?.let { videoController -&amp;gt;&lt;br /&gt;
                val isMute = videoController.isMuted()&lt;br /&gt;
                // 設定影片靜音&lt;br /&gt;
                videoController.mute(!isMute)&lt;br /&gt;
                when (videoController.isMuted()) {&lt;br /&gt;
                    true -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_up_24) }&lt;br /&gt;
                    false -&amp;gt; { vb.fab.setImageResource(R.drawable.ic_baseline_volume_mute_24) }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // nativeAd&lt;br /&gt;
        vb.nativeAdView.setNativeAd(nativeAd)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 元件總類 !! 描述&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.VIDEO_CONTROLS || align=&amp;quot;center&amp;quot;| 影音控制項&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.CLOSE_AD || align=&amp;quot;center&amp;quot;| 關閉廣告&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.NOT_VISIBLE || align=&amp;quot;center&amp;quot;| 透明元件&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;| FriendlyObstructionPurpose.OTHER || align=&amp;quot;center&amp;quot;| 非上述三種類別&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(NativeAdComposeActivity), TWMNativeAdComposable()中有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊相關原生素材後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_nativead_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val nativeAd: TWMNativeAd = TWMNativeAd(context, adUnitId)&lt;br /&gt;
    nativeAd.setAdListener(this)&lt;br /&gt;
    nativeAd.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Banner_Ads_SDK8&amp;diff=3713</id>
		<title>Android Banner Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Banner_Ads_SDK8&amp;diff=3713"/>
		<updated>2025-11-17T05:49:18Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* 實作方式 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;Banner 廣告支援格式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Banner廣告支援下列數種形式：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告格式 !! 大小(寬度x高度) !! TWMAdSize 常數值&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|BANNER || align=&amp;quot;center&amp;quot;|320x50 || align=&amp;quot;center&amp;quot;|TWMAdSize.BANNER&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|BANNER || align=&amp;quot;center&amp;quot;|300x250 || align=&amp;quot;center&amp;quot;|TWMAdSize.BANNER_300X250&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|BANNER || align=&amp;quot;center&amp;quot;|1200x627 || align=&amp;quot;center&amp;quot;|TWMAdSize.BANNER_1200X627&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|SMART_BANNER || align=&amp;quot;center&amp;quot;|自動對應裝置寬度, 並對應適當的高度 || align=&amp;quot;center&amp;quot;|TWMAdSize.SMART_BANNER&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK設計文件&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-view/index.html Banner]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;實作方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;廣告初始設置&amp;lt;/span&amp;gt;&lt;br /&gt;
:動態生成TWMAdView加入Layout中&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Layout (XML範例) !! Activity(Kotlin)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%; padding:1%;&amp;quot;|&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;RelativeLayout&lt;br /&gt;
  	android:id=&amp;quot;@+id/ad_container&amp;quot;&lt;br /&gt;
  	android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
  	android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
  	android:gravity=&amp;quot;center_horizontal&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/RelativeLayout&amp;gt; &lt;br /&gt;
| style=&amp;quot;width:60%; padding: 1%;&amp;quot;|&lt;br /&gt;
  var adView: TWMAdView? = null&lt;br /&gt;
  var mRelativeLayout: RelativeLayout? = null&lt;br /&gt;
  &lt;br /&gt;
  companion object {  &lt;br /&gt;
      const val TAMEDIA_BANNER_AD_UNIT_ID: String = &amp;quot;INSERT_YOUR_AD_UNIT_ID&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  // Other Implement ... &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 依序傳入Activity, TWMAdSize, 以及Ad Unit Id，TWMAdSize請參考頁首的TWMAdSize常數值&amp;lt;/b&amp;gt;&lt;br /&gt;
  adView = TWMAdView(this,TWMAdSize.BANNER,TAMEDIA_BANNER_AD_UNIT_ID)&lt;br /&gt;
  val layoutParams = RelativeLayout.LayoutParams(&lt;br /&gt;
      RelativeLayout.LayoutParams.WRAP_CONTENT,&lt;br /&gt;
      RelativeLayout.LayoutParams.WRAP_CONTENT&lt;br /&gt;
  )&lt;br /&gt;
  layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM)&lt;br /&gt;
  layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL)&lt;br /&gt;
  adView!!.layoutParams = layoutParams&lt;br /&gt;
  mRelativeLayout?.addView(adView)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:或是將TWMAdView宣告至XML中, 透過findViewById取得TWMAdView&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;LinearLayout xmlns:android=&amp;lt;nowiki&amp;gt;&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
    android:layout_height=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
    android:orientation=&amp;quot;vertical&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;lt;com.taiwanmobile.pt.adp.view.TWMAdView&lt;br /&gt;
        xmlns:ad=&amp;lt;nowiki&amp;gt;&amp;quot;http://schemas.android.com/apk/lib/com.taiwanmobile.pt.adp.view&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
        android:id=&amp;quot;@+id/adView&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        ad:adSize=&amp;quot;BANNER&amp;quot;&lt;br /&gt;
        ad:adunitId=&amp;quot;{AD_UNIT_ID}&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;lt;/com.taiwanmobile.pt.adp.view.TWMAdView&amp;gt;&lt;br /&gt;
 &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;加入TWMAdViewListener監聽廣告投放情況&amp;lt;/span&amp;gt;&lt;br /&gt;
  adView.setAdListener(object : TWMAdViewListener {&lt;br /&gt;
     override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示本次請求收到廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onFailedToReceiveAd(ad: TWMAd, errorCode: TWMAdRequest.ErrorCode) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示本次請求發生錯誤, 並沒有廣告內容可供使用&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onPresentScreen(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示廣告內容已呈現&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onDismissScreen(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示廣告內容已被關閉&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onLeaveApplication(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示因點擊廣告或其他因素離開app&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
  })&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;請求廣告&amp;lt;/span&amp;gt;&lt;br /&gt;
請求廣告前，你需要創建一個預設的TWMAdRequest物件, 並將TWMAdReqeust物件傳入loadAd&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
  adView?.loadAd(TWMAdRequest())	&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;最後請記得, 於Activity.onDestroy()回收TWMAdView物件&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
  override fun onDestroy() {&lt;br /&gt;
      super.onDestroy()&lt;br /&gt;
      if (view is TWMAdView) {&lt;br /&gt;
          view.destroy()&lt;br /&gt;
      }&lt;br /&gt;
      mRelativeLayout?.removeAllViews()&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;b&amp;gt;畫面展示&amp;lt;/b&amp;gt;==&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊Banner後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊Banner後撥打電話&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8 banner.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8 banner click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:4.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(BannerComposeActivity), TWMBannerComposable()中有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊Banner後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_banner.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_banner_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_banner_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        val adView: TWMAdView = TWMAdView(activity, adSize, adunitId)&lt;br /&gt;
        val paramAd = RelativeLayout.LayoutParams(&lt;br /&gt;
            RelativeLayout.LayoutParams.MATCH_PARENT,&lt;br /&gt;
            RelativeLayout.LayoutParams.WRAP_CONTENT&lt;br /&gt;
        )&lt;br /&gt;
        paramAd.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM)&lt;br /&gt;
        paramAd.addRule(RelativeLayout.CENTER_HORIZONTAL)&lt;br /&gt;
        adView?.layoutParams = paramAd&lt;br /&gt;
        adView?.visibility = View.INVISIBLE&lt;br /&gt;
        container?.addView(adView)&lt;br /&gt;
&lt;br /&gt;
        adView?.loadAd(adRequest.apply {&lt;br /&gt;
            setChildDirectedTreatment(true)&lt;br /&gt;
        })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Interstitial_Ads_SDK8&amp;diff=3712</id>
		<title>Android Interstitial Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Interstitial_Ads_SDK8&amp;diff=3712"/>
		<updated>2025-11-17T05:44:59Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;簡介&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TWMInterstitialAd為全螢幕大小之廣告, 使用方法跟TWMAdView非常類似, 顯示廣告時需在onReceivedAd()之後呼叫show()函式以便顯示&amp;lt;br/&amp;gt;&amp;lt;b&amp;gt;注意：目前Interstitial廣告有相同版位ID在同一台裝置上，預設為120分鐘展示一次,如需調整請洽服務窗口&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-interstitial-ad/index.html Interstitial]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;實作方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;廣告初始設置&amp;lt;/span&amp;gt;&lt;br /&gt;
 var interstitialAd : TWMInterstitialAd? = null&lt;br /&gt;
 interstitialAd = TWMInterstitialAd(this ,TAMEDIA_INTERSTITIAL_ADUNITID)&lt;br /&gt;
 companion object{&lt;br /&gt;
        const val TAMEDIA_INTERSTITIAL_ADUNITID: String = &amp;quot;&amp;lt;b&amp;gt;{TAMEDIA_INTERSTITIAL_ADUNITID}&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;加入TWMAdViewListener監聽廣告投放情況，並在onReceiveAd Callback內呼叫showAd()&amp;lt;/span&amp;gt;&lt;br /&gt;
:在&amp;lt;b&amp;gt;onReceiveAd&amp;lt;/b&amp;gt;後可透過&amp;lt;b&amp;gt;showAd()&amp;lt;/b&amp;gt;顯示廣告&lt;br /&gt;
 interstitialAd.setAdListener(object : TWMAdViewListener {&lt;br /&gt;
     override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示本次請求收到廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
          interstitialAd?.show()&lt;br /&gt;
     }&lt;br /&gt;
     override fun onFailedToReceiveAd(ad: TWMAd, errorCode: TWMAdRequest.ErrorCode) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示本次請求發生錯誤, 並沒有廣告內容可供使用&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onPresentScreen(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示廣告內容已呈現&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onDismissScreen(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示廣告內容已被關閉&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onLeaveApplication(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示因點擊廣告或其他因素離開app&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
 })&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;請求廣告&amp;lt;/span&amp;gt;&lt;br /&gt;
使用預設TWMAdRequest&lt;br /&gt;
  interstitialAd?.loadAd(TWMAdRequest())&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;結束廣告&amp;lt;/span&amp;gt;&lt;br /&gt;
destroy() 必須被呼叫, 即使Interstitial沒有被使用到或參考&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
  interstitialAd.destroy()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interstitial畫面展示 ==&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 插頁式廣告呈現&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8 inerstitial.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(InterstitialComposeActivity), 內有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊Interstitial後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_interstitial.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_interstitial_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_interstitial_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val interstitialAd: TWMInterstitialAd = TWMInterstitialAd(activity, adUnitId)&lt;br /&gt;
    interstitialAd.setAdListener(this)&lt;br /&gt;
    interstitialAd.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3711</id>
		<title>Android InRead Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3711"/>
		<updated>2025-11-17T05:42:38Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;簡介&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:InRead廣告是SDK8新增的內嵌式廣告, 您可將廣告放置在文章、列表中, 當App使用者滑動到您指定的位置時便可看見InRead廣告, 若該廣告為影音廣告, 會等待廣告出現在畫面中才會進行撥放。&amp;lt;br&amp;gt;&lt;br /&gt;
:InRead廣告為:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;&amp;lt;b&amp;gt; TWMInReadAdAnchor:&amp;lt;/b&amp;gt;  固定在螢幕下方的廣告, 廣告高度不會超過螢幕的30%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:在投放限制方面，由於不同版本的手機支援程度不同，InRead廣告僅會投放在符合下列條件的手機：&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android 5.0 (API 21) 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android System WebView 版本43 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:而在介接方式上,下列章節將說明如何串接InRead廣告&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view.inread/index.html InRead]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告串接方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
===&amp;lt;b&amp;gt;InRead&amp;lt;/b&amp;gt; ===&lt;br /&gt;
:InRead廣告, 不需事先設置XML或透過程式動態加入廣告View(addView), 只要直接初始InRead物件並請求廣告即可。&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 1: 廣告初始設置&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:您必須依序輸入&amp;lt;b&amp;gt;Activity&amp;lt;/b&amp;gt;、&amp;lt;b&amp;gt;InRead Anchor版位ID&amp;lt;/b&amp;gt;以初始化InRead物件, 並且設置Listener偵聽廣告的Callback&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;重要! 請務必在onResume、onPause和onDestroy分別加上resume、pause和destroy函式, 避免廣告發生無法預期的問題&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  class InReadActivityKt:AppCompatActivity() {&lt;br /&gt;
    private var mTestResult: TextView? =null&lt;br /&gt;
    private var inread: TWMInReadAdAnchor? = null&lt;br /&gt;
    override fun onCreate(savedInstanceState: Bundle?) {&lt;br /&gt;
        super.onCreate(savedInstanceState)&lt;br /&gt;
        setContentView(R.layout.activity_inread)&lt;br /&gt;
        mTestResult = findViewById(R.id.inread_result)&lt;br /&gt;
        initAd()&lt;br /&gt;
    }&lt;br /&gt;
    private fun initAd() {&lt;br /&gt;
        inread = TWMInReadAdAnchor(this,&amp;lt;b&amp;gt;TAMEDIA_INREAD_ANCHOR_ADUNITID&amp;lt;/b&amp;gt;)&lt;br /&gt;
        inread.apply {&lt;br /&gt;
            inread?.setAdListener(object : TWMAdViewListener {&lt;br /&gt;
                override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求收到廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onFailedToReceiveAd(ad: TWMAd, errorCode: TWMAdRequest.ErrorCode) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求發生錯誤, 並沒有廣告內容可供使用&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onPresentScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已呈現&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onDismissScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已被關閉&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onLeaveApplication(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示因點擊廣告或其他因素離開app&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
            })&lt;br /&gt;
        }&lt;br /&gt;
        inread?.loadAd(TWMAdRequest())&lt;br /&gt;
    }&lt;br /&gt;
    override fun onResume() {&lt;br /&gt;
        super.onResume()&lt;br /&gt;
        inread?.resume()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onPause() {&lt;br /&gt;
        super.onPause()&lt;br /&gt;
        inread?.pause()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onDestroy() {&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
        inread?.destroy()&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
   companion object{&lt;br /&gt;
        const val TAMEDIA_INREAD_ANCHOR_ADUNITID: String = &amp;quot;&amp;lt;b&amp;gt;{TAMEDIA_INREAD_ANCHOR_ADUNITID}&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 2: 請求廣告&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
請求廣告前，你需要創建一個預設的TWMAdRequest物件, 並將TWMAdReqeust物件傳入loadAd&lt;br /&gt;
  inread?.loadAd(TWMAdRequest())&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 結束廣告 ===&lt;br /&gt;
: destroy() 必須被呼叫, 即使TWMInReadAdAnchor沒有被使用到或參考&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    inread.destroy()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | InRead&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 inread.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(InReadComposeActivity), 內有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊InRead後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val inread: TWMInReadAdAnchor = TWMInReadAdAnchor(activity, adUnitId)&lt;br /&gt;
    inread.setAdListener(this)&lt;br /&gt;
    inread.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3710</id>
		<title>Android InRead Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3710"/>
		<updated>2025-11-17T04:07:50Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* InRead */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;簡介&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:InRead廣告是SDK8新增的內嵌式廣告, 您可將廣告放置在文章、列表中, 當App使用者滑動到您指定的位置時便可看見InRead廣告, 若該廣告為影音廣告, 會等待廣告出現在畫面中才會進行撥放。&amp;lt;br&amp;gt;&lt;br /&gt;
:InRead廣告為:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;&amp;lt;b&amp;gt; TWMInReadAdAnchor:&amp;lt;/b&amp;gt;  固定在螢幕下方的廣告, 廣告高度不會超過螢幕的30%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:在投放限制方面，由於不同版本的手機支援程度不同，InRead廣告僅會投放在符合下列條件的手機：&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android 5.0 (API 21) 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android System WebView 版本43 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:而在介接方式上,下列章節將說明如何串接InRead廣告&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view.inread/index.html InRead]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告串接方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
===&amp;lt;b&amp;gt;InRead&amp;lt;/b&amp;gt; ===&lt;br /&gt;
:InRead廣告, 不需事先設置XML或透過程式動態加入廣告View(addView), 只要直接初始InRead物件並請求廣告即可。&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 1: 廣告初始設置&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:您必須依序輸入&amp;lt;b&amp;gt;Activity&amp;lt;/b&amp;gt;、&amp;lt;b&amp;gt;InRead Anchor版位ID&amp;lt;/b&amp;gt;以初始化InRead物件, 並且設置Listener偵聽廣告的Callback&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;重要! 請務必在onResume、onPause和onDestroy分別加上resume、pause和destroy函式, 避免廣告發生無法預期的問題&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  class InReadActivityKt:AppCompatActivity() {&lt;br /&gt;
    private var mTestResult: TextView? =null&lt;br /&gt;
    private var inread: TWMInReadAdAnchor? = null&lt;br /&gt;
    override fun onCreate(savedInstanceState: Bundle?) {&lt;br /&gt;
        super.onCreate(savedInstanceState)&lt;br /&gt;
        setContentView(R.layout.activity_inread)&lt;br /&gt;
        mTestResult = findViewById(R.id.inread_result)&lt;br /&gt;
        initAd()&lt;br /&gt;
    }&lt;br /&gt;
    private fun initAd() {&lt;br /&gt;
        inread = TWMInReadAdAnchor(this,&amp;lt;b&amp;gt;TAMEDIA_INREAD_ANCHOR_ADUNITID&amp;lt;/b&amp;gt;)&lt;br /&gt;
        inread.apply {&lt;br /&gt;
            inread?.setAdListener(object : TWMAdViewListener {&lt;br /&gt;
                override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求收到廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onFailedToReceiveAd(ad: TWMAd, errorCode: TWMAdRequest.ErrorCode) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求發生錯誤, 並沒有廣告內容可供使用&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onPresentScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已呈現&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onDismissScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已被關閉&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onLeaveApplication(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示因點擊廣告或其他因素離開app&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
            })&lt;br /&gt;
        }&lt;br /&gt;
        inread?.loadAd(TWMAdRequest())&lt;br /&gt;
    }&lt;br /&gt;
    override fun onResume() {&lt;br /&gt;
        super.onResume()&lt;br /&gt;
        inread?.resume()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onPause() {&lt;br /&gt;
        super.onPause()&lt;br /&gt;
        inread?.pause()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onDestroy() {&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
        inread?.destroy()&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
   companion object{&lt;br /&gt;
        const val TAMEDIA_INREAD_ANCHOR_ADUNITID: String = &amp;quot;&amp;lt;b&amp;gt;{TAMEDIA_INREAD_ANCHOR_ADUNITID}&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 2: 請求廣告&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:請求廣告前，你需要創建一個預設的TWMAdRequest物件&lt;br /&gt;
:並將TWMAdReqeust物件傳入loadAd&lt;br /&gt;
  anchorView?.loadAd(TWMAdRequest())&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:或是，透過TWMAdRequest設置使用者生日，讓您的APP獲得更多元的廣告內容&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 使用Date !! 使用Calendar&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:60%; padding:1%;&amp;quot;|&lt;br /&gt;
 val adRequest = TWMAdRequest()&lt;br /&gt;
 try {&lt;br /&gt;
     &amp;lt;b&amp;gt;//定義好時間字串的格式&amp;lt;/b&amp;gt;&lt;br /&gt;
     val sdf = SimpleDateFormat(&amp;quot;yyyy/MM/dd&amp;quot;, Locale.getDefault())&lt;br /&gt;
     &amp;lt;b&amp;gt;//將字串轉成Date型&amp;lt;/b&amp;gt;&lt;br /&gt;
     val birthDate: Date = sdf.parse(&amp;quot;1992/01/01&amp;quot;)&lt;br /&gt;
     &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
     request.setBirthday(birthDate)&lt;br /&gt;
 }catch (e: Exception) {}&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  anchorView.loadAd(adRequest);&lt;br /&gt;
| style=&amp;quot;width:40%; padding: 1%;&amp;quot;|&lt;br /&gt;
  &amp;lt;b&amp;gt;// 創建Calendar並設定生日 (注意! 月份的編號是由0至11)&amp;lt;/b&amp;gt;&lt;br /&gt;
  Calendar birthDate = Calendar.getInstance();&lt;br /&gt;
  &amp;lt;b&amp;gt;// 設定生日為1992/01/01&amp;lt;/b&amp;gt;&lt;br /&gt;
  birthDate[1992, 1] = 1&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
  val request = TWMAdRequest()&lt;br /&gt;
  request.setBirthday(birthDate)&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  anchorView.loadAd(request);&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 結束廣告 ===&lt;br /&gt;
: destroy() 必須被呼叫, 即使TWMInReadAdAnchor沒有被使用到或參考&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    inread.destroy()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | InRead&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 inread.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(InReadComposeActivity), 內有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊InRead後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val inread: TWMInReadAdAnchor = TWMInReadAdAnchor(activity, adUnitId)&lt;br /&gt;
    inread.setAdListener(this)&lt;br /&gt;
    inread.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3709</id>
		<title>Android InRead Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3709"/>
		<updated>2025-11-17T03:59:07Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* 廣告串接方式 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;簡介&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:InRead廣告是SDK8新增的內嵌式廣告, 您可將廣告放置在文章、列表中, 當App使用者滑動到您指定的位置時便可看見InRead廣告, 若該廣告為影音廣告, 會等待廣告出現在畫面中才會進行撥放。&amp;lt;br&amp;gt;&lt;br /&gt;
:InRead廣告為:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;&amp;lt;b&amp;gt; TWMInReadAdAnchor:&amp;lt;/b&amp;gt;  固定在螢幕下方的廣告, 廣告高度不會超過螢幕的30%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:在投放限制方面，由於不同版本的手機支援程度不同，InRead廣告僅會投放在符合下列條件的手機：&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android 5.0 (API 21) 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android System WebView 版本43 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:而在介接方式上,下列章節將說明如何串接InRead廣告&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view.inread/index.html InRead]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告串接方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
===&amp;lt;b&amp;gt;InRead&amp;lt;/b&amp;gt; ===&lt;br /&gt;
:InRead廣告, 不需事先設置XML或透過程式動態加入廣告View(addView), 只要直接初始InRead物件並請求廣告即可。&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 1: 廣告初始設置&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:您必須依序輸入&amp;lt;b&amp;gt;Activity&amp;lt;/b&amp;gt;、&amp;lt;b&amp;gt;InRead Anchor版位ID&amp;lt;/b&amp;gt;以初始化InRead物件, 並且設置Listener偵聽廣告的Callback&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;重要! 請務必在onResume、onPause和onDestroy分別加上resume、pause和destroy函式, 避免廣告發生無法預期的問題&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  class InReadActivityKt:AppCompatActivity() {&lt;br /&gt;
    private var mTestResult: TextView? =null&lt;br /&gt;
    private var inread: TWMInReadAdAnchor? = null&lt;br /&gt;
    override fun onCreate(savedInstanceState: Bundle?) {&lt;br /&gt;
        super.onCreate(savedInstanceState)&lt;br /&gt;
        setContentView(R.layout.activity_inread)&lt;br /&gt;
        mTestResult = findViewById(R.id.inread_result)&lt;br /&gt;
        initAd()&lt;br /&gt;
    }&lt;br /&gt;
    private fun initAd() {&lt;br /&gt;
        inread = TWMInReadAdAnchor(this,&amp;lt;b&amp;gt;TAMEDIA_INREAD_ANCHOR_ADUNITID&amp;lt;/b&amp;gt;)&lt;br /&gt;
        inread.apply {&lt;br /&gt;
            inread?.setAdListener(object : TWMAdViewListener {&lt;br /&gt;
                override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求收到廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onFailedToReceiveAd(ad: TWMAd, errorCode: TWMAdRequest.ErrorCode) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求發生錯誤, 並沒有廣告內容可供使用&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onPresentScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已呈現&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onDismissScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已被關閉&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onLeaveApplication(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示因點擊廣告或其他因素離開app&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
            })&lt;br /&gt;
        }&lt;br /&gt;
        inread?.loadAd(TWMAdRequest())&lt;br /&gt;
    }&lt;br /&gt;
    override fun onResume() {&lt;br /&gt;
        super.onResume()&lt;br /&gt;
        inread?.resume()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onPause() {&lt;br /&gt;
        super.onPause()&lt;br /&gt;
        inread?.pause()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onDestroy() {&lt;br /&gt;
        inread?.destroy()&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
   companion object{&lt;br /&gt;
        const val TAMEDIA_INREAD_ANCHOR_ADUNITID: String = &amp;quot;&amp;lt;b&amp;gt;{TAMEDIA_INREAD_ANCHOR_ADUNITID}&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 2: 請求廣告&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:請求廣告前，你需要創建一個預設的TWMAdRequest物件&lt;br /&gt;
:並將TWMAdReqeust物件傳入loadAd&lt;br /&gt;
  anchorView?.loadAd(TWMAdRequest())&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:或是，透過TWMAdRequest設置使用者生日，讓您的APP獲得更多元的廣告內容&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 使用Date !! 使用Calendar&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:60%; padding:1%;&amp;quot;|&lt;br /&gt;
 val adRequest = TWMAdRequest()&lt;br /&gt;
 try {&lt;br /&gt;
     &amp;lt;b&amp;gt;//定義好時間字串的格式&amp;lt;/b&amp;gt;&lt;br /&gt;
     val sdf = SimpleDateFormat(&amp;quot;yyyy/MM/dd&amp;quot;, Locale.getDefault())&lt;br /&gt;
     &amp;lt;b&amp;gt;//將字串轉成Date型&amp;lt;/b&amp;gt;&lt;br /&gt;
     val birthDate: Date = sdf.parse(&amp;quot;1992/01/01&amp;quot;)&lt;br /&gt;
     &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
     request.setBirthday(birthDate)&lt;br /&gt;
 }catch (e: Exception) {}&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  anchorView.loadAd(adRequest);&lt;br /&gt;
| style=&amp;quot;width:40%; padding: 1%;&amp;quot;|&lt;br /&gt;
  &amp;lt;b&amp;gt;// 創建Calendar並設定生日 (注意! 月份的編號是由0至11)&amp;lt;/b&amp;gt;&lt;br /&gt;
  Calendar birthDate = Calendar.getInstance();&lt;br /&gt;
  &amp;lt;b&amp;gt;// 設定生日為1992/01/01&amp;lt;/b&amp;gt;&lt;br /&gt;
  birthDate[1992, 1] = 1&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
  val request = TWMAdRequest()&lt;br /&gt;
  request.setBirthday(birthDate)&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  anchorView.loadAd(request);&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 結束廣告 ===&lt;br /&gt;
: destroy() 必須被呼叫, 即使TWMInReadAdAnchor沒有被使用到或參考&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    inread.destroy()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | InRead&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 inread.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(InReadComposeActivity), 內有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊InRead後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val inread: TWMInReadAdAnchor = TWMInReadAdAnchor(activity, adUnitId)&lt;br /&gt;
    inread.setAdListener(this)&lt;br /&gt;
    inread.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3708</id>
		<title>Android InRead Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3708"/>
		<updated>2025-11-17T03:57:45Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* 簡介 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;簡介&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:InRead廣告是SDK8新增的內嵌式廣告, 您可將廣告放置在文章、列表中, 當App使用者滑動到您指定的位置時便可看見InRead廣告, 若該廣告為影音廣告, 會等待廣告出現在畫面中才會進行撥放。&amp;lt;br&amp;gt;&lt;br /&gt;
:InRead廣告為:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;&amp;lt;b&amp;gt; TWMInReadAdAnchor:&amp;lt;/b&amp;gt;  固定在螢幕下方的廣告, 廣告高度不會超過螢幕的30%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:在投放限制方面，由於不同版本的手機支援程度不同，InRead廣告僅會投放在符合下列條件的手機：&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android 5.0 (API 21) 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android System WebView 版本43 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:而在介接方式上,下列章節將說明如何串接InRead廣告&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view.inread/index.html InRead]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告串接方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
===&amp;lt;b&amp;gt;InRead&amp;lt;/b&amp;gt; ===&lt;br /&gt;
:InRead廣告, 不需事先設置XML或透過程式動態加入廣告View(addView), 只要直接初始InRead物件並請求廣告即可。&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 1: 廣告初始設置&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:您必須依序輸入&amp;lt;b&amp;gt;Activity&amp;lt;/b&amp;gt;、&amp;lt;b&amp;gt;InRead Anchor版位ID&amp;lt;/b&amp;gt;以初始化InRead物件, 並且設置Listener偵聽廣告的Callback&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;重要! 請務必在onResume、onPause和onDestroy分別加上resume、pause和destroy函式, 避免廣告發生無法預期的問題&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  class InReadActivityKt:AppCompatActivity() {&lt;br /&gt;
    private var mTestResult: TextView? =null&lt;br /&gt;
    private var anchorView: TWMInReadAdAnchor? = null&lt;br /&gt;
    override fun onCreate(savedInstanceState: Bundle?) {&lt;br /&gt;
        super.onCreate(savedInstanceState)&lt;br /&gt;
        setContentView(R.layout.activity_inread)&lt;br /&gt;
        mTestResult = findViewById(R.id.inread_result)&lt;br /&gt;
        initAd()&lt;br /&gt;
    }&lt;br /&gt;
    private fun initAd() {&lt;br /&gt;
        anchorView = TWMInReadAdAnchor(this,&amp;lt;b&amp;gt;TAMEDIA_INREAD_ANCHOR_ADUNITID&amp;lt;/b&amp;gt;)&lt;br /&gt;
        anchorView.apply {&lt;br /&gt;
            anchorView?.setAdListener(object : TWMAdViewListener {&lt;br /&gt;
                override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求收到廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onFailedToReceiveAd(ad: TWMAd, errorCode: TWMAdRequest.ErrorCode) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求發生錯誤, 並沒有廣告內容可供使用&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onPresentScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已呈現&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onDismissScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已被關閉&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onLeaveApplication(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示因點擊廣告或其他因素離開app&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
            })&lt;br /&gt;
        }&lt;br /&gt;
        anchorView?.loadAd(TWMAdRequest())&lt;br /&gt;
    }&lt;br /&gt;
    override fun onResume() {&lt;br /&gt;
        super.onResume()&lt;br /&gt;
        anchorView?.resume()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onPause() {&lt;br /&gt;
        super.onPause()&lt;br /&gt;
        anchorView?.pause()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onDestroy() {&lt;br /&gt;
        anchorView?.destroy()&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
   companion object{&lt;br /&gt;
        const val TAMEDIA_INREAD_ANCHOR_ADUNITID: String = &amp;quot;&amp;lt;b&amp;gt;{TAMEDIA_INREAD_ANCHOR_ADUNITID}&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 2: 請求廣告&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:請求廣告前，你需要創建一個預設的TWMAdRequest物件&lt;br /&gt;
:並將TWMAdReqeust物件傳入loadAd&lt;br /&gt;
  anchorView?.loadAd(TWMAdRequest())&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:或是，透過TWMAdRequest設置使用者生日，讓您的APP獲得更多元的廣告內容&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 使用Date !! 使用Calendar&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:60%; padding:1%;&amp;quot;|&lt;br /&gt;
 val adRequest = TWMAdRequest()&lt;br /&gt;
 try {&lt;br /&gt;
     &amp;lt;b&amp;gt;//定義好時間字串的格式&amp;lt;/b&amp;gt;&lt;br /&gt;
     val sdf = SimpleDateFormat(&amp;quot;yyyy/MM/dd&amp;quot;, Locale.getDefault())&lt;br /&gt;
     &amp;lt;b&amp;gt;//將字串轉成Date型&amp;lt;/b&amp;gt;&lt;br /&gt;
     val birthDate: Date = sdf.parse(&amp;quot;1992/01/01&amp;quot;)&lt;br /&gt;
     &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
     request.setBirthday(birthDate)&lt;br /&gt;
 }catch (e: Exception) {}&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  anchorView.loadAd(adRequest);&lt;br /&gt;
| style=&amp;quot;width:40%; padding: 1%;&amp;quot;|&lt;br /&gt;
  &amp;lt;b&amp;gt;// 創建Calendar並設定生日 (注意! 月份的編號是由0至11)&amp;lt;/b&amp;gt;&lt;br /&gt;
  Calendar birthDate = Calendar.getInstance();&lt;br /&gt;
  &amp;lt;b&amp;gt;// 設定生日為1992/01/01&amp;lt;/b&amp;gt;&lt;br /&gt;
  birthDate[1992, 1] = 1&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
  val request = TWMAdRequest()&lt;br /&gt;
  request.setBirthday(birthDate)&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  anchorView.loadAd(request);&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 結束廣告 ===&lt;br /&gt;
: destroy() 必須被呼叫, 即使TWMInReadAdAnchor沒有被使用到或參考&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    anchorView.destroy()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | InRead&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 inread.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(InReadComposeActivity), 內有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊InRead後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val inread: TWMInReadAdAnchor = TWMInReadAdAnchor(activity, adUnitId)&lt;br /&gt;
    inread.setAdListener(this)&lt;br /&gt;
    inread.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3707</id>
		<title>Android InRead Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3707"/>
		<updated>2025-11-17T03:42:19Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;簡介&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:InRead廣告是SDK8新增的內嵌式廣告, 您可將廣告放置在文章、列表中, 當App使用者滑動到您指定的位置時便可看見InRead廣告, 若該廣告為影音廣告, 會等待廣告出現在畫面中才會進行撥放。&amp;lt;br&amp;gt;&lt;br /&gt;
:InRead廣告為:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Anchor:&amp;lt;/b&amp;gt;  固定在螢幕下方的廣告, 廣告高度不會超過螢幕的30%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:在投放限制方面，由於不同版本的手機支援程度不同，InRead廣告僅會投放在符合下列條件的手機：&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android 5.0 (API 21) 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android System WebView 版本43 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:而在介接方式上,下列章節將說明如何串接InRead廣告&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view.inread/index.html InRead]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告串接方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
===&amp;lt;b&amp;gt;InRead&amp;lt;/b&amp;gt; ===&lt;br /&gt;
:InRead廣告, 不需事先設置XML或透過程式動態加入廣告View(addView), 只要直接初始InRead物件並請求廣告即可。&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 1: 廣告初始設置&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:您必須依序輸入&amp;lt;b&amp;gt;Activity&amp;lt;/b&amp;gt;、&amp;lt;b&amp;gt;InRead Anchor版位ID&amp;lt;/b&amp;gt;以初始化InRead物件, 並且設置Listener偵聽廣告的Callback&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;重要! 請務必在onResume、onPause和onDestroy分別加上resume、pause和destroy函式, 避免廣告發生無法預期的問題&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  class InReadActivityKt:AppCompatActivity() {&lt;br /&gt;
    private var mTestResult: TextView? =null&lt;br /&gt;
    private var anchorView: TWMInReadAdAnchor? = null&lt;br /&gt;
    override fun onCreate(savedInstanceState: Bundle?) {&lt;br /&gt;
        super.onCreate(savedInstanceState)&lt;br /&gt;
        setContentView(R.layout.activity_inread)&lt;br /&gt;
        mTestResult = findViewById(R.id.inread_result)&lt;br /&gt;
        initAd()&lt;br /&gt;
    }&lt;br /&gt;
    private fun initAd() {&lt;br /&gt;
        anchorView = TWMInReadAdAnchor(this,&amp;lt;b&amp;gt;TAMEDIA_INREAD_ANCHOR_ADUNITID&amp;lt;/b&amp;gt;)&lt;br /&gt;
        anchorView.apply {&lt;br /&gt;
            anchorView?.setAdListener(object : TWMAdViewListener {&lt;br /&gt;
                override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求收到廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onFailedToReceiveAd(ad: TWMAd, errorCode: TWMAdRequest.ErrorCode) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求發生錯誤, 並沒有廣告內容可供使用&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onPresentScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已呈現&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onDismissScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已被關閉&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onLeaveApplication(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示因點擊廣告或其他因素離開app&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
            })&lt;br /&gt;
        }&lt;br /&gt;
        anchorView?.loadAd(TWMAdRequest())&lt;br /&gt;
    }&lt;br /&gt;
    override fun onResume() {&lt;br /&gt;
        super.onResume()&lt;br /&gt;
        anchorView?.resume()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onPause() {&lt;br /&gt;
        super.onPause()&lt;br /&gt;
        anchorView?.pause()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onDestroy() {&lt;br /&gt;
        anchorView?.destroy()&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
   companion object{&lt;br /&gt;
        const val TAMEDIA_INREAD_ANCHOR_ADUNITID: String = &amp;quot;&amp;lt;b&amp;gt;{TAMEDIA_INREAD_ANCHOR_ADUNITID}&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 2: 請求廣告&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:請求廣告前，你需要創建一個預設的TWMAdRequest物件&lt;br /&gt;
:並將TWMAdReqeust物件傳入loadAd&lt;br /&gt;
  anchorView?.loadAd(TWMAdRequest())&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:或是，透過TWMAdRequest設置使用者生日，讓您的APP獲得更多元的廣告內容&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 使用Date !! 使用Calendar&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:60%; padding:1%;&amp;quot;|&lt;br /&gt;
 val adRequest = TWMAdRequest()&lt;br /&gt;
 try {&lt;br /&gt;
     &amp;lt;b&amp;gt;//定義好時間字串的格式&amp;lt;/b&amp;gt;&lt;br /&gt;
     val sdf = SimpleDateFormat(&amp;quot;yyyy/MM/dd&amp;quot;, Locale.getDefault())&lt;br /&gt;
     &amp;lt;b&amp;gt;//將字串轉成Date型&amp;lt;/b&amp;gt;&lt;br /&gt;
     val birthDate: Date = sdf.parse(&amp;quot;1992/01/01&amp;quot;)&lt;br /&gt;
     &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
     request.setBirthday(birthDate)&lt;br /&gt;
 }catch (e: Exception) {}&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  anchorView.loadAd(adRequest);&lt;br /&gt;
| style=&amp;quot;width:40%; padding: 1%;&amp;quot;|&lt;br /&gt;
  &amp;lt;b&amp;gt;// 創建Calendar並設定生日 (注意! 月份的編號是由0至11)&amp;lt;/b&amp;gt;&lt;br /&gt;
  Calendar birthDate = Calendar.getInstance();&lt;br /&gt;
  &amp;lt;b&amp;gt;// 設定生日為1992/01/01&amp;lt;/b&amp;gt;&lt;br /&gt;
  birthDate[1992, 1] = 1&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
  val request = TWMAdRequest()&lt;br /&gt;
  request.setBirthday(birthDate)&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  anchorView.loadAd(request);&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 結束廣告 ===&lt;br /&gt;
: destroy() 必須被呼叫, 即使TWMInReadAdAnchor沒有被使用到或參考&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    anchorView.destroy()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | InRead&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 inread.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(InReadComposeActivity), 內有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊InRead後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val inread: TWMInReadAdAnchor = TWMInReadAdAnchor(activity, adUnitId)&lt;br /&gt;
    inread.setAdListener(this)&lt;br /&gt;
    inread.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3706</id>
		<title>Android InRead Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3706"/>
		<updated>2025-11-17T03:40:35Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* 廣告串接方式 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;簡介&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:InRead廣告是SDK8新增的內嵌式廣告, 您可將廣告放置在文章、列表中, 當App使用者滑動到您指定的位置時便可看見InRead廣告, 若該廣告為影音廣告, 會等待廣告出現在畫面中才會進行撥放。&amp;lt;br&amp;gt;&lt;br /&gt;
:InRead廣告為:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Anchor:&amp;lt;/b&amp;gt;  固定在螢幕下方的廣告, 廣告高度不會超過螢幕的30%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:在投放限制方面，由於不同版本的手機支援程度不同，InRead廣告僅會投放在符合下列條件的手機：&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android 5.0 (API 21) 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android System WebView 版本43 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:而在介接方式上,下列章節將說明如何串接InRead廣告&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view.inread/index.html InRead]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告串接方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
===&amp;lt;b&amp;gt;InRead&amp;lt;/b&amp;gt; ===&lt;br /&gt;
:InRead廣告, 不需事先設置XML或透過程式動態加入廣告View(addView), 只要直接初始InRead物件並請求廣告即可。&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 1: 廣告初始設置&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:您必須依序輸入&amp;lt;b&amp;gt;Activity&amp;lt;/b&amp;gt;、&amp;lt;b&amp;gt;InRead Anchor版位ID&amp;lt;/b&amp;gt;以初始化InRead物件, 並且設置Listener偵聽廣告的Callback&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;重要! 請務必在onResume、onPause和onDestroy分別加上resume、pause和destroy函式, 避免廣告發生無法預期的問題&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  class InReadActivityKt:AppCompatActivity() {&lt;br /&gt;
    private var mTestResult: TextView? =null&lt;br /&gt;
    private var anchorView: TWMInReadAdAnchor? = null&lt;br /&gt;
    override fun onCreate(savedInstanceState: Bundle?) {&lt;br /&gt;
        super.onCreate(savedInstanceState)&lt;br /&gt;
        setContentView(R.layout.activity_inread)&lt;br /&gt;
        mTestResult = findViewById(R.id.inread_result)&lt;br /&gt;
        initAd()&lt;br /&gt;
    }&lt;br /&gt;
    private fun initAd() {&lt;br /&gt;
        anchorView = TWMInReadAdAnchor(this,&amp;lt;b&amp;gt;TAMEDIA_INREAD_ANCHOR_ADUNITID&amp;lt;/b&amp;gt;)&lt;br /&gt;
        anchorView.apply {&lt;br /&gt;
            anchorView?.setAdListener(object : TWMAdViewListener {&lt;br /&gt;
                override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求收到廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onFailedToReceiveAd(ad: TWMAd, errorCode: TWMAdRequest.ErrorCode) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求發生錯誤, 並沒有廣告內容可供使用&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onPresentScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已呈現&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onDismissScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已被關閉&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onLeaveApplication(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示因點擊廣告或其他因素離開app&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
            })&lt;br /&gt;
        }&lt;br /&gt;
        anchorView?.loadAd(TWMAdRequest())&lt;br /&gt;
    }&lt;br /&gt;
    override fun onResume() {&lt;br /&gt;
        super.onResume()&lt;br /&gt;
        anchorView?.resume()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onPause() {&lt;br /&gt;
        super.onPause()&lt;br /&gt;
        anchorView?.pause()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onDestroy() {&lt;br /&gt;
        anchorView?.destroy()&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
   companion object{&lt;br /&gt;
        const val TAMEDIA_INREAD_ANCHOR_ADUNITID: String = &amp;quot;&amp;lt;b&amp;gt;{TAMEDIA_INREAD_ANCHOR_ADUNITID}&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 2: 請求廣告&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:請求廣告前，你需要創建一個預設的TWMAdRequest物件&lt;br /&gt;
:並將TWMAdReqeust物件傳入loadAd&lt;br /&gt;
  anchorView?.loadAd(TWMAdRequest())&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:或是，透過TWMAdRequest設置使用者生日，讓您的APP獲得更多元的廣告內容&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 使用Date !! 使用Calendar&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:60%; padding:1%;&amp;quot;|&lt;br /&gt;
 val adRequest = TWMAdRequest()&lt;br /&gt;
 try {&lt;br /&gt;
     &amp;lt;b&amp;gt;//定義好時間字串的格式&amp;lt;/b&amp;gt;&lt;br /&gt;
     val sdf = SimpleDateFormat(&amp;quot;yyyy/MM/dd&amp;quot;, Locale.getDefault())&lt;br /&gt;
     &amp;lt;b&amp;gt;//將字串轉成Date型&amp;lt;/b&amp;gt;&lt;br /&gt;
     val birthDate: Date = sdf.parse(&amp;quot;1992/01/01&amp;quot;)&lt;br /&gt;
     &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
     request.setBirthday(birthDate)&lt;br /&gt;
 }catch (e: Exception) {}&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  anchorView.loadAd(adRequest);&lt;br /&gt;
| style=&amp;quot;width:40%; padding: 1%;&amp;quot;|&lt;br /&gt;
  &amp;lt;b&amp;gt;// 創建Calendar並設定生日 (注意! 月份的編號是由0至11)&amp;lt;/b&amp;gt;&lt;br /&gt;
  Calendar birthDate = Calendar.getInstance();&lt;br /&gt;
  &amp;lt;b&amp;gt;// 設定生日為1992/01/01&amp;lt;/b&amp;gt;&lt;br /&gt;
  birthDate[1992, 1] = 1&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
  val request = TWMAdRequest()&lt;br /&gt;
  request.setBirthday(birthDate)&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  anchorView.loadAd(request);&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 結束廣告 ===&lt;br /&gt;
: destroy() 必須被呼叫, 即使TWMInReadAdAnchor沒有被使用到或參考&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    anchorView.destroy()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 硬體加速 ===&lt;br /&gt;
:HardWare Acceleration是Android 3.0 (API 11) 加入的feature，&amp;lt;b&amp;gt;該選項在Android 4.0 (API 14)時預設是enable&amp;lt;/b&amp;gt;。由於部分InRead廣告會投放影音廣告，&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;請不要將此選項關閉避免影音廣告無法呈現&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;。&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:如有需要在Application Level關閉此選項，請針對要投放InRead廣告的Activity開啟即可，範例如下：&lt;br /&gt;
  &amp;lt;application android:hardwareAccelerated=&amp;quot;false&amp;quot; ...&amp;gt; &amp;amp;lt;!-- 假使您需要在Application Level關閉hardwareAccelerated --&amp;amp;gt;&lt;br /&gt;
     &amp;lt;activity ... /&amp;gt;&lt;br /&gt;
     &amp;lt;activity&lt;br /&gt;
        android:name=&amp;quot;.InReadActivity&amp;quot;&lt;br /&gt;
        android:hardwareAccelerated=&amp;quot;true&amp;quot; ... &amp;gt;  &amp;amp;lt;!-- 在欲投放InRead廣告的Activity打開此選項即可 --&amp;amp;gt;&lt;br /&gt;
     &amp;lt;/activity&amp;gt;&lt;br /&gt;
  &amp;lt;/application&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | InRead&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 inread.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(InReadComposeActivity), 內有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊InRead後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val inread: TWMInReadAdAnchor = TWMInReadAdAnchor(activity, adUnitId)&lt;br /&gt;
    inread.setAdListener(this)&lt;br /&gt;
    inread.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3705</id>
		<title>Android InRead Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3705"/>
		<updated>2025-11-17T03:40:02Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* 廣告畫面展示 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;簡介&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:InRead廣告是SDK8新增的內嵌式廣告, 您可將廣告放置在文章、列表中, 當App使用者滑動到您指定的位置時便可看見InRead廣告, 若該廣告為影音廣告, 會等待廣告出現在畫面中才會進行撥放。&amp;lt;br&amp;gt;&lt;br /&gt;
:InRead廣告為:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Anchor:&amp;lt;/b&amp;gt;  固定在螢幕下方的廣告, 廣告高度不會超過螢幕的30%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:在投放限制方面，由於不同版本的手機支援程度不同，InRead廣告僅會投放在符合下列條件的手機：&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android 5.0 (API 21) 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android System WebView 版本43 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:而在介接方式上,下列章節將說明如何串接InRead廣告&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view.inread/index.html InRead]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告串接方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
===&amp;lt;b&amp;gt;Anchor&amp;lt;/b&amp;gt; ===&lt;br /&gt;
:Anchor廣告, 不需事先設置XML或透過程式動態加入廣告View(addView), 只要直接初始InRead物件並請求廣告即可。&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 1: 廣告初始設置&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:您必須依序輸入&amp;lt;b&amp;gt;Activity&amp;lt;/b&amp;gt;、&amp;lt;b&amp;gt;InRead Anchor版位ID&amp;lt;/b&amp;gt;以初始化InRead物件, 並且設置Listener偵聽廣告的Callback&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;重要! 請務必在onResume、onPause和onDestroy分別加上resume、pause和destroy函式, 避免廣告發生無法預期的問題&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  class InReadActivityKt:AppCompatActivity() {&lt;br /&gt;
    private var mTestResult: TextView? =null&lt;br /&gt;
    private var anchorView: TWMInReadAdAnchor? = null&lt;br /&gt;
    override fun onCreate(savedInstanceState: Bundle?) {&lt;br /&gt;
        super.onCreate(savedInstanceState)&lt;br /&gt;
        setContentView(R.layout.activity_inread)&lt;br /&gt;
        mTestResult = findViewById(R.id.inread_result)&lt;br /&gt;
        initAd()&lt;br /&gt;
    }&lt;br /&gt;
    private fun initAd() {&lt;br /&gt;
        anchorView = TWMInReadAdAnchor(this,&amp;lt;b&amp;gt;TAMEDIA_INREAD_ANCHOR_ADUNITID&amp;lt;/b&amp;gt;)&lt;br /&gt;
        anchorView.apply {&lt;br /&gt;
            anchorView?.setAdListener(object : TWMAdViewListener {&lt;br /&gt;
                override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求收到廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onFailedToReceiveAd(ad: TWMAd, errorCode: TWMAdRequest.ErrorCode) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求發生錯誤, 並沒有廣告內容可供使用&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onPresentScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已呈現&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onDismissScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已被關閉&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onLeaveApplication(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示因點擊廣告或其他因素離開app&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
            })&lt;br /&gt;
        }&lt;br /&gt;
        anchorView?.loadAd(TWMAdRequest())&lt;br /&gt;
    }&lt;br /&gt;
    override fun onResume() {&lt;br /&gt;
        super.onResume()&lt;br /&gt;
        anchorView?.resume()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onPause() {&lt;br /&gt;
        super.onPause()&lt;br /&gt;
        anchorView?.pause()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onDestroy() {&lt;br /&gt;
        anchorView?.destroy()&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
   companion object{&lt;br /&gt;
        const val TAMEDIA_INREAD_ANCHOR_ADUNITID: String = &amp;quot;&amp;lt;b&amp;gt;{TAMEDIA_INREAD_ANCHOR_ADUNITID}&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 2: 請求廣告&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:請求廣告前，你需要創建一個預設的TWMAdRequest物件&lt;br /&gt;
:並將TWMAdReqeust物件傳入loadAd&lt;br /&gt;
  anchorView?.loadAd(TWMAdRequest())&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:或是，透過TWMAdRequest設置使用者生日，讓您的APP獲得更多元的廣告內容&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 使用Date !! 使用Calendar&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:60%; padding:1%;&amp;quot;|&lt;br /&gt;
 val adRequest = TWMAdRequest()&lt;br /&gt;
 try {&lt;br /&gt;
     &amp;lt;b&amp;gt;//定義好時間字串的格式&amp;lt;/b&amp;gt;&lt;br /&gt;
     val sdf = SimpleDateFormat(&amp;quot;yyyy/MM/dd&amp;quot;, Locale.getDefault())&lt;br /&gt;
     &amp;lt;b&amp;gt;//將字串轉成Date型&amp;lt;/b&amp;gt;&lt;br /&gt;
     val birthDate: Date = sdf.parse(&amp;quot;1992/01/01&amp;quot;)&lt;br /&gt;
     &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
     request.setBirthday(birthDate)&lt;br /&gt;
 }catch (e: Exception) {}&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  anchorView.loadAd(adRequest);&lt;br /&gt;
| style=&amp;quot;width:40%; padding: 1%;&amp;quot;|&lt;br /&gt;
  &amp;lt;b&amp;gt;// 創建Calendar並設定生日 (注意! 月份的編號是由0至11)&amp;lt;/b&amp;gt;&lt;br /&gt;
  Calendar birthDate = Calendar.getInstance();&lt;br /&gt;
  &amp;lt;b&amp;gt;// 設定生日為1992/01/01&amp;lt;/b&amp;gt;&lt;br /&gt;
  birthDate[1992, 1] = 1&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
  val request = TWMAdRequest()&lt;br /&gt;
  request.setBirthday(birthDate)&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  anchorView.loadAd(request);&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 結束廣告 ===&lt;br /&gt;
: destroy() 必須被呼叫, 即使TWMInReadAdAnchor沒有被使用到或參考&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    anchorView.destroy()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 硬體加速 ===&lt;br /&gt;
:HardWare Acceleration是Android 3.0 (API 11) 加入的feature，&amp;lt;b&amp;gt;該選項在Android 4.0 (API 14)時預設是enable&amp;lt;/b&amp;gt;。由於部分InRead廣告會投放影音廣告，&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;請不要將此選項關閉避免影音廣告無法呈現&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;。&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:如有需要在Application Level關閉此選項，請針對要投放InRead廣告的Activity開啟即可，範例如下：&lt;br /&gt;
  &amp;lt;application android:hardwareAccelerated=&amp;quot;false&amp;quot; ...&amp;gt; &amp;amp;lt;!-- 假使您需要在Application Level關閉hardwareAccelerated --&amp;amp;gt;&lt;br /&gt;
     &amp;lt;activity ... /&amp;gt;&lt;br /&gt;
     &amp;lt;activity&lt;br /&gt;
        android:name=&amp;quot;.InReadActivity&amp;quot;&lt;br /&gt;
        android:hardwareAccelerated=&amp;quot;true&amp;quot; ... &amp;gt;  &amp;amp;lt;!-- 在欲投放InRead廣告的Activity打開此選項即可 --&amp;amp;gt;&lt;br /&gt;
     &amp;lt;/activity&amp;gt;&lt;br /&gt;
  &amp;lt;/application&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | InRead&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 inread.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(InReadComposeActivity), 內有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊InRead後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val inread: TWMInReadAdAnchor = TWMInReadAdAnchor(activity, adUnitId)&lt;br /&gt;
    inread.setAdListener(this)&lt;br /&gt;
    inread.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_inread.png&amp;diff=3704</id>
		<title>檔案:SDK8.0.7 inread.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_inread.png&amp;diff=3704"/>
		<updated>2025-11-17T03:37:18Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_inread_no_fill.png&amp;diff=3703</id>
		<title>檔案:SDK8.0.7 inread no fill.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_inread_no_fill.png&amp;diff=3703"/>
		<updated>2025-11-17T03:33:39Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_inread_click.png&amp;diff=3702</id>
		<title>檔案:SDK8.0.7 inread click.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_inread_click.png&amp;diff=3702"/>
		<updated>2025-11-17T03:31:14Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3701</id>
		<title>Android InRead Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3701"/>
		<updated>2025-11-17T03:20:25Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* Compose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;簡介&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:InRead廣告是SDK8新增的內嵌式廣告, 您可將廣告放置在文章、列表中, 當App使用者滑動到您指定的位置時便可看見InRead廣告, 若該廣告為影音廣告, 會等待廣告出現在畫面中才會進行撥放。&amp;lt;br&amp;gt;&lt;br /&gt;
:InRead廣告為:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Anchor:&amp;lt;/b&amp;gt;  固定在螢幕下方的廣告, 廣告高度不會超過螢幕的30%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:在投放限制方面，由於不同版本的手機支援程度不同，InRead廣告僅會投放在符合下列條件的手機：&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android 5.0 (API 21) 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android System WebView 版本43 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:而在介接方式上,下列章節將說明如何串接InRead廣告&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view.inread/index.html InRead]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告串接方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
===&amp;lt;b&amp;gt;Anchor&amp;lt;/b&amp;gt; ===&lt;br /&gt;
:Anchor廣告, 不需事先設置XML或透過程式動態加入廣告View(addView), 只要直接初始InRead物件並請求廣告即可。&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 1: 廣告初始設置&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:您必須依序輸入&amp;lt;b&amp;gt;Activity&amp;lt;/b&amp;gt;、&amp;lt;b&amp;gt;InRead Anchor版位ID&amp;lt;/b&amp;gt;以初始化InRead物件, 並且設置Listener偵聽廣告的Callback&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;重要! 請務必在onResume、onPause和onDestroy分別加上resume、pause和destroy函式, 避免廣告發生無法預期的問題&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  class InReadActivityKt:AppCompatActivity() {&lt;br /&gt;
    private var mTestResult: TextView? =null&lt;br /&gt;
    private var anchorView: TWMInReadAdAnchor? = null&lt;br /&gt;
    override fun onCreate(savedInstanceState: Bundle?) {&lt;br /&gt;
        super.onCreate(savedInstanceState)&lt;br /&gt;
        setContentView(R.layout.activity_inread)&lt;br /&gt;
        mTestResult = findViewById(R.id.inread_result)&lt;br /&gt;
        initAd()&lt;br /&gt;
    }&lt;br /&gt;
    private fun initAd() {&lt;br /&gt;
        anchorView = TWMInReadAdAnchor(this,&amp;lt;b&amp;gt;TAMEDIA_INREAD_ANCHOR_ADUNITID&amp;lt;/b&amp;gt;)&lt;br /&gt;
        anchorView.apply {&lt;br /&gt;
            anchorView?.setAdListener(object : TWMAdViewListener {&lt;br /&gt;
                override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求收到廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onFailedToReceiveAd(ad: TWMAd, errorCode: TWMAdRequest.ErrorCode) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求發生錯誤, 並沒有廣告內容可供使用&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onPresentScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已呈現&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onDismissScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已被關閉&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onLeaveApplication(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示因點擊廣告或其他因素離開app&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
            })&lt;br /&gt;
        }&lt;br /&gt;
        anchorView?.loadAd(TWMAdRequest())&lt;br /&gt;
    }&lt;br /&gt;
    override fun onResume() {&lt;br /&gt;
        super.onResume()&lt;br /&gt;
        anchorView?.resume()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onPause() {&lt;br /&gt;
        super.onPause()&lt;br /&gt;
        anchorView?.pause()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onDestroy() {&lt;br /&gt;
        anchorView?.destroy()&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
   companion object{&lt;br /&gt;
        const val TAMEDIA_INREAD_ANCHOR_ADUNITID: String = &amp;quot;&amp;lt;b&amp;gt;{TAMEDIA_INREAD_ANCHOR_ADUNITID}&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 2: 請求廣告&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:請求廣告前，你需要創建一個預設的TWMAdRequest物件&lt;br /&gt;
:並將TWMAdReqeust物件傳入loadAd&lt;br /&gt;
  anchorView?.loadAd(TWMAdRequest())&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:或是，透過TWMAdRequest設置使用者生日，讓您的APP獲得更多元的廣告內容&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 使用Date !! 使用Calendar&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:60%; padding:1%;&amp;quot;|&lt;br /&gt;
 val adRequest = TWMAdRequest()&lt;br /&gt;
 try {&lt;br /&gt;
     &amp;lt;b&amp;gt;//定義好時間字串的格式&amp;lt;/b&amp;gt;&lt;br /&gt;
     val sdf = SimpleDateFormat(&amp;quot;yyyy/MM/dd&amp;quot;, Locale.getDefault())&lt;br /&gt;
     &amp;lt;b&amp;gt;//將字串轉成Date型&amp;lt;/b&amp;gt;&lt;br /&gt;
     val birthDate: Date = sdf.parse(&amp;quot;1992/01/01&amp;quot;)&lt;br /&gt;
     &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
     request.setBirthday(birthDate)&lt;br /&gt;
 }catch (e: Exception) {}&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  anchorView.loadAd(adRequest);&lt;br /&gt;
| style=&amp;quot;width:40%; padding: 1%;&amp;quot;|&lt;br /&gt;
  &amp;lt;b&amp;gt;// 創建Calendar並設定生日 (注意! 月份的編號是由0至11)&amp;lt;/b&amp;gt;&lt;br /&gt;
  Calendar birthDate = Calendar.getInstance();&lt;br /&gt;
  &amp;lt;b&amp;gt;// 設定生日為1992/01/01&amp;lt;/b&amp;gt;&lt;br /&gt;
  birthDate[1992, 1] = 1&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
  val request = TWMAdRequest()&lt;br /&gt;
  request.setBirthday(birthDate)&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  anchorView.loadAd(request);&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 結束廣告 ===&lt;br /&gt;
: destroy() 必須被呼叫, 即使TWMInReadAdAnchor沒有被使用到或參考&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    anchorView.destroy()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 硬體加速 ===&lt;br /&gt;
:HardWare Acceleration是Android 3.0 (API 11) 加入的feature，&amp;lt;b&amp;gt;該選項在Android 4.0 (API 14)時預設是enable&amp;lt;/b&amp;gt;。由於部分InRead廣告會投放影音廣告，&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;請不要將此選項關閉避免影音廣告無法呈現&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;。&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:如有需要在Application Level關閉此選項，請針對要投放InRead廣告的Activity開啟即可，範例如下：&lt;br /&gt;
  &amp;lt;application android:hardwareAccelerated=&amp;quot;false&amp;quot; ...&amp;gt; &amp;amp;lt;!-- 假使您需要在Application Level關閉hardwareAccelerated --&amp;amp;gt;&lt;br /&gt;
     &amp;lt;activity ... /&amp;gt;&lt;br /&gt;
     &amp;lt;activity&lt;br /&gt;
        android:name=&amp;quot;.InReadActivity&amp;quot;&lt;br /&gt;
        android:hardwareAccelerated=&amp;quot;true&amp;quot; ... &amp;gt;  &amp;amp;lt;!-- 在欲投放InRead廣告的Activity打開此選項即可 --&amp;amp;gt;&lt;br /&gt;
     &amp;lt;/activity&amp;gt;&lt;br /&gt;
  &amp;lt;/application&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Anchor&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 inread.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(InReadComposeActivity), 內有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊InRead後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_inread_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val inread: TWMInReadAdAnchor = TWMInReadAdAnchor(activity, adUnitId)&lt;br /&gt;
    inread.setAdListener(this)&lt;br /&gt;
    inread.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3700</id>
		<title>Android InRead Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_InRead_Ads_SDK8&amp;diff=3700"/>
		<updated>2025-11-17T03:13:49Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;簡介&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:InRead廣告是SDK8新增的內嵌式廣告, 您可將廣告放置在文章、列表中, 當App使用者滑動到您指定的位置時便可看見InRead廣告, 若該廣告為影音廣告, 會等待廣告出現在畫面中才會進行撥放。&amp;lt;br&amp;gt;&lt;br /&gt;
:InRead廣告為:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Anchor:&amp;lt;/b&amp;gt;  固定在螢幕下方的廣告, 廣告高度不會超過螢幕的30%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:在投放限制方面，由於不同版本的手機支援程度不同，InRead廣告僅會投放在符合下列條件的手機：&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android 5.0 (API 21) 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
:&amp;lt;li&amp;gt;Android System WebView 版本43 以上&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:而在介接方式上,下列章節將說明如何串接InRead廣告&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view.inread/index.html InRead]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告串接方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
===&amp;lt;b&amp;gt;Anchor&amp;lt;/b&amp;gt; ===&lt;br /&gt;
:Anchor廣告, 不需事先設置XML或透過程式動態加入廣告View(addView), 只要直接初始InRead物件並請求廣告即可。&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 1: 廣告初始設置&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:您必須依序輸入&amp;lt;b&amp;gt;Activity&amp;lt;/b&amp;gt;、&amp;lt;b&amp;gt;InRead Anchor版位ID&amp;lt;/b&amp;gt;以初始化InRead物件, 並且設置Listener偵聽廣告的Callback&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;重要! 請務必在onResume、onPause和onDestroy分別加上resume、pause和destroy函式, 避免廣告發生無法預期的問題&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
  class InReadActivityKt:AppCompatActivity() {&lt;br /&gt;
    private var mTestResult: TextView? =null&lt;br /&gt;
    private var anchorView: TWMInReadAdAnchor? = null&lt;br /&gt;
    override fun onCreate(savedInstanceState: Bundle?) {&lt;br /&gt;
        super.onCreate(savedInstanceState)&lt;br /&gt;
        setContentView(R.layout.activity_inread)&lt;br /&gt;
        mTestResult = findViewById(R.id.inread_result)&lt;br /&gt;
        initAd()&lt;br /&gt;
    }&lt;br /&gt;
    private fun initAd() {&lt;br /&gt;
        anchorView = TWMInReadAdAnchor(this,&amp;lt;b&amp;gt;TAMEDIA_INREAD_ANCHOR_ADUNITID&amp;lt;/b&amp;gt;)&lt;br /&gt;
        anchorView.apply {&lt;br /&gt;
            anchorView?.setAdListener(object : TWMAdViewListener {&lt;br /&gt;
                override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求收到廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onFailedToReceiveAd(ad: TWMAd, errorCode: TWMAdRequest.ErrorCode) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示本次請求發生錯誤, 並沒有廣告內容可供使用&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onPresentScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已呈現&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onDismissScreen(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示廣告內容已被關閉&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                override fun onLeaveApplication(ad: TWMAd) {&lt;br /&gt;
                    &amp;lt;b&amp;gt;// 表示因點擊廣告或其他因素離開app&amp;lt;/b&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
            })&lt;br /&gt;
        }&lt;br /&gt;
        anchorView?.loadAd(TWMAdRequest())&lt;br /&gt;
    }&lt;br /&gt;
    override fun onResume() {&lt;br /&gt;
        super.onResume()&lt;br /&gt;
        anchorView?.resume()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onPause() {&lt;br /&gt;
        super.onPause()&lt;br /&gt;
        anchorView?.pause()&lt;br /&gt;
    }&lt;br /&gt;
    override fun onDestroy() {&lt;br /&gt;
        anchorView?.destroy()&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
   companion object{&lt;br /&gt;
        const val TAMEDIA_INREAD_ANCHOR_ADUNITID: String = &amp;quot;&amp;lt;b&amp;gt;{TAMEDIA_INREAD_ANCHOR_ADUNITID}&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;u&amp;gt;Step 2: 請求廣告&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:請求廣告前，你需要創建一個預設的TWMAdRequest物件&lt;br /&gt;
:並將TWMAdReqeust物件傳入loadAd&lt;br /&gt;
  anchorView?.loadAd(TWMAdRequest())&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:或是，透過TWMAdRequest設置使用者生日，讓您的APP獲得更多元的廣告內容&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 使用Date !! 使用Calendar&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:60%; padding:1%;&amp;quot;|&lt;br /&gt;
 val adRequest = TWMAdRequest()&lt;br /&gt;
 try {&lt;br /&gt;
     &amp;lt;b&amp;gt;//定義好時間字串的格式&amp;lt;/b&amp;gt;&lt;br /&gt;
     val sdf = SimpleDateFormat(&amp;quot;yyyy/MM/dd&amp;quot;, Locale.getDefault())&lt;br /&gt;
     &amp;lt;b&amp;gt;//將字串轉成Date型&amp;lt;/b&amp;gt;&lt;br /&gt;
     val birthDate: Date = sdf.parse(&amp;quot;1992/01/01&amp;quot;)&lt;br /&gt;
     &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
     request.setBirthday(birthDate)&lt;br /&gt;
 }catch (e: Exception) {}&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  anchorView.loadAd(adRequest);&lt;br /&gt;
| style=&amp;quot;width:40%; padding: 1%;&amp;quot;|&lt;br /&gt;
  &amp;lt;b&amp;gt;// 創建Calendar並設定生日 (注意! 月份的編號是由0至11)&amp;lt;/b&amp;gt;&lt;br /&gt;
  Calendar birthDate = Calendar.getInstance();&lt;br /&gt;
  &amp;lt;b&amp;gt;// 設定生日為1992/01/01&amp;lt;/b&amp;gt;&lt;br /&gt;
  birthDate[1992, 1] = 1&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
  val request = TWMAdRequest()&lt;br /&gt;
  request.setBirthday(birthDate)&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  anchorView.loadAd(request);&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 結束廣告 ===&lt;br /&gt;
: destroy() 必須被呼叫, 即使TWMInReadAdAnchor沒有被使用到或參考&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    anchorView.destroy()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 硬體加速 ===&lt;br /&gt;
:HardWare Acceleration是Android 3.0 (API 11) 加入的feature，&amp;lt;b&amp;gt;該選項在Android 4.0 (API 14)時預設是enable&amp;lt;/b&amp;gt;。由於部分InRead廣告會投放影音廣告，&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;請不要將此選項關閉避免影音廣告無法呈現&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;。&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:如有需要在Application Level關閉此選項，請針對要投放InRead廣告的Activity開啟即可，範例如下：&lt;br /&gt;
  &amp;lt;application android:hardwareAccelerated=&amp;quot;false&amp;quot; ...&amp;gt; &amp;amp;lt;!-- 假使您需要在Application Level關閉hardwareAccelerated --&amp;amp;gt;&lt;br /&gt;
     &amp;lt;activity ... /&amp;gt;&lt;br /&gt;
     &amp;lt;activity&lt;br /&gt;
        android:name=&amp;quot;.InReadActivity&amp;quot;&lt;br /&gt;
        android:hardwareAccelerated=&amp;quot;true&amp;quot; ... &amp;gt;  &amp;amp;lt;!-- 在欲投放InRead廣告的Activity打開此選項即可 --&amp;amp;gt;&lt;br /&gt;
     &amp;lt;/activity&amp;gt;&lt;br /&gt;
  &amp;lt;/application&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;廣告畫面展示&amp;lt;/b&amp;gt; ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Anchor&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[image:SDK8 inread.png | 300px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(InterstitialComposeActivity), 內有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊Interstitial後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_interstitial.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_interstitial_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_interstitial_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val inread: TWMInReadAdAnchor = TWMInReadAdAnchor(activity, adUnitId)&lt;br /&gt;
    inread.setAdListener(this)&lt;br /&gt;
    inread.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_interstitial_no_fill.png&amp;diff=3699</id>
		<title>檔案:SDK8.0.7 interstitial no fill.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_interstitial_no_fill.png&amp;diff=3699"/>
		<updated>2025-11-14T02:26:00Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_interstitial.png&amp;diff=3698</id>
		<title>檔案:SDK8.0.7 interstitial.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_interstitial.png&amp;diff=3698"/>
		<updated>2025-11-14T02:12:19Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：BrandonTeng 上傳了新版本的 檔案:SDK8.0.7 interstitial.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_interstitial.png&amp;diff=3697</id>
		<title>檔案:SDK8.0.7 interstitial.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_interstitial.png&amp;diff=3697"/>
		<updated>2025-11-14T02:11:07Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Download_MADP_Android_SDK&amp;diff=3696</id>
		<title>Download MADP Android SDK</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Download_MADP_Android_SDK&amp;diff=3696"/>
		<updated>2025-11-14T02:09:00Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version !! Package !! Size !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|2.0.0 || TAMediaSDK_2.0.0 || 1475 KB || Initial release&lt;br /&gt;
|-&lt;br /&gt;
|2.0.1 || TAMediaSDK_2.0.1 || 1475 KB || 修復若干NullpointerException問題&lt;br /&gt;
|-&lt;br /&gt;
|2.0.2 || TAMediaSDK_2.0.2 || 1567 KB ||  &lt;br /&gt;
* 因應google play 內容政策修訂, 增訂對google play sevice的支援&lt;br /&gt;
* 修復若干已知問題&lt;br /&gt;
|-&lt;br /&gt;
|2.0.3 || TAMediaSDK_2.0.3 || 1588 KB ||  &lt;br /&gt;
* 調整插頁式廣告載入程序以促進更良好的用戶經驗&lt;br /&gt;
|-&lt;br /&gt;
|2.0.4 || TAMediaSDK_2.0.4 || 1588 KB ||  &lt;br /&gt;
* 修復因未設定TWMVideoAdListener所導致的NullPointerException問題&lt;br /&gt;
* 修復若干畫面顯示不正常的現象&lt;br /&gt;
|-&lt;br /&gt;
|2.0.5 || TAMediaSDK_2.0.5 || 1587 KB ||  &lt;br /&gt;
&lt;br /&gt;
* 功能優化, 支援多種多媒體效果&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2.0.6 || TAMediaSDK_2.0.6 || 1587 KB ||  &lt;br /&gt;
* SDK穩定性調整&lt;br /&gt;
|-&lt;br /&gt;
|3.0.0 || TAMediaSDK_3.0.0 || 1876 KB ||  &lt;br /&gt;
* 提供SMART_BANNER廣告型態&lt;br /&gt;
* 提供原生性廣告型態&lt;br /&gt;
|-&lt;br /&gt;
|3.0.1 || TAMediaSDK_3.0.1 || 1876 KB ||  &lt;br /&gt;
* 針對插頁式廣告以及影音廣告呈現優化&lt;br /&gt;
|-&lt;br /&gt;
|4.0.0c ||TAMediaSDK_4.0.0c || 1920 KB ||  &lt;br /&gt;
* 移除READ_PHONE_STATE權限&lt;br /&gt;
* 新增懸浮類型廣告&lt;br /&gt;
* 原生性廣告新增支援1200X627圖示&lt;br /&gt;
* 全版廣告支援互動效果(麥克風&amp;amp;補光燈)&lt;br /&gt;
|-&lt;br /&gt;
|4.0.1 ||TAMediaAndroidSDK_4.0.1 || 1920 KB ||  &lt;br /&gt;
* 廣告效能優化&lt;br /&gt;
|-&lt;br /&gt;
|5.0.1 ||TAMediaAndroidSDK_5.0.1 || 1.88 MB ||&lt;br /&gt;
* SDK 穩定性調整&lt;br /&gt;
* 增加互動式插頁廣告種類&lt;br /&gt;
* 優化插頁: 小鍵盤不再擋住輸入框&lt;br /&gt;
* 調整 Callback 時機&lt;br /&gt;
|-&lt;br /&gt;
|5.0.2 || TAMediaAndroidSDK_5.0.2 || 2.02 MB ||&lt;br /&gt;
* 修正部份 Samsung 手機在特定狀況出現異常的問題&lt;br /&gt;
|-&lt;br /&gt;
|6.0.0 || TAMediaAndroidSDK_6.0.0 || 539 KB ||&lt;br /&gt;
* SDK 穩定性調整&lt;br /&gt;
* 新增 InRead 類型廣告&lt;br /&gt;
* 網路模組更改為 Retrofit 2&lt;br /&gt;
* 導入 MRAID 2.0 架構&lt;br /&gt;
|-&lt;br /&gt;
|6.1.1 || TAMediaAndroidSDK_6.1.1 || 908 KB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|6.1.2 || TAMediaAndroidSDK_6.1.2 || 908 KB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|6.2.0 || TAMediaAndroidSDK_6.2.0 || 908 KB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
|-&lt;br /&gt;
|7.0.0 || TAMediaAndroidSDK_7.0.0 || 959 KB ||&lt;br /&gt;
* 新增可支援的廣告素材&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
|-&lt;br /&gt;
|7.0.1 || TAMediaAndroidSDK_7.0.1 || 959 KB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|7.0.2 || TAMediaAndroidSDK_7.0.2 || 960 KB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|7.0.3 || TAMediaAndroidSDK_7.0.3 || 4.23 MB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
|-&lt;br /&gt;
|7.0.4 || TAMediaAndroidSDK_7.0.4 || 4.79 MB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
|-&lt;br /&gt;
|8.0.0 || TAMediaAndroidSDK_8.0.0 || 2.7 MB ||&lt;br /&gt;
* 新增原生廣告整合方式&lt;br /&gt;
* 調整橫幅與InRead廣告&lt;br /&gt;
* 新增兒童導向廣告設定&lt;br /&gt;
|-&lt;br /&gt;
|8.0.1 || [[媒體:TAMediaAndroidSDK_8.0.1.zip|TAMediaAndroidSDK_8.0.1]] || 2.7 MB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
* 支援Android 12上取得AAID之宣告&lt;br /&gt;
|-&lt;br /&gt;
|8.0.2 || [[媒體:TAMediaAndroidSDK 8.0.2.zip|TAMediaAndroidSDK_8.0.2]] || 2.81 MB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|8.0.3 || [[媒體:TAMediaAndroidSDK_8.0.3.zip|TAMediaAndroidSDK_8.0.3]] || 2.68 MB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|8.0.4 || [[媒體:TAMediaAndroidSDK_8.0.4.zip|TAMediaAndroidSDK_8.0.4]] || 2.71 MB ||&lt;br /&gt;
* 原生廣告優化&lt;br /&gt;
* 資安修正&lt;br /&gt;
* [https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Getting_Started_SDK8#Gradle%E8%A8%AD%E5%AE%9A Gradle更新]&lt;br /&gt;
* [https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Proguard_SDK8 Proguard更新]&lt;br /&gt;
|-&lt;br /&gt;
|8.0.5 || [[媒體:TAMediaAndroidSDK_8.0.5.zip|TAMediaAndroidSDK_8.0.5]] || 1.9 MB ||&lt;br /&gt;
* 支援targetSdk=34 (Android 14)&lt;br /&gt;
* 修正InRead廣告寬度問題&lt;br /&gt;
* [https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Getting_Started_SDK8#Gradle%E8%A8%AD%E5%AE%9A_2 Gradle更新]&lt;br /&gt;
* [https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Getting_Started_SDK8#Proguard%E8%A8%AD%E5%AE%9A Proguard更新]&lt;br /&gt;
|-&lt;br /&gt;
|8.0.6 [[檔案:new-xxl.png|40px]] || [[媒體:TAMediaAndroidSDK_8.0.6.zip|TAMediaAndroidSDK_8.0.6]] || 2.1 MB ||&lt;br /&gt;
* 修正Interstitial偶發閃退問題&lt;br /&gt;
|-&lt;br /&gt;
|8.0.7 [[檔案:under-construction.png|40px]] || [[媒體:TAMediaAndroidSDK_8.0.7.zip|TAMediaAndroidSDK_8.0.7]] || ?.? MB ||&lt;br /&gt;
* 支援Kotlin 2.2.0&lt;br /&gt;
* 支持Retrofit 3.0.0&lt;br /&gt;
* 支持Jetpack Compose開發&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide|回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_interstitial_click.png&amp;diff=3695</id>
		<title>檔案:SDK8.0.7 interstitial click.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=%E6%AA%94%E6%A1%88:SDK8.0.7_interstitial_click.png&amp;diff=3695"/>
		<updated>2025-11-14T02:02:33Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Interstitial_Ads_SDK8&amp;diff=3694</id>
		<title>Android Interstitial Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Interstitial_Ads_SDK8&amp;diff=3694"/>
		<updated>2025-11-14T01:47:55Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;簡介&amp;lt;/b&amp;gt; ==&lt;br /&gt;
SDK8&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TWMInterstitialAd為全螢幕大小之廣告, 使用方法跟TWMAdView非常類似, 顯示廣告時需在onReceivedAd()之後呼叫show()函式以便顯示&amp;lt;br/&amp;gt;&amp;lt;b&amp;gt;注意：目前Interstitial廣告有相同版位ID在同一台裝置上，預設為120分鐘展示一次,如需調整請洽服務窗口&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK Document&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-interstitial-ad/index.html Interstitial]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;實作方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;廣告初始設置&amp;lt;/span&amp;gt;&lt;br /&gt;
 var interstitialAd : TWMInterstitialAd? = null&lt;br /&gt;
 interstitialAd = TWMInterstitialAd(this ,TAMEDIA_INTERSTITIAL_ADUNITID)&lt;br /&gt;
 companion object{&lt;br /&gt;
        const val TAMEDIA_INTERSTITIAL_ADUNITID: String = &amp;quot;&amp;lt;b&amp;gt;{TAMEDIA_INTERSTITIAL_ADUNITID}&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;加入TWMAdViewListener監聽廣告投放情況，並在onReceiveAd Callback內呼叫showAd()&amp;lt;/span&amp;gt;&lt;br /&gt;
:在&amp;lt;b&amp;gt;onReceiveAd&amp;lt;/b&amp;gt;後可透過&amp;lt;b&amp;gt;showAd()&amp;lt;/b&amp;gt;顯示廣告&lt;br /&gt;
 interstitialAd.setAdListener(object : TWMAdViewListener {&lt;br /&gt;
     override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示本次請求收到廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
          interstitialAd?.show()&lt;br /&gt;
     }&lt;br /&gt;
     override fun onFailedToReceiveAd(ad: TWMAd, errorCode: TWMAdRequest.ErrorCode) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示本次請求發生錯誤, 並沒有廣告內容可供使用&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onPresentScreen(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示廣告內容已呈現&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onDismissScreen(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示廣告內容已被關閉&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onLeaveApplication(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示因點擊廣告或其他因素離開app&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
 })&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;請求廣告&amp;lt;/span&amp;gt;&lt;br /&gt;
:使用預設TWMAdRequest&lt;br /&gt;
  interstitialAd?.loadAd(TWMAdRequest())&lt;br /&gt;
&lt;br /&gt;
:或是透過TWMAdRequest設置使用者生日，讓您的APP獲得更多元的廣告內容&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 使用Date !! 使用Calendar&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:60%; padding:1%;&amp;quot;|&lt;br /&gt;
  val adRequest = TWMAdRequest()&lt;br /&gt;
  try {&lt;br /&gt;
      &amp;lt;b&amp;gt;// 定義好時間字串的格式&amp;lt;/b&amp;gt;&lt;br /&gt;
      val sdf = SimpleDateFormat(&amp;quot;yyyy/MM/dd&amp;quot;, Locale.getDefault())&lt;br /&gt;
      &amp;lt;b&amp;gt;// 將字串轉成Date型&amp;lt;/b&amp;gt;&lt;br /&gt;
      val birthDate: Date = sdf.parse(&amp;quot;1992/01/01&amp;quot;)&lt;br /&gt;
      &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
      request.setBirthday(birthDate)&lt;br /&gt;
  } catch (e: Exception) {}&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  twmInterstitial.loadAd(request)&lt;br /&gt;
| style=&amp;quot;width:40%; padding: 1%;&amp;quot;|&lt;br /&gt;
  &amp;lt;b&amp;gt;// 創建Calendar並設定生日 (注意! 月份的編號是由0至11)&amp;lt;/b&amp;gt;&lt;br /&gt;
  val birthDate = Calendar.getInstance()&lt;br /&gt;
  &amp;lt;b&amp;gt;// 設定生日為1992/01/01&amp;lt;/b&amp;gt;&lt;br /&gt;
  birthDate[1992, 1] = 1&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
  val request = TWMAdRequest()&lt;br /&gt;
  request.setBirthday(birthDate)&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  twmInterstitial.loadAd(request)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;結束廣告&amp;lt;/span&amp;gt;&lt;br /&gt;
: destroy() 必須被呼叫, 即使Interstitial沒有被使用到或參考&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    interstitialAd.destroy()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interstitial畫面展示 ==&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 插頁式廣告呈現&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8 inerstitial.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(InterstitialComposeActivity), 內有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊Interstitial後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_interstitial.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_interstitial_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_interstitial_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    val interstitialAd: TWMInterstitialAd = TWMInterstitialAd(activity, adUnitId)&lt;br /&gt;
    interstitialAd.setAdListener(this)&lt;br /&gt;
    interstitialAd.loadAd(TWMAdRequest().apply {&lt;br /&gt;
        setChildDirectedTreatment(true)&lt;br /&gt;
    })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Banner_Ads_SDK8&amp;diff=3693</id>
		<title>Android Banner Ads SDK8</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Banner_Ads_SDK8&amp;diff=3693"/>
		<updated>2025-11-14T01:44:34Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：/* Compose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;b&amp;gt;Banner 廣告支援格式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
:&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;TAmedia Banner廣告支援下列數種形式：&amp;lt;/span&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! 廣告格式 !! 大小(寬度x高度) !! TWMAdSize 常數值&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|BANNER || align=&amp;quot;center&amp;quot;|320x50 || align=&amp;quot;center&amp;quot;|TWMAdSize.BANNER&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|BANNER || align=&amp;quot;center&amp;quot;|300x250 || align=&amp;quot;center&amp;quot;|TWMAdSize.BANNER_300X250&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|BANNER || align=&amp;quot;center&amp;quot;|1200x627 || align=&amp;quot;center&amp;quot;|TWMAdSize.BANNER_1200X627&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|SMART_BANNER || align=&amp;quot;center&amp;quot;|自動對應裝置寬度, 並對應適當的高度 || align=&amp;quot;center&amp;quot;|TWMAdSize.SMART_BANNER&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;SDK設計文件&amp;lt;/b&amp;gt; ==&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-view/index.html Banner]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;實作方式&amp;lt;/b&amp;gt; ==&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;廣告初始設置&amp;lt;/span&amp;gt;&lt;br /&gt;
:動態生成TWMAdView加入Layout中&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Layout (XML範例) !! Activity(Kotlin)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%; padding:1%;&amp;quot;|&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;RelativeLayout&lt;br /&gt;
  	android:id=&amp;quot;@+id/ad_container&amp;quot;&lt;br /&gt;
  	android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
  	android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
  	android:gravity=&amp;quot;center_horizontal&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/RelativeLayout&amp;gt; &lt;br /&gt;
| style=&amp;quot;width:60%; padding: 1%;&amp;quot;|&lt;br /&gt;
  var adView: TWMAdView? = null&lt;br /&gt;
  var mRelativeLayout: RelativeLayout? = null&lt;br /&gt;
  &lt;br /&gt;
  companion object {  &lt;br /&gt;
      const val TAMEDIA_BANNER_AD_UNIT_ID: String = &amp;quot;INSERT_YOUR_AD_UNIT_ID&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  // Other Implement ... &lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 依序傳入Activity, TWMAdSize, 以及Ad Unit Id，TWMAdSize請參考頁首的TWMAdSize常數值&amp;lt;/b&amp;gt;&lt;br /&gt;
  adView = TWMAdView(this,TWMAdSize.BANNER,TAMEDIA_BANNER_AD_UNIT_ID)&lt;br /&gt;
  val layoutParams = RelativeLayout.LayoutParams(&lt;br /&gt;
      RelativeLayout.LayoutParams.WRAP_CONTENT,&lt;br /&gt;
      RelativeLayout.LayoutParams.WRAP_CONTENT&lt;br /&gt;
  )&lt;br /&gt;
  layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM)&lt;br /&gt;
  layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL)&lt;br /&gt;
  adView!!.layoutParams = layoutParams&lt;br /&gt;
  mRelativeLayout?.addView(adView)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:或是將TWMAdView宣告至XML中, 透過findViewById取得TWMAdView&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;LinearLayout xmlns:android=&amp;lt;nowiki&amp;gt;&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    android:layout_width=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
    android:layout_height=&amp;quot;match_parent&amp;quot;&lt;br /&gt;
    android:orientation=&amp;quot;vertical&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;lt;com.taiwanmobile.pt.adp.view.TWMAdView&lt;br /&gt;
        xmlns:ad=&amp;lt;nowiki&amp;gt;&amp;quot;http://schemas.android.com/apk/lib/com.taiwanmobile.pt.adp.view&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
        android:id=&amp;quot;@+id/adView&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        ad:adSize=&amp;quot;BANNER&amp;quot;&lt;br /&gt;
        ad:adunitId=&amp;quot;{AD_UNIT_ID}&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;lt;/com.taiwanmobile.pt.adp.view.TWMAdView&amp;gt;&lt;br /&gt;
 &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;加入TWMAdViewListener監聽廣告投放情況&amp;lt;/span&amp;gt;&lt;br /&gt;
  adView.setAdListener(object : TWMAdViewListener {&lt;br /&gt;
     override fun onReceiveAd(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示本次請求收到廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onFailedToReceiveAd(ad: TWMAd, errorCode: TWMAdRequest.ErrorCode) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示本次請求發生錯誤, 並沒有廣告內容可供使用&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onPresentScreen(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示廣告內容已呈現&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onDismissScreen(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示廣告內容已被關閉&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
     override fun onLeaveApplication(ad: TWMAd) {&lt;br /&gt;
          &amp;lt;b&amp;gt;// 表示因點擊廣告或其他因素離開app&amp;lt;/b&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
  })&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:16px;&amp;quot;&amp;gt;請求廣告&amp;lt;/span&amp;gt;&lt;br /&gt;
:請求廣告前，你需要創建一個預設的TWMAdRequest物件&lt;br /&gt;
:並將TWMAdReqeust物件傳入loadAd&lt;br /&gt;
  adView?.loadAd(TWMAdRequest())	&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:或是，透過TWMAdRequest額外設置使用者生日，可讓您的APP獲得更多元的廣告內容&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 使用Date !! 使用Calendar&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:60%; padding:1%;&amp;quot;|&lt;br /&gt;
  val request = TWMAdRequest()&lt;br /&gt;
  try {&lt;br /&gt;
  	&amp;lt;b&amp;gt;// 定義好時間字串的格式&amp;lt;/b&amp;gt;&lt;br /&gt;
  	val sdf = SimpleDateFormat(&amp;quot;yyyy/MM/dd&amp;quot;, Locale.getDefault())&lt;br /&gt;
  	&amp;lt;b&amp;gt;// 將字串轉成Date型&amp;lt;/b&amp;gt;&lt;br /&gt;
  	val birthDate: Date = sdf.parse(&amp;quot;1992/01/01&amp;quot;)&lt;br /&gt;
  	&amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
  	request.setBirthday(birthDate)&lt;br /&gt;
  } catch (Exception e) {}&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  adView?.loadAd(adRequest)&lt;br /&gt;
| style=&amp;quot;width:40%; padding: 1%;&amp;quot;|&lt;br /&gt;
  &amp;lt;b&amp;gt;// 創建Calendar設定生日 (注意! 月份的編號是由0至11)&amp;lt;/b&amp;gt;&lt;br /&gt;
  val birthDate = Calendar.getInstance()&lt;br /&gt;
  &amp;lt;b&amp;gt;// 設定生日為1992/01/01&amp;lt;/b&amp;gt;&lt;br /&gt;
  birthDate[1992, 1] = 1&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 將生日加入request&amp;lt;/b&amp;gt;&lt;br /&gt;
  val adRequest = TWMAdRequest()&lt;br /&gt;
  request.setBirthday(birthDate)&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;b&amp;gt;// 透過TWMAdRequest載入廣告&amp;lt;/b&amp;gt;&lt;br /&gt;
  adView?.loadAd(adRequest)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;最後請記得, 於Activity.onDestroy()回收TWMAdView物件&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
    override fun onDestroy() {&lt;br /&gt;
        super.onDestroy()&lt;br /&gt;
        if (view is TWMAdView) {&lt;br /&gt;
            view.destroy()&lt;br /&gt;
        }&lt;br /&gt;
        mRelativeLayout?.removeAllViews()&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;b&amp;gt;畫面展示&amp;lt;/b&amp;gt;==&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊Banner後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊Banner後撥打電話&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8 banner.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8 banner click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:4.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;Compose&amp;lt;/b&amp;gt; ==&lt;br /&gt;
可參考SDK下載包中之Compose範例程式(BannerComposeActivity), TWMBannerComposable()中有完整的使用方式與介紹&lt;br /&gt;
{| width=&amp;quot;70%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 應用程式開啟&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 點擊Banner後開啟網頁&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 無廣告內容&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_banner.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_banner_click.png]]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [[檔案:SDK8.0.7_banner_no_fill.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;b&amp;gt;將應用程式的廣告請求標記為兒童導向內容(13 歲以下)&amp;lt;/b&amp;gt; ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.tamedia.com.tw/androidDoc/library/com.taiwanmobile.pt.adp.view/-t-w-m-ad-request/index.html TWMAdRequest]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:請於廣告請求時透過TWMAdRequest.setChildDirectedTreatment()告知SDK該廣告標記為兒童導向內容&lt;br /&gt;
:Android裝置的Google廣告ID (AAID) 於此模式時不會被存取與紀錄&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
        val adView: TWMAdView = TWMAdView(activity, adSize, adunitId)&lt;br /&gt;
        val paramAd = RelativeLayout.LayoutParams(&lt;br /&gt;
            RelativeLayout.LayoutParams.MATCH_PARENT,&lt;br /&gt;
            RelativeLayout.LayoutParams.WRAP_CONTENT&lt;br /&gt;
        )&lt;br /&gt;
        paramAd.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM)&lt;br /&gt;
        paramAd.addRule(RelativeLayout.CENTER_HORIZONTAL)&lt;br /&gt;
        adView?.layoutParams = paramAd&lt;br /&gt;
        adView?.visibility = View.INVISIBLE&lt;br /&gt;
        container?.addView(adView)&lt;br /&gt;
&lt;br /&gt;
        adView?.loadAd(adRequest.apply {&lt;br /&gt;
            setChildDirectedTreatment(true)&lt;br /&gt;
        })&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide | 回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
	<entry>
		<id>https://wiki.tamedia.com.tw/wiki/index.php?title=Download_MADP_Android_SDK&amp;diff=3692</id>
		<title>Download MADP Android SDK</title>
		<link rel="alternate" type="text/html" href="https://wiki.tamedia.com.tw/wiki/index.php?title=Download_MADP_Android_SDK&amp;diff=3692"/>
		<updated>2025-11-14T01:38:25Z</updated>

		<summary type="html">&lt;p&gt;BrandonTeng：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version !! Package !! Size !! Notes&lt;br /&gt;
|-&lt;br /&gt;
|2.0.0 || TAMediaSDK_2.0.0 || 1475 KB || Initial release&lt;br /&gt;
|-&lt;br /&gt;
|2.0.1 || TAMediaSDK_2.0.1 || 1475 KB || 修復若干NullpointerException問題&lt;br /&gt;
|-&lt;br /&gt;
|2.0.2 || TAMediaSDK_2.0.2 || 1567 KB ||  &lt;br /&gt;
* 因應google play 內容政策修訂, 增訂對google play sevice的支援&lt;br /&gt;
* 修復若干已知問題&lt;br /&gt;
|-&lt;br /&gt;
|2.0.3 || TAMediaSDK_2.0.3 || 1588 KB ||  &lt;br /&gt;
* 調整插頁式廣告載入程序以促進更良好的用戶經驗&lt;br /&gt;
|-&lt;br /&gt;
|2.0.4 || TAMediaSDK_2.0.4 || 1588 KB ||  &lt;br /&gt;
* 修復因未設定TWMVideoAdListener所導致的NullPointerException問題&lt;br /&gt;
* 修復若干畫面顯示不正常的現象&lt;br /&gt;
|-&lt;br /&gt;
|2.0.5 || TAMediaSDK_2.0.5 || 1587 KB ||  &lt;br /&gt;
&lt;br /&gt;
* 功能優化, 支援多種多媒體效果&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2.0.6 || TAMediaSDK_2.0.6 || 1587 KB ||  &lt;br /&gt;
* SDK穩定性調整&lt;br /&gt;
|-&lt;br /&gt;
|3.0.0 || TAMediaSDK_3.0.0 || 1876 KB ||  &lt;br /&gt;
* 提供SMART_BANNER廣告型態&lt;br /&gt;
* 提供原生性廣告型態&lt;br /&gt;
|-&lt;br /&gt;
|3.0.1 || TAMediaSDK_3.0.1 || 1876 KB ||  &lt;br /&gt;
* 針對插頁式廣告以及影音廣告呈現優化&lt;br /&gt;
|-&lt;br /&gt;
|4.0.0c ||TAMediaSDK_4.0.0c || 1920 KB ||  &lt;br /&gt;
* 移除READ_PHONE_STATE權限&lt;br /&gt;
* 新增懸浮類型廣告&lt;br /&gt;
* 原生性廣告新增支援1200X627圖示&lt;br /&gt;
* 全版廣告支援互動效果(麥克風&amp;amp;補光燈)&lt;br /&gt;
|-&lt;br /&gt;
|4.0.1 ||TAMediaAndroidSDK_4.0.1 || 1920 KB ||  &lt;br /&gt;
* 廣告效能優化&lt;br /&gt;
|-&lt;br /&gt;
|5.0.1 ||TAMediaAndroidSDK_5.0.1 || 1.88 MB ||&lt;br /&gt;
* SDK 穩定性調整&lt;br /&gt;
* 增加互動式插頁廣告種類&lt;br /&gt;
* 優化插頁: 小鍵盤不再擋住輸入框&lt;br /&gt;
* 調整 Callback 時機&lt;br /&gt;
|-&lt;br /&gt;
|5.0.2 || TAMediaAndroidSDK_5.0.2 || 2.02 MB ||&lt;br /&gt;
* 修正部份 Samsung 手機在特定狀況出現異常的問題&lt;br /&gt;
|-&lt;br /&gt;
|6.0.0 || TAMediaAndroidSDK_6.0.0 || 539 KB ||&lt;br /&gt;
* SDK 穩定性調整&lt;br /&gt;
* 新增 InRead 類型廣告&lt;br /&gt;
* 網路模組更改為 Retrofit 2&lt;br /&gt;
* 導入 MRAID 2.0 架構&lt;br /&gt;
|-&lt;br /&gt;
|6.1.1 || TAMediaAndroidSDK_6.1.1 || 908 KB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|6.1.2 || TAMediaAndroidSDK_6.1.2 || 908 KB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|6.2.0 || TAMediaAndroidSDK_6.2.0 || 908 KB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
|-&lt;br /&gt;
|7.0.0 || TAMediaAndroidSDK_7.0.0 || 959 KB ||&lt;br /&gt;
* 新增可支援的廣告素材&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
|-&lt;br /&gt;
|7.0.1 || TAMediaAndroidSDK_7.0.1 || 959 KB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|7.0.2 || TAMediaAndroidSDK_7.0.2 || 960 KB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|7.0.3 || TAMediaAndroidSDK_7.0.3 || 4.23 MB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
|-&lt;br /&gt;
|7.0.4 || TAMediaAndroidSDK_7.0.4 || 4.79 MB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
|-&lt;br /&gt;
|8.0.0 || TAMediaAndroidSDK_8.0.0 || 2.7 MB ||&lt;br /&gt;
* 新增原生廣告整合方式&lt;br /&gt;
* 調整橫幅與InRead廣告&lt;br /&gt;
* 新增兒童導向廣告設定&lt;br /&gt;
|-&lt;br /&gt;
|8.0.1 || [[媒體:TAMediaAndroidSDK_8.0.1.zip|TAMediaAndroidSDK_8.0.1]] || 2.7 MB ||&lt;br /&gt;
* SDK 功能優化&lt;br /&gt;
* 支援Android 12上取得AAID之宣告&lt;br /&gt;
|-&lt;br /&gt;
|8.0.2 || [[媒體:TAMediaAndroidSDK 8.0.2.zip|TAMediaAndroidSDK_8.0.2]] || 2.81 MB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|8.0.3 || [[媒體:TAMediaAndroidSDK_8.0.3.zip|TAMediaAndroidSDK_8.0.3]] || 2.68 MB ||&lt;br /&gt;
* Minor Fix&lt;br /&gt;
|-&lt;br /&gt;
|8.0.4 || [[媒體:TAMediaAndroidSDK_8.0.4.zip|TAMediaAndroidSDK_8.0.4]] || 2.71 MB ||&lt;br /&gt;
* 原生廣告優化&lt;br /&gt;
* 資安修正&lt;br /&gt;
* [https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Getting_Started_SDK8#Gradle%E8%A8%AD%E5%AE%9A Gradle更新]&lt;br /&gt;
* [https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Proguard_SDK8 Proguard更新]&lt;br /&gt;
|-&lt;br /&gt;
|8.0.5 || [[媒體:TAMediaAndroidSDK_8.0.5.zip|TAMediaAndroidSDK_8.0.5]] || 1.9 MB ||&lt;br /&gt;
* 支援targetSdk=34 (Android 14)&lt;br /&gt;
* 修正InRead廣告寬度問題&lt;br /&gt;
* [https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Getting_Started_SDK8#Gradle%E8%A8%AD%E5%AE%9A_2 Gradle更新]&lt;br /&gt;
* [https://wiki.tamedia.com.tw/wiki/index.php?title=Android_Getting_Started_SDK8#Proguard%E8%A8%AD%E5%AE%9A Proguard更新]&lt;br /&gt;
|-&lt;br /&gt;
|8.0.6 [[檔案:new-xxl.png|40px]] || [[媒體:TAMediaAndroidSDK_8.0.6.zip|TAMediaAndroidSDK_8.0.6]] || 2.1 MB ||&lt;br /&gt;
* 修正Interstitial偶發閃退問題&lt;br /&gt;
|-&lt;br /&gt;
|8.0.7 [[檔案:under-construction.png|40px]] || [[媒體:TAMediaAndroidSDK_8.0.7.zip|TAMediaAndroidSDK_8.0.7]] || ?.? MB ||&lt;br /&gt;
* 支援Kotlin 2.2.0&lt;br /&gt;
* 支持Retrofit 3.0.0&lt;br /&gt;
* 增加Compose範例&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[SDK8_Android_SDK_Developer_Guide|回首頁]]&lt;/div&gt;</summary>
		<author><name>BrandonTeng</name></author>
	</entry>
</feed>