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

DynamicLinks 知られざる?Firebaseの秘技

nacatl
November 15, 2018

DynamicLinks 知られざる?Firebaseの秘技

nacatl

November 15, 2018
Tweet

More Decks by nacatl

Other Decks in Programming

Transcript

  1. Copyright 2018 Studyplus, Inc. All Rights Reserved.
    Dynamic Links
    ~知られざる?Firebaseの秘技~
    Yuzuru Nakashima / Studyplus Inc.
    2018.11.15 @ potatotips #56

    View full-size slide

  2. 自己紹介
    ✎ なかてぃる
    affinity_robots
    nacatl
    ✎ スタディプラスのAndroidエンジニア
    ✎ 趣味: Magic the Gathering

    View full-size slide

  3. 目次
    ✎ DynamicLinksって何?
    ✎ 何ができるの?
    ✎ どうやって作るの?
    ✎ 使い方は?

    View full-size slide

  4. DynamicLinksって何?
    What is this?

    View full-size slide

  5. DynamicLinksって何?
    Firebaseが提供しているサービスの一つ。
    簡単に言えば
    アプリに対する
    すごーい!
    リダイレクトリンク
    です。

    View full-size slide

  6. 何ができるの?
    What can it do?

    View full-size slide

  7. 何ができるの?
    Android or iOS or PC(その他)
    で場合分けして、リダイレクトさせられる

    View full-size slide

  8. 何ができるの?
    アプリのインストール有無を判定でき、
    ストアからのインストールを挟んでも
    ディープリンクを判定できる!!
    - インストール済み→ディープリンク起動
    - 未インストール→ストア(か任意URL)に遷移

    View full-size slide

  9. どうやって作るの?
    How do I create it?

    View full-size slide

  10. どうやって作るの?
    原型。パラメータをクエリで突っ込む
    https://{Firebaseプロジェクトの固有ドメイン}.app.goo.gl
    ?link={https://で始まるリンク。アプリのディープリンクはここを見る}
    &dfl={デスクトップ用フォールバックリンク}
    &apn={Androidアプリのパッケージ名}
    &afl={Android用フォールバックリンク(ストアの代わりの割り込み先)}
    &amv={Android用の、リンクを開ける最小のバージョンコード}
    &isi={iOSアプリのストアID}
    &ibi={iOSアプリのバンドルID}
    &ius={iOS用のカスタムスキーム}
    &ifl={iOS用フォールバックリンク}
    &imv={iOS用の、リンクを開ける最小のバージョンコード}
    ... あとiPad用とか広告用とか

    View full-size slide

  11. どうやって作るの?
    短縮APIに投げる
    POST
    https://firebasedynamiclinks.googleap
    is.com/v1/shortLinks?key={api_key}
    Content-Type: application/json

    View full-size slide

  12. どうやって作るの?
    {
    "dynamicLinkInfo": {
    "dynamicLinkDomain": "abc123.app.goo.gl",
    "link": "https://example.com/",
    "androidInfo": {
    {
    "androidPackageName": "com.example.android"
    }
    },
    "iosInfo": {
    {
    "iosBundleId": "com.example.ios"
    }
    }
    }
    }
    Jsonの中身: パラメータ別に

    View full-size slide

  13. どうやって作るの?
    Jsonの中身: 長いのそのまま
    {
    "longDynamicLink":
    "https://abc123.app.goo.gl/?link=https://example.com/&apn=com
    .example.android&ibi=com.example.ios"
    }

    View full-size slide

  14. どうやって作るの?
    FirebaseConsoleのウィザード

    View full-size slide

  15. どうやって作るの?
    クエリにd=1でデバッグ

    View full-size slide

  16. 使い方は?
    How to use?

    View full-size slide

  17. ✎ https://{Firebaseプロジェクトの固有ドメイン}で
    起動できるようにしておく
    - (iOS→ユニバーサルリンク、スキーム起動)
    - (Android→Intent Filterでスキーム起動)
    ✎ ディープリンク起動時にDynamicLinksの確

    ✎ DynamicLinksからディープリンクを
    取得して処理
    使い方は?

    View full-size slide

  18. 作ったリンクは…
    ✎ 例えばSNSにシェアしてみたり
    ✎ 物理的にQRカード作って配ったり
    ✎ リンクごとにAnalyticsも取れる
    使い方は?

    View full-size slide

  19. 複数のプラットフォームにまたがるアプリに、
    共通のリンクで何かを共有させたい時に
    すごく有用だと思う。

    View full-size slide

  20. ご静聴ありがとうございました

    View full-size slide