ユーザーが検索クエリを作成できるWebサイトがあります。クエリが完了するまでに数分かかる場合があります(数分から数日)。ユーザーにAndroidアプリをダウンロードして、そこへのリンクを含むメールを送信して、ユーザー。
ユーザーがアプリをインストールしているかどうかにかかわらず、このメカニズムが機能することを望みます。言い換えると:
https://play.google.com/store/apps/details?id=com.bar.foo&referrer=BlahBlah
)、ユーザーにインストールさせ、識別子引数を指定してアプリを開きます。Android引数付きのアプリケーションを開くリンクを作成する方法はありますか?これは、アプリがインストールされているかどうかにかかわらず動作しますか?
この回避策はうまくいくかもしれません:
サーバー側で、Google Playへのリダイレクトルールを作成します。たとえば、https://www.foo.com/bar/BlahBlah
はhttps://play.google.com/store/apps/details?id=com.bar.foo&referrer=BlahBlah
にリダイレクトします。
アプリで、 サーバー側リンクをディープリンクとして登録 :
<data Android:scheme="https"
Android:Host="www.foo.com"
Android:pathPrefix="/bar" />
これで、アプリがインストールされている場合、URLがキャッチされ、パスを解析してBlahBlah
部分を抽出できます。アプリがインストールされていない場合、リンクを押すと、参照URLを使用してユーザーがPlayストアにリダイレクトされます。
ノート:
/bar/BlahBlah
は&referrer=BlahBlah
に変換されました。これは、PlayストアがURL引数を受け取り、ディープリンクメカニズムがURLパスで機能するためです(私が知る限り)このスキームを使用して試すことができます(ユーザーに送信されます):
intent://details?id=X&url=Y&referrer=Z#Intent;scheme=market;action=Android.intent.action.VIEW;package=com.Android.vending;end";
X:アプリのパッケージ名
Y:アプリのマニフェストで定義する必要があるディープリンクスキーム。 ( this を参照してください)ここでは、このURLを例として使用しています: " http://www.example.com/gizmos "、したがってYはこのURL。
Z:Google Play経由でアプリに渡す任意のデータを指定できます。元のパラメータ自体は「&」で区切られているため、渡すデータは「&」で区切らないでください。
私が実験したところから、このURLはブラウザに認識され、パッケージ名とディープリンクスキームに基づいてアプリにリダイレクトされます。それ以外の場合は、Google Playに移動します。
PS:Google Playはアプリにブロードキャストを行います。そのため、必ず受信機でブロードキャストを受信してください。
この質問はかなり古く、また非常に人気があります。したがって、このユースケースがFirebaseによって公式にサポートされていることを正確に知る価値があります。正確には Firebase Dynamic Links です。
アプリのオープンと遅延ディープリンクのみをサポートします。つまり、アプリのインストール後、アプリの起動時に、アプリのインストールに使用されたデータ(リンク)を取得できます。
App Linkingの上に構築されているため、以前と同じintent-filter
が必要です。
つまり、implementation 'com.google.firebase:firebase-dynamic-links:VERSION'
を追加し、FirebaseDynamicLinks
クラスのインスタンスからリンクを取得する必要があります。
もちろん、Webサイト上のリンクをFirebaseコンソールで生成されたリンクに変更する必要がありますが、これらのリンクは(名前が示すように)「動的」であるため、すべてのシステムで機能します。
すべての詳細情報とそのユースケースのセットアップについては、こちらをご覧ください: https://firebase.google.com/docs/dynamic-links/use-cases/web-to-app
Adamのソリューションは、自分で構築したい場合には非常に優れています。
オープンソースSDK があります。これは、Branch Metricsによってまさにこれを行います(完全な開示、私はそこで働いています)。
基本的に、ブランチダッシュボードでURIスキームを設定し、渡すデータ(この場合はクエリパラメーターですが、決定します)とのリンクを作成します。SDKには、上記のクエリを提供するコールバックを持つメソッドがありますパラメータ(インストールまたは通常のディープリンクを使用して[ブランチ]リンクをクリック)。