成長
ディープリンク
ディープリンクは、チャレンジ、紹介の招待、商品ページなど、インストール済みのアプリ内の特定の画面を開きます。アプリがインストールされていない場合は、スマートリンクと同じように訪問者をストアに送ります。ディープリンクはPro、Studio、買い切りで利用できます。Universal LinksとAndroid App Linksには、Studioに含まれるカスタムドメインも必要です。
ディープリンクの仕組み
スマートリンクに/open/とアプリ内のパスを追加します。クエリ文字列も引き継がれます。
https://mapps.one/habitly/open/challenges/30-days?ref=newsletter
| 訪問者 | 動作 |
|---|---|
| iOS URLスキームが設定されているiPhoneまたはiPad | 短いページがhabitly://challenges/30-days?ref=newsletterを開こうとします。アプリがインストールされていない場合、訪問者はそのままApp Storeに進みます。 |
| パッケージ名が設定されているAndroidまたはHuawei | 短いページが、同じパスに対してお客様のパッケージに限定したAndroidインテントを開きます。Chromeは、アプリがインストールされていればアプリを開き、インストールされていなければGoogle Playへのフォールバックに従います。 |
| そのプラットフォームのディープリンク設定がないスマートフォンまたはタブレット | フォールバック先に直接リダイレクトされます。 |
| デスクトップコンピューターとボット | クエリ文字列を保持したまま、スマートリンクにリダイレクトされます。 |
フォールバック先は、リダイレクトルールに従ってスマートリンクがそのデバイスを送る先で、UTMタグも転送されます。そのプラットフォームにストアリンクがない場合、フォールバック先はランディングページになります。ディープリンクがまったく設定されていない場合や、プランにディープリンクが含まれていない場合は、すべての訪問者がスマートリンクにリダイレクトされます。
パスには、英字、数字、/ _ - . ~ %の文字を使用できます。それ以外の文字は削除されるため、スペース(%20)などはパーセントエンコードしてください。
設定
アプリのディープリンクタブを開き、対応するプラットフォームの項目を入力します。
| 項目 | 例 | 用途 |
|---|---|---|
| iOS URLスキーム | habitly:// | iPhoneとiPadで、リダイレクトページからアプリを開く |
| Apple Team ID | A1B2C3D4E5 | Universal Links。Apple Developerアカウントの「Membership details」に記載されている10文字のIDです。 |
| iOSバンドルID | com.habitly.app | Universal Links |
| Androidパッケージ名 | com.habitly.app | AndroidデバイスとHuaweiデバイスでアプリを開く |
| Androidスキーム | habitly | インテントフィルターが処理するスキーム |
| SHA-256証明書フィンガープリント | 14:6D:E9:83:...:44:E5 | Android App Links。1つ以上追加でき、カンマ、スペース、改行で区切ります。 |
habitlyなど)を設定してください。空欄の場合はhttpsが使用され、パスの最初の部分がホストになります(https://challenges/30-days)。これは、インテントフィルターがその形式を想定している場合にのみ機能します。アプリにスキームを登録する
iOSでは、Info.plistに次のように記述します。
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>habitly</string>
</array>
</dict>
</array>
Androidでは、AndroidManifest.xmlに次のように記述します。
<activity android:name=".MainActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="habitly" />
</intent-filter>
</activity>
アプリでは、受け取ったURLを読み取って対応する画面に遷移し、必要なクエリパラメーターを読み取ります。URLは人の手で編集されることがあるため、不明なパスはホーム画面に送ってください。
Universal LinksとAndroid App Links
スキームを使ったリンクでは最初に短いリダイレクトページが表示され、iOSでは訪問者に確認を求める場合があります。検証済みのリンクではこの手順が省略され、アプリがインストールされていれば、システムが直接アプリを開きます。検証にはそのアプリ専用のドメインが必要なため、カスタムドメインで利用できます。get.habitly.appを接続すると、mapps.oneが関連付けファイルを自動的に配信します。
| ファイル | 生成元 |
|---|---|
https://get.habitly.app/.well-known/apple-app-site-association( /apple-app-site-associationでも配信) | Apple Team IDとバンドルID |
https://get.habitly.app/.well-known/assetlinks.json | Androidパッケージ名とSHA-256フィンガープリント |
Appleのファイルは、/open/以下のすべてのパスを対象にします。
{
"applinks": {
"details": [
{
"appIDs": ["A1B2C3D4E5.com.habitly.app"],
"components": [
{ "/": "/open/*", "comment": "Deep links created with mapps.one" }
]
}
]
},
"webcredentials": { "apps": ["A1B2C3D4E5.com.habitly.app"] }
}
Androidのファイルは次のとおりです。
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.habitly.app",
"sha256_cert_fingerprints": [
"14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"
]
}
}
]
各ファイルは、項目が有効な値になるまで「404 Not Found」を返します。Appleの場合は10文字のTeam IDとバンドルID、Androidの場合はパッケージ名と、AA:BB:...形式(32組)のフィンガープリント1つ以上が必要です。フィンガープリントにはPlay Console → App integrityにあるPlay App Signing鍵のものを使用し、ローカルで署名したビルドをテストする場合はアップロード鍵のものも追加してください。ファイルは1時間キャッシュされます。Appleも自社のサーバーでファイルをキャッシュするため、変更をテストするときはアプリを再インストールしてください。
アプリを設定する
iOS:applinks:get.habitly.appを指定して、Associated Domainsケイパビリティを追加します。
Android:ドメイン用に、検証付きのインテントフィルターを追加します。
<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="https" android:host="get.habitly.app" android:pathPrefix="/open/" />
</intent-filter>
その後、キャンペーンでhttps://get.habitly.app/open/challenges/30-daysのようなリンクを使用します。アプリがインストールされていない場合はブラウザでページが読み込まれ、同じフォールバックの流れが実行されます。
mapps.oneは多くのアプリで共有されているため、関連付けファイルはカスタムドメインでのみ配信されます。mapps.one/habitly/open/のリンクも、リダイレクトページを経由して引き続き機能します。ダッシュボードとAPIに表示されるディープリンクのURLにはmapps.oneが使われているため、検証済みリンクを使いたい場合は、ホストを独自のドメインに置き換えてください。分析
ディープリンクのオープンには、スマートフォンやタブレットが/open/ URLを読み込み、mapps.oneがアプリを開こうとしたときのオープンがカウントされます。ストアへのフォールバックが二重にカウントされることはありません。アプリを直接開く検証済みリンクはmapps.oneに到達しないため、カウントされません。それらについては、アプリ独自の分析をご利用ください。