為 Android 設定應用程式連結
深層連結是一種使用 URI 啟動應用程式的機制。此 URI 包含 scheme、host 和 path,並將應用程式開啟至特定畫面。
應用程式連結是一種使用 http
或 https
的深層連結,且僅限於 Android 裝置使用。
設定應用程式連結需要您擁有網域。否則,請考慮使用 Firebase Hosting 或 GitHub Pages 作為臨時解決方案。
1. 自訂 Flutter 應用程式
#編寫一個可以處理傳入 URL 的 Flutter 應用程式。此範例使用 go_router 套件來處理路由。Flutter 團隊維護 go_router
套件。它提供了一個簡單的 API 來處理複雜的路由情境。
若要建立新的應用程式,請輸入
flutter create <app-name>
flutter create deeplink_cookbook
若要將
go_router
套件包含在您的應用程式中,請將go_router
的相依性新增至專案若要將
go_router
套件新增為相依性,請執行flutter pub add
flutter pub add go_router
若要處理路由,請在
main.dart
檔案中建立一個GoRouter
物件main.dartdartimport 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; void main() => runApp(MaterialApp.router(routerConfig: router)); /// This handles '/' and '/details'. final router = GoRouter( routes: [ GoRoute( path: '/', builder: (_, __) => Scaffold( appBar: AppBar(title: const Text('Home Screen')), ), routes: [ GoRoute( path: 'details', builder: (_, __) => Scaffold( appBar: AppBar(title: const Text('Details Screen')), ), ), ], ), ], );
2. 修改 AndroidManifest.xml
#使用 VS Code 或 Android Studio 開啟 Flutter 專案。
導覽至
android/app/src/main/AndroidManifest.xml
檔案。在具有
.MainActivity
的<activity>
標籤內新增以下中繼資料標籤和 intent 篩選器。將
example.com
替換為您自己的網域。xml<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" android:host="example.com" /> <data android:scheme="https" /> </intent-filter>
3. 託管 assetlinks.json 檔案
#使用您擁有的網域,在 Web 伺服器中託管 assetlinks.json
檔案。此檔案會告知行動瀏覽器要開啟哪個 Android 應用程式,而不是瀏覽器。若要建立此檔案,請取得您在上一個步驟中建立的 Flutter 應用程式的套件名稱,以及您將用於建置 APK 的簽署金鑰的 sha256 指紋。
套件名稱
#在 AndroidManifest.xml
中找到套件名稱,即 <manifest>
標籤下的 package
屬性。套件名稱通常的格式為 com.example.*
。
sha256 指紋
#此程序可能會因 APK 的簽署方式而有所不同。
使用 Google Play 應用程式簽署
#您可以直接從 Play 開發人員控制台找到 sha256 指紋。在 Play 控制台中開啟您的應用程式,位於「發布 > 設定 > 應用程式完整性 > 應用程式簽署」標籤下
使用本機金鑰儲存
#如果您在本機儲存金鑰,您可以使用以下指令產生 sha256
keytool -list -v -keystore <path-to-keystore>
assetlinks.json
#託管的檔案應如下所示
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.deeplink_cookbook",
"sha256_cert_fingerprints":
["FF:2A:CF:7B:DD:CC:F1:03:3E:E8:B2:27:7C:A2:E3:3C:DE:13:DB:AC:8E:EB:3A:B9:72:A1:0E:26:8A:F5:EC:AF"]
}
}]
將
package_name
值設定為您的 Android 應用程式 ID。將 sha256_cert_fingerprints 設定為您從上一個步驟取得的值。
將檔案託管在類似以下的 URL:
<webdomain>/.well-known/assetlinks.json
確認您的瀏覽器可以存取此檔案。
測試
#您可以使用真實裝置或模擬器來測試應用程式連結,但首先請確保您已在裝置上執行至少一次 flutter run
。這可確保已安裝 Flutter 應用程式。
若要僅測試應用程式設定,請使用 adb 指令
adb shell 'am start -a android.intent.action.VIEW \
-c android.intent.category.BROWSABLE \
-d "http://<web-domain>/details"' \
<package name>
若要測試 Web 和應用程式 設定,您必須直接透過 Web 瀏覽器或其他應用程式點擊連結。一種方法是建立 Google 文件,新增連結,然後點擊它。
如果一切設定正確,Flutter 應用程式會啟動並顯示詳細資料畫面
附錄
#除非另有說明,本網站上的文件反映 Flutter 的最新穩定版本。頁面上次更新於 2024-12-04。 檢視原始碼 或 回報問題。