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://以降を記載してください。)
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を開くとこのような絵がみれます。
ユーザの条件に応じてどのリンクが開かれるのかなどが視覚的に見えるので便利そうです。Firebase Dynamic Linksの後ろに?d=1
を付与することでリンクでもpreviewLinkを確認することができます。
AndroidがAppVersionで分岐しているのは、GAS上でandroidMinPackageVersionCode: 10
と指定したためです。