Android 應用程式連結是一種特殊的深層連結,可讓網站網址立即在 Android 應用程式中開啟對應的內容,無須要求使用者選取應用程式。Android 應用程式連結會使用 Digital Asset Links API 建立信任關係,讓網站自動開啟該網域的連結,如果系統成功驗證您擁有網址,系統會自動將這些網址意圖轉送至您的應用程式。
如要驗證您同時擁有應用程式和網站網址,請完成 步驟如下:
新增包含
autoVerify
的意圖篩選器 屬性。這項屬性會向系統發出信號,判斷應驗證 您的應用程式就屬於意圖篩選器中使用的網址網域。聲明網站和意圖之間的關聯 在下列位置代管 Digital Asset Links JSON 檔案,藉此進行篩選:
https://domain.name/.well-known/assetlinks.json
如要尋找相關資訊,請參閱下列資源:
新增應用程式連結驗證的意圖篩選器
如要為應用程式啟用連結處理驗證,請新增相符的意圖篩選器 格式如下:
<!-- Make sure you explicitly set android:autoVerify to "true". -->
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- If a user clicks on a shared link that uses the "http" scheme, your
app should be able to delegate that traffic to "https". -->
<data android:scheme="http" />
<data android:scheme="https" />
<!-- Include one or more domains that should be verified. -->
<data android:host="..." />
</intent-filter>
雖然在一個 <intent-filter>
中加入 autoVerify
就夠了
宣告每個主機,即使其他未標記的主機使用該主機也是如此
因此,建議您為每個聲明表單加上 autoVerify
<intent-filter>
元素維持一致性。這也能確保
移除或重構資訊清單檔案中的元素時,應用程式仍會
包含您仍然定義的所有網域
網域驗證程序需要連上網際網路,
需要一段時間才能完成為了改善處理流程的效率
為指定 Android 12 以上版本為目標版本的應用程式驗證網域
前提是該網域的 <intent-filter>
元素
與上述程式碼片段中指定的格式完全相符。
支援針對多個主機的應用程式連結
系統必須能驗證應用程式網址意圖篩選器資料中指定的主機 元素對照 意圖篩選器如果驗證失敗,系統會預設為標準行為 才能解析意圖 建立應用程式內容的深層連結 不過,系統仍可將應用程式驗證為預設處理常式 應用程式的其他意圖篩選器中定義的任何網址模式。
注意:在 Android 11 (API 級別 30) 以下版本中,系統 除非應用程式偵測到相符的項目,否則不會驗證應用程式為預設處理常式 為您在檔案中定義的「所有」主機提供 Digital Asset Links 檔案 資訊清單。
舉例來說,如果在 https://www.example.com/.well-known/assetlinks.json
中找到 assetlinks.json
檔案,但在 https://www.example.net/.well-known/assetlinks.json
中找不到,則具有下列意圖篩選器的應用程式只會通過 https://www.example.com
的驗證:
<application> <activity android:name=”MainActivity”> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" /> <data android:scheme="https" /> <data android:host="www.example.com" /> </intent-filter> </activity> <activity android:name=”SecondActivity”> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" /> <data android:host="www.example.net" /> </intent-filter> </activity> </application>
注意:同一個意圖篩選器中的所有 <data>
元素
就能算出合併屬性的所有變化版本舉例來說,
上方第一個意圖篩選器包含的 <data>
元素只會宣告
HTTPS 配置。但它會與其他 <data>
元素結合,因此意圖篩選器可同時支援 http://www.example.com
和 https://www.example.com
。因此,如要定義特定組合,您必須建立不同的意圖篩選器
URI 配置和網域
支援連結多個子網域的應用程式
Digital Asset Links 通訊協定會將意圖篩選器中的子網域視為不重複
不同的主機如果您的意圖
篩選器列出了多個擁有不同子網域的主機,您必須發布
每個網域為 assetlinks.json
。例如:
下列意圖篩選器包含 www.example.com
和
mobile.example.com
為可接受的意圖網址主機。所以
assetlinks.json
必須同時發布
「https://www.example.com/.well-known/assetlinks.json
」和
https://mobile.example.com/.well-known/assetlinks.json
。
<application> <activity android:name=”MainActivity”> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" /> <data android:scheme="https" /> <data android:host="www.example.com" /> <data android:host="mobile.example.com" /> </intent-filter> </activity> </application>
或者,如果您使用萬用字元 (例如 *.example.com
) 宣告主機名稱,則必須在根主機名稱 (example.com
) 上發布 assetlinks.json
檔案。舉例來說,只要 assetlinks.json
檔案是在 https://example.com/.well-known/assetlinks.json
上發布,就會針對 example.com
的任何子名稱 (例如 foo.example.com
) 通過驗證,例如:
<application> <activity android:name=”MainActivity”> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" /> <data android:host="*.example.com" /> </intent-filter> </activity> </application>
檢查多個與同一網域相關聯的應用程式
如果您發布多個應用程式,且每個應用程式都與相同網域建立關聯,則每個應用程式都能順利驗證。不過,如果應用程式可以解析 如同舊版和完整版 應用程式,只有最近安裝的應用程式才能解析網路意圖 。
在此情況下,請檢查使用者裝置上是否存在衝突的應用程式。
前提是您已準備好必要的套件
瀏覽權限。接著,在應用程式中顯示自訂選擇器對話方塊,其中包含呼叫 queryIntentActivities()
的結果。使用者可從相符的應用程式清單中選取偏好的應用程式
。
宣告網站關聯
您必須在網站上發布 Digital Asset Links JSON 檔案,才能指出與網站相關聯的 Android 應用程式,並驗證應用程式的網址意圖。JSON 檔案會使用下列欄位識別相關聯的應用程式:
package_name
:應用程式 ID 在應用程式的build.gradle
檔案中宣告。sha256_cert_fingerprints
:應用程式簽署憑證的 SHA256 指紋。 您可以透過下列指令透過 Java keytool 產生指紋: 敬上 這個欄位支援多個指紋 (可用來支援) 例如偵錯和正式版群組。keytool -list -v -keystore my-release-key.keystore
如果您已為應用程式使用 Play 應用程式簽署功能,請輸入憑證 在本機執行
keytool
產生的指紋 與使用者上的使用者語言不符裝置。您可確認自己是否使用 登入 Play 管理中心開發人員帳戶,然後按一下以下帳戶的 Play 應用程式簽署功能:Release > Setup > App signing
;那麼您也會 請找出應用程式的正確 Digital Asset Links JSON 程式碼片段 頁面。
以下 assetlinks.json
範例檔案會將連結開啟權限授予
com.example
Android 應用程式:
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.example", "sha256_cert_fingerprints": ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"] } }]
將網站與多個應用程式建立關聯
網站可在相同的 assetlinks.json
中宣告與多個應用程式之間的關聯
檔案。以下是宣告關聯的陳述式檔案範例
分別位於
https://www.example.com/.well-known/assetlinks.json
:
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.example.puppies.app", "sha256_cert_fingerprints": ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"] } }, { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.example.monkeys.app", "sha256_cert_fingerprints": ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"] } }]
不同的應用程式可處理同一網站主機下不同資源的連結。例如:
app1 可能會宣告 https://example.com/articles
的意圖篩選器,而 app2 可能會宣告
https://example.com/videos
的意圖篩選器
注意:與網域相關聯的多個應用程式可能會使用相同的簽署, 不同的憑證
將多個網站與單一應用程式建立關聯
多個網站可以在以下網站上聲明與同一應用程式的關聯:
各自的 assetlinks.json
檔案。下列檔案清單
示範瞭如何宣告 example.com 的關聯
example.net 與 app1第一份商家資訊顯示 example.com 的關聯
使用 app1:
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.mycompany.app1", "sha256_cert_fingerprints": ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"] } }]
下一個清單顯示 example.net 與 app1 的關聯。只有
這些檔案的代管位置 (.com
和 .net
):
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.mycompany.app1", "sha256_cert_fingerprints": ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"] } }]
發布 JSON 驗證檔案
您必須在下列位置發布 JSON 驗證檔案:
https://domain.name/.well-known/assetlinks.json
請確定以下資訊:
assetlinks.json
檔案會與內容類型一併提供application/json
。assetlinks.json
檔案必須透過 HTTPS 連線存取, 不論應用程式的意圖篩選器是否將 HTTPS 宣告為資料配置。assetlinks.json
檔案必須能在不重新導向的情況下存取 301 或 302 重新導向)。- 如果您的應用程式連結支援多個代管網域,您就必須發布
assetlinks.json
檔案。詳情請見 支援應用程式連結 。 - 請勿在資訊清單檔案中採用不會 即可公開存取 (例如只能透過 VPN 存取的檔案)。A 罩杯 在這種情況下,設定建構 變化版本,為開發人員版本產生不同的資訊清單檔案。
Android 應用程式連結驗證
android:autoVerify="true"
出現在應用程式至少一個意圖中時
篩選器、在搭載 Android 6.0 (API 級別 23) 的裝置上安裝應用程式,或者
則會造成系統會自動驗證與
應用程式意圖篩選器中的網址。在 Android 12 以上版本中,
您也可以手動叫用驗證程序,
測試驗證邏輯
自動驗證
系統的自動驗證包含下列項目:
- 系統會檢查包含下列任一項目的意圖篩選器:
- 動作:
android.intent.action.VIEW
- 類別:
android.intent.category.BROWSABLE
和android.intent.category.DEFAULT
- 資料配置:
http
或https
- 動作:
- 針對上述意圖篩選器中的每個不重複主機名稱,Android 查詢
以下網站的 Digital Asset Links 檔案相關網站:
https://hostname/.well-known/assetlinks.json
。
確認要與應用程式建立關聯的網站清單後, 您已確認代管 JSON 檔案有效,請為您的 裝置。請等待至少 20 秒,讓非同步驗證程序完成 完成。請使用以下指令檢查系統是否驗證您的 應用程式,並設定正確的連結處理政策:
adb shell am start -a android.intent.action.VIEW \ -c android.intent.category.BROWSABLE \ -d "http://domain.name:optional_port"
人工驗證
從 Android 12 開始,您可以手動叫用網域 驗證裝置上安裝的應用程式無論應用程式指定 Android 12 版本為目標與否,您都可以執行這項程序。
建立網際網路連線
如要執行網域驗證,測試裝置必須連線至 網際網路
支援更新後的網域驗證程序
如果應用程式指定 Android 12 以上版本,系統會使用 自動更新的網域驗證程序。
或者,您也可以手動啟用新版驗證程序。方法如下 在終端機視窗中執行下列指令:
adb shell am compat enable 175408749 PACKAGE_NAME
重設裝置上的 Android 應用程式連結狀態
在裝置上手動叫用網域驗證前,您必須先重設 測試裝置上的 Android 應用程式連結狀態。如要這麼做,請執行下列指令: 指令:
adb shell pm set-app-links --package PACKAGE_NAME 0 all
這個指令會將裝置設為在使用者之前所處的狀態 可選擇所有網域的預設應用程式。
叫用網域驗證程序
在裝置上重設 Android 應用程式連結狀態後,您可以執行 驗證本身方法是在終端機視窗中執行下列指令:
adb shell pm verify-app-links --re-verify PACKAGE_NAME
查看驗證結果
請等待驗證服務代理完成要求後,再查看驗證結果。如要進行這項操作,請執行下列指令:
adb shell pm get-app-links PACKAGE_NAME
這個指令的輸出結果會與以下內容類似:
com.example.pkg: ID: 01234567-89ab-cdef-0123-456789abcdef Signatures: [***] Domain verification state: example.com: verified sub.example.com: legacy_failure example.net: verified example.org: 1026
成功通過驗證的網域具有網域驗證狀態
(共 verified
個)。其他狀態表示無法進行網域驗證
執行方式具體而言,none
狀態表示驗證
服務專員可能尚未完成驗證程序。
以下列出網域驗證程序可能傳回的值 傳回特定網域的結果:
none
- 尚未記錄這個網域的資料。請稍候幾分鐘, 驗證代理程式來完成網域驗證相關要求,然後 再次叫用網域驗證程序。
verified
- 網域已成功通過驗證,可用於宣告應用程式。
approved
- 網域已強制通過核准,通常透過執行殼層指令。
denied
- 遭強制拒絕網域,通常是透過執行殼層指令。
migrated
- 系統保留了先前使用舊版網域驗證程序的結果。
restored
- 使用者執行資料還原作業後,系統已核准網域。假設 網域先前已通過驗證
legacy_failure
- 舊版驗證工具已拒絕該網域。具體失敗原因為
system_configured
- 網域已由裝置設定自動核准。
- 錯誤代碼為
1024
以上 裝置驗證器專屬的自訂錯誤代碼。
要求使用者將應用程式與網域建立關聯
應用程式可以透過另一種方式要求使用者取得網域核准, 以便將應用程式與該網域建立關聯。
檢查應用程式是否已獲准在網域內使用
在提示使用者之前,請確認您的應用程式是否為您在 <intent-filter>
元素中定義的網域的預設處理常式。您可以使用下列任一方法查詢核准狀態:
DomainVerificationManager
使用 API 更新。- 指令列程式 (測試期間)。
網域驗證管理員
下列程式碼片段說明如何使用
DomainVerificationManager
API:
Kotlin
val context: Context = TODO("Your activity or fragment's Context") val manager = context.getSystemService(DomainVerificationManager::class.java) val userState = manager.getDomainVerificationUserState(context.packageName) // Domains that have passed Android App Links verification. val verifiedDomains = userState?.hostToStateMap ?.filterValues { it == DomainVerificationUserState.DOMAIN_STATE_VERIFIED } // Domains that haven't passed Android App Links verification but that the user // has associated with an app. val selectedDomains = userState?.hostToStateMap ?.filterValues { it == DomainVerificationUserState.DOMAIN_STATE_SELECTED } // All other domains. val unapprovedDomains = userState?.hostToStateMap ?.filterValues { it == DomainVerificationUserState.DOMAIN_STATE_NONE }
Java
Context context = TODO("Your activity or fragment's Context"); DomainVerificationManager manager = context.getSystemService(DomainVerificationManager.class); DomainVerificationUserState userState = manager.getDomainVerificationUserState(context.getPackageName()); Map<String, Integer> hostToStateMap = userState.getHostToStateMap(); List<String> verifiedDomains = new ArrayList<>(); List<String> selectedDomains = new ArrayList<>(); List<String> unapprovedDomains = new ArrayList<>(); for (String key : hostToStateMap.keySet()) { Integer stateValue = hostToStateMap.get(key); if (stateValue == DomainVerificationUserState.DOMAIN_STATE_VERIFIED) { // Domain has passed Android App Links verification. verifiedDomains.add(key); } else if (stateValue == DomainVerificationUserState.DOMAIN_STATE_SELECTED) { // Domain hasn't passed Android App Links verification, but the user has // associated it with an app. selectedDomains.add(key); } else { // All other domains. unapprovedDomains.add(key); } }
指令列程式
在開發期間測試應用程式時,請執行下列指令, 可以查詢貴機構擁有網域的驗證狀態:
adb shell pm get-app-links --user cur PACKAGE_NAME
在以下範例輸出內容中,即使應用程式驗證失敗, 「example.org」網域,使用者 0 已在系統設定中手動核准應用程式, 但未驗證該網域的其他套件。
com.example.pkg: ID: *** Signatures: [***] Domain verification state: example.com: verified example.net: verified example.org: 1026 User 0: Verification link handling allowed: true Selection state: Enabled: example.org Disabled: example.com example.net
您也可以使用 shell 指令,模擬使用者選取
找出與指定網域相關聯的應用程式完整說明
您可以從 adb shell pm
的輸出內容取得指令。
提供要求的背景資訊
提出網域核准要求前,請先向使用者提供一些背景資訊。舉例來說,您可以向使用者顯示啟動畫面、對話方塊或類似的 UI 元素,說明為何應用程式應成為特定網域的預設處理常式。
提出要求
在使用者瞭解應用程式要求執行的操作後,提出要求。
如要執行此操作,請叫用含有
ACTION_APP_OPEN_BY_DEFAULT_SETTINGS
敬上
意圖動作,以及比對出資料字串
目標應用程式的 package:com.example.pkg
,如
下列程式碼片段:
Kotlin
val context: Context = TODO("Your activity or fragment's Context") val intent = Intent(Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS, Uri.parse("package:${context.packageName}")) context.startActivity(intent)
Java
Context context = TODO("Your activity or fragment's Context"); Intent intent = new Intent(Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS, Uri.parse("package:" + context.getPackageName())); context.startActivity(intent);
叫用意圖時,使用者會看到名為「預設開啟」的設定畫面。這個畫面中包含名為「開啟支援的連結」圓形按鈕。 如圖 1 所示。
使用者開啟「Open supported links」後,系統會在「Links to open in this app」部分下方顯示一組核取方塊。使用者可以在此選取要與應用程式建立關聯的網域,也可以選取「Add link」來新增網域,如圖 2 所示。使用者稍後 選取對方新增的網域中的任何連結,連結就會在應用程式中開啟 。
開啟應用程式無法驗證的網域
應用程式的主要功能可能是以第三方形式開啟連結,但沒有 能夠驗證已處理的網域如果是這種情況,請向使用者說明 因此無法在選擇網頁連結時 第一方應用程式和您的 (第三方) 應用程式。使用者必須手動連結 網域。
此外,請考慮推出對話方塊或 Trampoline 活動 如果使用者偏好在第一方應用程式開啟連結, 做為 Proxy設定這類對話方塊或彈跳活動前,請先設定應用程式,讓應用程式具備套件瀏覽權限,以便將其納入與應用程式網路意圖篩選器相符的第一方應用程式。
測試應用程式連結
導入應用程式連結功能時,建議您測試連結功能, 請確保系統能夠將您的應用程式與網站建立關聯,並處理網址要求。 正常運作
如要測試現有的陳述式檔案,可以使用 陳述式清單產生器和測試人員工具。
確認要驗證的主機清單
測試時,您應確認系統應驗證的相關主機清單 。列出所有網址的對應意圖篩選器包括: 屬性和元素:
- 值為
http
或https
的android:scheme
屬性 android:host
屬性含有網域網址模式android.intent.action.VIEW
個動作元素- 「
android.intent.category.BROWSABLE
」類別元素
請使用這份清單,確認每個命名主機和子網域都提供 Digital Asset Links JSON 檔案。
確認 Digital Asset Links 檔案
透過 Digital Asset Links API 確認各個網站採用 Digital Asset Links JSON 時 檔案是否已正確代管及定義:
https://digitalassetlinks.googleapis.com/v1/statements:list? source.web.site=https://domain.name:optional_port& relation=delegate_permission/common.handle_all_urls
查看連結政策
在測試過程中,你可以查看目前的系統設定,以進行連結處理。 使用下列指令,取得現有連結處理政策的清單 :
adb shell dumpsys package domain-preferred-apps
或者,您也可以執行相同動作:
adb shell dumpsys package d
注意:安裝應用程式後,請至少等待 20 秒 允許系統完成驗證程序。
這個指令會傳回裝置中定義的每個使用者或個人資料清單。 開頭為下列格式的標頭:
App linkages for user 0:
根據這個標頭,輸出內容會使用以下格式列出連結處理設定 授予該使用者:
Package: com.android.vending Domains: play.google.com market.android.com Status: always : 200000002
這份清單會指出使用者與哪些網域相關聯的應用程式:
Package
- 根據資訊清單中宣告的套件名稱識別應用程式。Domains
:顯示應用程式連結網頁連結的完整主機清單 (使用 以分隔符號表示空格Status
- 顯示這個應用程式目前的連結處理設定。符合下列條件的應用程式: 已通過驗證,且其資訊清單包含android:autoVerify="true"
,顯示了驗證狀態 (共always
個)。這個狀態後的十六進位數字與 Android 系統的 使用者應用程式連結偏好設定的記錄。這個值不代表驗證是否成功驗證 成功。
注意:如果使用者在驗證完成前變更應用程式的應用程式連結設定,系統可能會誤判驗證成功,即使驗證失敗也一樣。然而,驗證失敗並不影響使用者 明確允許應用程式直接開啟支援的連結,不必事先詢問。這是因為使用者偏好設定的優先順序高於程式輔助驗證 (或缺乏驗證)。因此 該連結會直接連到您的應用程式,不顯示對話方塊,就像驗證之前一樣 成功。
測試範例
為確保應用程式連結驗證成功,系統必須能夠 您在特定意圖篩選器中指定的網站,且符合應用程式條件 連結。以下範例顯示的資訊清單設定包含已定義多個應用程式連結:
<application> <activity android:name=”MainActivity”> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" /> <data android:scheme="https" /> <data android:host="www.example.com" /> <data android:host="mobile.example.com" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" /> <data android:host="www.example2.com" /> </intent-filter> </activity> <activity android:name=”SecondActivity”> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" /> <data android:host="account.example.com" /> </intent-filter> </activity> <activity android:name=”ThirdActivity”> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="https" /> <data android:host="map.example.com" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="market" /> <data android:host="example.com" /> </intent-filter> </activity> </application>
平台嘗試從上述資訊清單驗證的主機清單如下:
www.example.com mobile.example.com www.example2.com account.example.com
平台不會嘗試從上述資訊清單驗證的主機清單如下:
map.example.com (it does not have android.intent.category.BROWSABLE) market://example.com (it does not have either an "http" or "https" scheme)
如要進一步瞭解對帳單清單,請參閱: 建立陳述式清單。
修正常見的導入錯誤
如果無法驗證 Android 應用程式連結,請參閱下列常見情況
發生錯誤。這個部分使用 example.com
做為預留位置網域名稱。時段
執行這些檢查,請將 example.com
替換成伺服器的實際值
網域名稱。
- 意圖篩選器設定不正確
- 檢查您是否加入了非應用程式擁有的網址
<intent-filter>
元素。 - 伺服器設定不正確
檢查伺服器的 JSON 設定,確定 SHA 值為 正確。
此外,請確認
example.com.
(包含結尾句點) 放送相同 內容格式:example.com
。- 伺服器端重新導向
如果您設定了應用程式,系統就不會驗證您應用程式的「任何」Android 應用程式連結 重新導向如下:
http://example.com
到https://example.com
example.com
到www.example.com
這項行為可保護應用程式的安全性。
- 伺服器穩定性
檢查伺服器是否可以連線至用戶端應用程式。
- 無法驗證的連結
為了進行測試,您可能會刻意新增不可驗證的連結。請注意,在 Android 11 以下版本中,這些連結會導致系統無法驗證應用程式的所有 Android 應用程式連結。
- assetlinks.json 中的簽名不正確
請確認您的簽名正確無誤,且與用於簽署應用程式的簽名相符。常見錯誤包括:
- 使用偵錯憑證簽署應用程式,且僅具有版本
assetlinks.json
中的簽章。 - 在
assetlinks.json
中使用小寫英文字母。簽章應該 大寫字母。 - 如果您使用 Play 應用程式簽署功能,請確認使用的是簽名 也就是 Google 用來簽署每個發布內容的平台您可以驗證這些詳細資料 包括完整的 JSON 程式碼片段,請依照 宣告網站關聯。
- 使用偵錯憑證簽署應用程式,且僅具有版本