web-dev-qa-db-ja.com

Android URIスキームとアプリリンク

AndroidアプリリンクはAndroid 6.0からのみ機能します。Android 4.2からのディープリンクとは異なりますが、動作とコーディングの違いは何ですか?

ドキュメントを読みましたが、違いはわかりませんでした。

ディープリンク: https://developer.Android.com/training/app-indexing/deep-linking.html

アプリリンク: https://developer.Android.com/training/app-links/index.html

15
Igor Kostenko

URIスキームディープリンク(Android 4.2)

標準のURIスキームのディープリンク(Android 4.2)を使用すると、開発者はアプリをURIスキーム(pinterest://など)に登録でき、ユーザーがこのリンクをクリックしてアプリをインストールすると、アプリが開きます。アプリがインストールされていない場合、「ページが見つかりません」エラーが発生します。

アプリを登録して、マニフェストのインテントフィルターを介して特定のURIに応答します。

<intent-filter>
    <data Android:scheme="your_uri_scheme" />
    <action Android:name="Android.intent.action.VIEW" />
    <category Android:name="Android.intent.category.DEFAULT" />
    <category Android:name="Android.intent.category.BROWSABLE" />
</intent-filter>

次に、特定のアクティビティからインテント文字列を取得してリンクを処理します。

Uri data = this.getIntent().getData();
if (data != null && data.isHierarchical()) {
    String uri = this.getIntent().getDataString();
    Log.i("MyApp", "Deep link clicked " + uri);
}

注:ユーザーがChromeからアクセスしている場合、個別の処理を含める必要があります。Chromeがアプリがインストールされていない場合、Playストアに移動するか、(オプションで)フォールバックURLを提供します

アプリリンク(Android 6.0)

アプリリンクは、iOSユニバーサルリンクの機能を複製するために導入されました。アプリリンクは、ウェブサイトのリンクをアプリリンクに変える簡単な方法です。したがって、通常のHTTP/HTTPSリンクをクリックして対応するアプリをインストールすると、すぐに開きます。アプリがインストールされていない場合、フォールバックWebリンクが提供されます。

要件

  • 機能的なウェブサイトが必要です
  • ユーザーはAndroid 6.0

構成

アプリリンクの場合、マニフェストは少し異なります。

<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="http" Android:Host="yoursite.com" />
    <data Android:scheme="https" Android:Host="yoursite.com" />
</intent-filter>

次に、アプリリンクを処理するためにWebサイトを登録する必要があります。あなたはassetlinks.jsonファイルを作成し、yoursite.com/.well-known/assetlinks.comであなたのウェブサイトでそれをホストする必要があります

/。well-known/assetlinks.com

[{
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
         "namespace": "Android_app",
         "package_name": "io.branch.branchster",
         "sha256_cert_fingerprints": 
        ["14:6D:E9:..."]
    }
}]

据え置きディープリンク

残念ながら、これらの方法はいずれも遅延ディープリンクをサポートしていません。これは、アプリがまだインストールされていないときにアプリ内のコンテンツにディープリンクする機能です。これは新規ユーザーのオンボーディングにとって重要なユーザーエクスペリエンスであるため、私は Branch (Branchで働く完全な開示)またはFirebaseなどのサードパーティを使用することを提案しました。これらはすべての機能とEdgeケースを処理するだけでなく、興味がある場合はディープビューやアプリバナーなどの他の機能も含みます。

15
clayjones94