Android
深いリンクの処理
サーチ…
前書き
ディープリンクとは、ユーザーをアプリ内の特定のコンテンツに直接誘導するURLです。インテントフィルタを追加し、受信インテントからデータを抽出して、ユーザーをアプリの正しい画面に誘導することで、ディープリンクを設定できます。
パラメーター
<data> 属性 | 詳細 |
---|---|
スキーム | URIのスキーム部分(大文字小文字を区別する)。例: http 、 https 、 ftp |
ホスト | URIのホスト部分(大文字小文字を区別する)。例: google.com 、 example.org |
港 | URIのポート部分。例: 80 、 443 |
パス | URIのパス部分。 / 始まる必要があります。例: / 、 /about |
pathPrefix | URIのパス部分の接頭辞。例: /item 、 /article |
パスパターン | URIのパス部分に一致するパターン。例: /article/[0-9]* /item/.* /article/[0-9]* |
mimeType | 一致するMIMEタイプ。例: image/jpeg 、 audio/* |
備考
<intent-filter>
この<action>
要素と<category>
要素の組み合わせは、ユーザーが別のアプリケーションのリンクをクリックしたときに特定のアクティビティを起動する必要があることをAndroidシステムに通知するものです。
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data ... />
</intent-filter>
複数の<data>
タグ
<intent-filter>
サポートする一連のディープリンクは、そのインテントフィルタで定義するすべての<data>
要素の外積です。複数のドメイン、複数のパス、複数のスキームの例がこれを実証しています。
リソース
- アプリコンテンツのディープリンクを有効にする (developer.android.com)
-
<intent-filter>
(developer.android.com
シンプルなディープリンク
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<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="http"
android:host="www.example.com" />
</intent-filter>
</activity>
これにより、 MainActivity
を開始するための深いリンクとしてhttp://www.example.com
から始まるすべてのリンクが受け入れられます。
1つのドメイン上の複数のパス
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<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="http"
android:host="www.example.com" />
<data android:path="/" />
<data android:path="/about" />
<data android:path="/map" />
</intent-filter>
</activity>
ユーザーが次のいずれかのリンクをクリックするとMainActivity
が起動します:
-
http://www.example.com/
-
http://www.example.com/about
-
http://www.example.com/map
複数のドメインと複数のパス
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<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="http"
android:host="www.example.com" />
<data android:scheme="http"
android:host="www.example2.com" />
<data android:path="/" />
<data android:path="/map" />
</intent-filter>
</activity>
ユーザーが次のいずれかのリンクをクリックするとMainActivityが起動します:
-
http://www.example.com/
-
http://www.example2.com/
-
http://www.example.com/map
-
http://www.example2.com/map
同じドメインのhttpとhttpsの両方
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<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="http" />
<data android:scheme="https" />
<data android:host="www.example.com" />
<data android:path="/" />
<data android:path="/map" />
</intent-filter>
</activity>
ユーザーが次のいずれかのリンクをクリックするとMainActivityが起動します:
-
http://www.example.com/
-
https://www.example.com/
-
http://www.example.com/map
-
https://www.example.com/map
クエリパラメータの取得
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = getIntent();
Uri data = intent.getData();
if (data != null) {
String param1 = data.getQueryParameter("param1");
String param2 = data.getQueryParameter("param2");
}
}
}
ユーザーがhttp://www.example.com/map?param1=FOO¶m2=BAR
へのリンクをクリックすると、 param1
の値は"FOO"
なり、 param2
の値は"BAR"
ます。
pathPrefixの使用
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<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="http"
android:host="www.example.com"
android:path="/item" />
</intent-filter>
</activity>
これにより、ユーザーがhttp://www.example.com/item
で始まるリンクをクリックするとMainActivityが起動します。
-
https://www.example.com/item
-
http://www.example.com/item/1234
-
https://www.example.com/item/xyz/details