Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Deep Linksをはじめよう

ymnder
March 16, 2023

Deep Linksをはじめよう

ymnder

March 16, 2023
Tweet

More Decks by ymnder

Other Decks in Programming

Transcript

  1. • Ryo Yamazaki ◦ Twitter: @ymnd ◦ GitHub: @ymnder •

    Application Engineer ◦ Android 日経電子版アプリ ◦ Android 紙面ビューアーアプリ • DroidKaigi co-organizer whoami
  2. • Deep links ◦ 任意のスキームのURIで実装できる ◦ HTTPではじまる必要はない • Web links

    ◦ HTTPとHTTPSスキームを使う ◦ 複数開ける場合はダイアログで選択する • App Links(今回扱うもの) ◦ autoVerify 属性を含むWeb links ◦ Android 6.0 (API level 23) 以降で利用できる ◦ リンクとアプリが結びつくのでダイアログが出ない ◦ 補足: iOSではUniversal Linksが相当する Deep LinksとApp Links 図はhttps://developer.android.com/training/app-linksから引用
  3. • Webとアプリを安全に紐付けられる ◦ 他のサイトに紐づくことがない • Webからアプリへシームレスに移動できる ◦ アプリでログインしているときにWebのログインが不要 ◦ =>

    Webへの訪問がアプリに移るだけでなく、訪問回数などの向上が 期待できる • 他のアプリやGoogle検索から直接アプリを開ける ◦ 普段使い慣れているアプリを使える App Linksを導入すると何が嬉しいか
  4. • App Links / Universal Linksはインストール訴求をする仕組みではな いため別の手段を検討する ◦ iOSの場合 ▪

    Smart App Banners ◦ iOS / Android共通 ▪ Firebase Dynamic Links アプリのインストールを訴求したい
  5. • 開きたいActivityに対してintent-filterを指定する • 補足: iOSではEntitlementsにdomainを追加し、AppDelegateのapplication(_:continue:restorationHandler:)で handleする AndroidManifestにintent-filterを追加 <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="myownpersonaldomain.com" /> </intent-filter>
  6. • アプリとWebの所有権を証明するため次のJSONファイルを指定された場所に置く ◦ https://domain.name/.well-known/assetlinks.json • アプリ IDとアプリの署名証明書の SHA256 フィンガープリントが必要 •

    補足:iOSではapple-app-site-associationを作成する Digital Asset Links fileをサイトに置く [{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.example.puppies.app", "sha256_cert_fingerprints": ["hogehoge"] } }]
  7. ngrokについて • ローカルのサーバーに外部からアクセスできるようにするサービス ◦ 手元で触ってさくっと直して検証できる • Caution ◦ ngrokは無料プランではURLがpublicで誰でもアクセスできるようになるためセキュリ ティ上のリスクがある

    ◦ privateにアクセスできる環境にURLを貼って検証するなど誤ってURLを公開しないよう に注意する ◦ カスタムドメインやIP制限などセキュアに扱うために有料アカウントも検討する
  8. • 例 ◦ python3 -m http.server # ローカルサーバーを立てる ◦ ngrok

    http 8000 # HTTP tunnelを開始する ◦ # https://example.jp.ngrok.io -> http://localhost:8000 ◦ # ↑セキュリティのためカスタムドメインの利用を検討する ngrokを利用できる環境での例
  9. • Intent.getParcelableExtra<Uri>(Intent.EXTRA_REFERRER) ◦ WebはChromeが自動でセットしてくれる ◦ アプリはURLがはられたサービスの実装次第 • 例 ◦ Twitter

    App: https://t.co/xxxxxxxx ◦ Google 検索: https://www.google.com ◦ LINE: android-app://jp.naver.line.android 計測リファラ: Android
  10. • アプリとWebの連携は比較的簡単にできる ◦ 動作の検証がしやすい • Webでできたことの洗い出しが大事となる ◦ アプリで実装されていない可能性がある • iOS

    / Androidで微妙に動作が異なる ◦ それぞれの挙動を手元で検証すること • App->Webへの遷移で計測のリファラがないことがある まとめ
  11. • App Linksの実装方法 ◦ https://developer.android.com/training/app-links • Universal Linksの実装方法 ◦ https://developer.apple.com/ios/universal-links/

    • Deep Linksの全体像やApp Linksの挙動 ◦ https://techlife.cookpad.com/entry/2022/05/31/100000 • iOS 14でUniversal Linksを検証する方法 ◦ https://en-jp.wantedly.com/companies/wantedly/post_articles/305303 • iOS / Androidのリファラの取得方法 ◦ https://medium.com/mobile-app-development-publication/how-to-get-the-re ferrer-url-for-ios-and-android-995f7cc84dd1 参考文献