10

私はアンドロイドアプリを開発しています。

ボタンをクリックすると、ディープリンクが生成され、友人と共有されます。

問題は、その共有ディープリンクをクリックすると、アプリがインストールされていても Play ストアが開かれることです。

このドキュメントに従いました。

は次のintent-filterとおりです。

            <!-- [START link_intent_filter] -->
            <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:host="example.com" android:scheme="http"/>
                <data android:host="example.com" android:scheme="https"/>
            </intent-filter>
            <!-- [END link_intent_filter] -->

URLを(手動で)作成する方法は次のとおりです。

        Uri BASE_URI = Uri.parse("https://domainname.com/");
        packageName = getBaseContext().getPackageName();
        APP_URI = BASE_URI.buildUpon().path(requestID.getText().toString().trim())
             .appendQueryParameter("query1", query1.getText().toString())
             .appendQueryParameter("query2", query2.getText().toString())
             .appendQueryParameter("query3", query3.getText().toString()).build();

        try {
           String encodedUri = URLEncoder.encode(APP_URI.toString(), "UTF-8");
           deepLink = Uri.parse("https://myappcode.app.goo.gl/?link="+encodedUri+"&apn="+holder.packageName+"&amv="+16+"&ad="+0);
        } catch (UnsupportedEncodingException e) {
           e.printStackTrace();
        }

受信したディープリンク/URL は次のとおりです。 http://domainname.com/-KcldzAeJHrPS5tnfxTk?query1=query1&query2=query2&query3=query3

ここで何が問題なのですか?

4

1 に答える 1

1

間違っている可能性があることが少なくとも 3 つあります。

URL を開く方法: Android デバイスのブラウザー ウィンドウに URL を書き込むときに、同様の問題が発生しました。リンクをメールに追加してクリックすると、アプリが開きました。「クリック」と書いているので、おそらくこれは問題ではありません。

URL とアプリ/マニフェストが一致しません: プロトコルまたはホストの適切なインテント ハンドラーをマニフェストの正しい場所に追加していないか、URL が追加したものと一致しません。または、URL で指定された apn がアプリのパッケージ名と一致しません。現在の状態での質問に基づいて、ホストは一致しません。

ディープリンク URL を共有しているのではなく、通常の URL だけを共有している: 共有 URL がプリインストールされたアプリを開くことを期待している場合、友人は完全なディープリンク URL をクリックする必要があります (電子メールなどで)。 Play ストア (アプリがインストールされていない場合) またはアプリを開きます (正しく実装されている場合)。通常の URL はブラウザで開くだけです。質問の現在の状態に基づいて、これが当てはまる可能性があります。

上記の修正がうまくいかない場合:次の ような特定の Android リンクを URL に追加してみてください:

https://<myappcode>.app.goo.gl/?link=http://domainname.com&apn=com.doman.app&amv=16&ad=0&al=myscheme://any-string-you-choose

その後、インテント フィルターは次のようになります。

     <!-- [START link_intent_filter] -->
        <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:host="any-string-you-choose" android:scheme="myscheme"/>
        </intent-filter>
        <!-- [END link_intent_filter] -->

リンクのみを使用するよりも少し柔軟性があるため、私はこの方法を好みます。当然、この方法を使う場合もパッケージ名などは正確である必要があります。Android リンクは、Android アプリでのみ開く URL です。ドキュメントが少し不十分です。ここから確認してください(例)。また、別の質問に対する私の回答には、使用方法の例がいくつかあります。

(編集 19.3.2018) Firebase は「al=」を完全にはサポートしていないようです。コードは機能しますが、ドキュメントと Firebase コンソールで生成された URL にはありません。

于 2016-08-05T09:50:40.340 に答える