如何更新 iOS App 的 Deep Link 設定:完整 AASA 指南
隨著移動應用的快速發展,提供無縫鏈接體驗成為了提升用戶體驗的一個重要方面。對於 iOS 開發者來說,這意味著要正確配置 .well-known/apple-app-site-association(AASA)文件,以支持通過 Deep Link 直接打開 App 的功能。本文將深入探討 AASA 文件的配置、更新與疑難排解。
什麼是 Deep Link 與 Universal Links?
Deep Link(深層連結)是一種允許用戶直接從網頁連結跳轉到行動應用程式特定頁面的技術。在 iOS 生態系統中,Apple 提供了 Universal Links 機制來實現這項功能。
Universal Links 的優勢
- 無縫體驗:用戶點擊網頁連結後直接進入 App,無需經過瀏覽器中轉
- 安全性高:透過 HTTPS 驗證域名所有權,防止第三方應用劫持連結
- 回退機制:若 App 未安裝,連結自動在 Safari 中開啟網頁版本
- 跨平台一致性:同一個 URL 在 iOS、Android、Web 都能正常運作
AASA 文件的角色與結構
AASA 文件是一個 JSON 格式的配置檔,它告訴 iOS 裝置哪些網站或網頁應該直接在 App 中打開。這對於提供一個流暢的用戶體驗來說至關重要,尤其是當用戶從一個網站導航到與您的 App 相關的內容時。
AASA 文件結構範例
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TEAM_ID.com.example.app",
"paths": [
"/articles/*",
"/products/*",
"NOT /api/*"
]
}
]
},
"webcredentials": {
"apps": ["TEAM_ID.com.example.app"]
}
}
關鍵欄位說明
- appID:由 Apple Developer Team ID 與 Bundle Identifier 組成(格式:TEAM_ID.BUNDLE_ID)
- paths:定義哪些 URL 路徑應該在 App 中開啟
/articles/*:匹配所有以 /articles/ 開頭的路徑NOT /api/*:排除 /api/ 路徑(保持在瀏覽器開啟)
- webcredentials:支援 Password AutoFill 功能(選用)
部署 AASA 文件的步驟
步驟 1:創建 AASA 文件
# 創建文件(無副檔名)
touch apple-app-site-association
# 編輯文件內容(JSON格式)
vi apple-app-site-association
重要事項:
- 文件名必須為
apple-app-site-association(無副檔名) - 必須是有效的 JSON 格式
- 不可包含註解
步驟 2:部署到網站根目錄
AASA 文件必須放置在網站的 .well-known 目錄下,並透過 HTTPS 提供:
https://yourdomain.com/.well-known/apple-app-site-association
伺服器配置要求:
- 必須使用 HTTPS(不支援 HTTP)
- Content-Type 應為
application/json或application/pkcs7-mime - 檔案大小限制為 128 KB
- 不可有重定向(HTTP 301/302)
步驟 3:在 Xcode 中配置 Associated Domains
1. 打開 Xcode 專案
2. 選擇 Target → Signing & Capabilities
3. 點擊 "+ Capability" 添加 "Associated Domains"
4. 添加域名:applinks:yourdomain.com
更新 AASA 文件
更新 AASA 文件後,iOS 裝置會在下一次檢查更新時自動識別這些變更。這個過程是自動的,但可能需要一些時間,因為 iOS 系統會根據自己的排程來檢查更新(通常為 24 小時)。
iOS 的更新機制
- App 安裝時:首次安裝 App 時會立即檢查 AASA
- App 更新時:從 App Store 更新 App 後會重新檢查
- 定期檢查:iOS 會定期檢查 AASA 更新(約每 24 小時)
- 裝置重啟:重新啟動裝置後可能觸發重新檢查
加速更新的方法
雖然沒有官方的、直接的方法可以立即強制所有裝置更新,但以下幾個策略可以幫助加速這個過程:
- 發布 App 更新:通過發布一個包含必要變更的 App 版本來促使用戶更新。這會觸發 iOS 裝置重新檢查與 App 相關的配置文件,包括 AASA 文件。
- 提供用戶指導:通過 App 通知或客戶服務,建議用戶重啟他們的裝置或重新安裝 App 來幫助加速更新。
- 使用 App Clips:若需要快速推送更新,可考慮使用 App Clips 機制。
驗證 AASA 文件
使用 Apple 官方驗證工具
Apple 提供了 AASA 驗證器來檢查文件配置:
https://search.developer.apple.com/appsearch-validation-tool/
輸入您的域名和 App ID,工具會自動檢查:
- AASA 文件是否可訪問(HTTPS)
- JSON 格式是否正確
- appID 是否匹配
- Content-Type 是否正確
使用命令列驗證
# 檢查文件是否可訪問
curl -I https://yourdomain.com/.well-known/apple-app-site-association
# 下載並檢查內容
curl https://yourdomain.com/.well-known/apple-app-site-association | jq .
# 檢查 Content-Type
curl -I https://yourdomain.com/.well-known/apple-app-site-association | grep -i content-type
常見問題與解決方案
問題 1:Universal Links 無法運作
可能原因:
- AASA 文件無法透過 HTTPS 訪問
- Team ID 或 Bundle ID 錯誤
- Xcode 中未正確配置 Associated Domains
- iOS 尚未更新 AASA 快取
解決方法:
# 1. 驗證文件可訪問性
curl -v https://yourdomain.com/.well-known/apple-app-site-association
# 2. 檢查 Team ID
# 前往 Apple Developer → Membership → Team ID
# 3. 清除 iOS 快取(需重新安裝 App)
# 刪除 App → 重新從 Xcode 安裝
問題 2:部分路徑無法觸發 Deep Link
檢查清單:
- 確認 paths 配置正確使用通配符
* - 檢查是否有
NOT規則排除了該路徑 - 確認 URL 完全匹配(包括結尾斜線)
問題 3:AASA 更新後未生效
強制更新方法:
- 更新 App 版本號並重新發布
- 建議用戶刪除並重新安裝 App
- 等待 iOS 自動更新週期(最多 24 小時)
最佳實踐
1. 路徑規劃
- 使用明確的路徑模式,避免過於寬鬆的通配符
- 優先列出具體路徑,再使用通配符
- 使用
NOT排除 API 或管理介面路徑
2. 安全性考量
- 定期檢查 AASA 文件的可訪問性
- 確保 SSL 憑證有效且未過期
- 不要在 AASA 文件中包含敏感資訊
3. 測試流程
- 在正式環境部署前先在測試環境驗證
- 使用 TestFlight 進行 Beta 測試
- 準備回退方案(保留舊版 AASA 備份)
4. 監控與維護
- 設定監控警報,追蹤 AASA 文件的可用性
- 記錄每次 AASA 更新的時間與內容
- 定期使用 Apple 驗證工具檢查配置
結語
正確配置與更新 .well-known/apple-app-site-association 文件是實現 iOS Universal Links 的關鍵步驟。雖然 iOS 的更新機制需要一定時間,但透過本文介紹的方法與最佳實踐,您可以確保 Deep Link 配置的可靠性,為用戶提供流暢的 App 使用體驗。
關鍵要點:
- AASA 文件必須透過 HTTPS 在
.well-known目錄下提供 - 正確配置 Team ID、Bundle ID 與 paths 規則
- 使用 Apple 官方工具驗證配置
- 發布 App 更新可觸發 iOS 重新檢查 AASA
- 定期監控與維護 AASA 文件的可訪問性
掌握這些技巧後,您將能夠有效管理 iOS App 的 Deep Link 配置,確保用戶無論從何處點擊連結都能獲得最佳的使用體驗。
Related Articles
- How to Update iOS App Deep Link Configuration: Complete AASA Guide
- iOS vs Android Deep Link Complete Comparison Guide: In-Depth Analysis of Universal Links & App Links
- iOS vs Android Deep Link 完整比較指南:Universal Links 與 App Links 深度解析
- iOS SSL Pinning and Certificate Validation Guide
- Automated Monthly EC2 Snapshot Backup with AWS Lambda + CloudWatch Events