17

デバイスでローカルに Android アプリを開発しました (Android Play ストアにはまだアプリがありません)。MainActivity でディープ リンクを取得するための次のロジックがあります。

GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this, null)
            .addApi(AppInvite.API)
            .build();

    // Check if this app was launched from a deep link. Setting autoLaunchDeepLink to true
    // would automatically launch the deep link if one is found.
    boolean autoLaunchDeepLink = false;
    AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink)
            .setResultCallback(
                    new ResultCallback<AppInviteInvitationResult>() {
                        @Override
                        public void onResult(@NonNull AppInviteInvitationResult result) {
                            if (result.getStatus().isSuccess()) {
                                // Extract deep link from Intent
                                Intent intent = result.getInvitationIntent();
                                String deepLink = AppInviteReferral.getDeepLink(intent);

                                Toast.makeText(getApplicationContext(), deepLink, Toast.LENGTH_LONG).show();
                                // Handle the deep link. For example, open the linked
                                // content, or apply promotional credit to the user's
                                // account.

                                // ...
                            } else {
                                Log.d(TAG, "getInvitation: no deep link found.");
                            }
                        }
                    });

Firebase コンソールを使用していくつかの動的リンクを作成し、モバイル ブラウザーで開きました。しかし、それは私のアプリを開いて行に到達していません String deepLink = AppInviteReferral.getDeepLink(intent);

代わりに、モバイル ブラウザ自体で URL を開いています。

firebaseダイナミックリンクを使用しているときに、アプリを開いてアクティビティのディープリンクを処理する方法は??

編集:

マニフェスト ファイルにインテント フィルターがあります。

<activity android:name="MainActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
            <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>
    </activity>
4

5 に答える 5

3

2019年1月更新

アプリの SHA256 証明書フィンガープリントが Firebase コンソールのプロジェクトに追加されていることを確認します。

AndroidManifest.xml のランチへの動的リンクが必要なアクティビティの下に、以下のコードを追加します。

    <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:host="mydomainname.page.link" android:scheme="http"/>
       <data android:host="mydomainname.page.link" android:scheme="https"/>
   </intent-filter>
  • Android 6.0 (API レベル 23) 以下を使用している場合は、android:autoVerify="true"を削除 してください。そうしないと、アプリがクラッシュします。
于 2019-01-02T11:31:17.337 に答える
2

別の回答で説明されているように、インテント フィルターには問題があるようです。また、URL に問題がある可能性があります。あれこれいじっていたら、気が付かないうちに FireBase の Web サイトに間違った URL を作ってしまっていました。アプリで URL 全体を開いてコードをテストすることができます。テストするすべての URL をメールに書き込んで自分宛に送信し、デバイスで開いてクリックし始めました。その後、FireBase で必要な URL を作成できます。以下にいくつかの例を示します (タイプミスやその他のエラーの可能性があります)。

デバイスでこの URL をクリックした場合:

https://<myapp>.app.goo.gl/?link=https://mysite.fi/112972&apn=com.mydomain.myapp

そしてこれをあなたのマニフェストに持っていました:

 <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="https"
            android:host="mysite.fi"
            android:pathPattern=".*" />
    </intent-filter>

アプリ (com.mydomain.myapp) でhttps://mysite.fi/112972を開く必要があり、PC でリンクを開くと、ブラウザーでhttps://mysite.fi/112972が開きます。

デバイスでこの URL を開いた場合:

https://<myapp>.app.goo.gl/?link=https://mysite.fi/112972&apn=com.mydomain.myapp&al=myscheme://mydeeplink/112972&afl=http://fallback.fi

そしてこれをあなたのマニフェストに持っていました:

 <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="myscheme"
            android:host="mydeeplink"
            android:pathPattern=".*" />
    </intent-filter>

アプリ (com.mydomain.myapp) で myscheme://mydeeplink/112972 を開きます。それを処理するためのコードが必要です。アプリがインストールされていない場合、ブラウザーでhttp://fallback.fiが開きます。PC ではまだhttps://mysite.fi/112972が開きます。

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

于 2016-06-03T13:04:22.013 に答える