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

Deep Linksをはじめよう

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for ymnder ymnder
March 16, 2023

Deep Linksをはじめよう

Avatar for ymnder

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 参考文献