LoginSignup
13
6

More than 3 years have passed since last update.

Firebase Dynamic LinksをGASで実装する

Last updated at Posted at 2018-06-04

GoogleのURL短縮サービスが終了することを受けて、Firebase Dynamic Linksに差し替えることにしました。
https://goo.gl/

具体的には、こちらで実装したものをFirebase Dynamic Linksで置き換えます。
GASから短縮URL付きで自動ツイートする

先に最終的なコードを紹介しておきます。

API_KEY = 'xxxxxxxxxxxx';
DOMAIN = 'XXXX.app.goo.gl;
ANDROID_PACKAGE = 'com.hoge.xxxx;
IOS_BUNDLE_ID = 'com.hoge.xxxx;

function urlShortener(url) {
  var apiUrl  = 'https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key='+API_KEY;
  var payload = { dynamicLinkInfo: {
    dynamicLinkDomain: DOMAIN,
    link: url,
    androidInfo: {
      androidPackageName: ANDROID_PACKAGE,
      androidFallbackLink: XXXX,
      androidMinPackageVersionCode: '10',
      androidLink: XXXXX
    },
    iosInfo: {
     iosBundleId: IOS_BUNDLE_ID,
     iosFallbackLink: XXXX,
     iosCustomScheme: XXXX,
     iosIpadFallbackLink: XXXX,
     iosIpadBundleId: XXXX,
     iosAppStoreId: XXXX
    }
  }};

  var options = {
        method: 'POST',
        contentType: 'application/json',
        payload: JSON.stringify(payload),
        muteHttpExceptions: true
      }
  var response = UrlFetchApp.fetch(apiUrl, options);
  if (response.getResponseCode() !== 200) {
    throw new Error('cannot shorten url.');
  } else {
    return JSON.parse(response).shortLink;
  }
}

公式ドキュメントはこちら
以下で各パラメータを解説していきます。

API KEY

API_KEYは以下の手順で作成できます。
https://console.cloud.google.com/apis/credentials
「認証情報」タブ>「認証情報を作成」ボタン>「APIキー」から作成
作成済みの場合は認証情報タブにAPIキーとして記載されていると思います。

Dynamic Link Domain

DOMAINはconsoleを開くと下記のようにDynamic Link Domainが表示されているので、これを指定してください。(コードにはhttps://以降を記載してください。)
スクリーンショット 2018-06-04 13.42.07.png

androidPackageName / androidLink

AndroidのDeep Linkで使用するパラメータです。packageNameは、アプリを持っていない場合にストアのリンクへ遷移させるためにも使用されます。

iosBundleId / iosCustomScheme

iOSのDeep Linkで使用するパラメータです

iosAppStoreId

iosアプリを持っていない場合、ストアに遷移させる際に使用されるIDです。

android/ios/iosIpadFallbackLink

アプリがinstallされていなかった場合のランディングページを指定します。普通はストアページで問題ないと思いますが、アプリ専用のページにランディングさせたい場合はこちらを指定すると、アプリ非インストール時にこちらに遷移します。

androidMinPackageVersionCode

バージョンで挙動を振り分けたい場合はこちらを指定します。OSではなく、アプリバージョンとなります。

返却値

GASから投げると以下のような返却値が得られます。
基本的にはshortLinkをそのまま短縮URLとして使えば問題ありません。
注意点としては、既存のGoogle短縮URLよりは長くなってしまいますが、その分DeepLinkなどできることは増えています。

{
  "shortLink": "https://(ドメイン名)/(短縮URL)",
  "previewLink": "https://(ドメイン名)/(短縮URL)?d=1"
}

また、previewLinkを開くとこのような絵がみれます。
スクリーンショット 2018-06-04 13.51.17.png
ユーザの条件に応じてどのリンクが開かれるのかなどが視覚的に見えるので便利そうです。Firebase Dynamic Linksの後ろに?d=1を付与することでリンクでもpreviewLinkを確認することができます。
AndroidがAppVersionで分岐しているのは、GAS上でandroidMinPackageVersionCode: 10 と指定したためです。

13
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
6