0

アプリで firebase ダイナミック リンクを設定しようとしていますが、いくつかの問題に直面しています。

私は次のことを行いました: 1. Firebase コンソールのセットアップが完了しました。2.マニフェストの私のコード:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.manpsing.deeplinkdemo">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </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="https"/>
            </intent-filter>
            <!-- [END link_intent_filter] -->
        </activity>
    </application>

</manifest>
  1. 主な活動のコード:

    public class MainActivity extends AppCompatActivity implement GoogleApiClient.OnConnectionFailedListener {

    private static final String TAG = "MainActivity";
    private static final String DEEP_LINK_URL = "https://example.com/deeplinks";
    
    // [START define_variables]
    private GoogleApiClient mGoogleApiClient;
    // [END define_variables]
    
    // [START on_create]
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // [START_EXCLUDE]
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        // Validate that the developer has set the app code.
        validateAppCode();
    
        // Create a deep link and display it in the UI
        final Uri deepLink = buildDeepLink(Uri.parse(DEEP_LINK_URL), 0, false);
        ((TextView) findViewById(R.id.link_view_send)).setText(deepLink.toString());
    
        // Share button click listener
        findViewById(R.id.button_share).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                shareDeepLink(deepLink.toString());
            }
        });
        // [END_EXCLUDE]
    
        // [START build_api_client]
        // Build GoogleApiClient with AppInvite API for receiving deep links
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .enableAutoManage(this, this)
                .addApi(AppInvite.API)
                .build();
        // [END build_api_client]
    
        // [START get_deep_link]
        // 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(AppInviteInvitationResult result) {
                                if (result.getStatus().isSuccess()) {
                                    // Extract deep link from Intent
                                    Intent intent = result.getInvitationIntent();
                                    String deepLink = AppInviteReferral.getDeepLink(intent);
    
                                    // Handle the deep link. For example, open the linked
                                    // content, or apply promotional credit to the user's
                                    // account.
    
                                    // [START_EXCLUDE]
                                    // Display deep link in the UI
                                    ((TextView) findViewById(R.id.link_view_receive)).setText(deepLink);
                                    // [END_EXCLUDE]
                                } else {
                                    Log.d(TAG, "getInvitation: no deep link found.");
                                }
                            }
                        });
        // [END get_deep_link]
    }
    
  2. 私のstrings.xmlファイルは次のようなものです:

    ディープリンクのデモ

    <!--
      Your app code, see:
      https://firebase.google.com/docs/dynamic-links/android
    -->
    <string name="app_code">pgm3j</string>
    
    
    <string name="share">Share</string>
    <string name="title_receive">Receive</string>
    <string name="title_send">Send</string>
    <string name="msg_no_deep_link">No deep link received.</string>
    

これで動的リンクを作成していないと思います。作成方法を教えてください。また、この動的リンクの使用方法、つまり、開く必要がある URL とそのリンク先を教えてください。

さらに、このアプリをデバイスにインストールしようとすると、インストールされません。インストールされない理由がわかりません。

ありがとう

4

1 に答える 1

0

Dynamic Links の処理には 2 つのビットがあります。

1) 通常のディープリンクの処理

これは、アプリで URL を処理できるようにすることを意味します。のインテント フィルタを追加しましたexample.com。これは正しい方向ですが、そこにあるドメインに置き換える必要があります。お持ちでない場合は、Firebase プロジェクトに付属の [yourproject].firebaseapp.com を使用できます。

2) 受信した URL を解析する

AppInviteApi開いた URL から生成されたインテントを解析し、ディープリンクを抽出します。実稼働アプリの場合、同じコードで Play ストアを介して渡されたデータも取得されるため、ユーザーがアプリをインストールする必要がある場合でもリンクは機能します。

最後に、リンクを生成する最も簡単な方法は、 Firebase Consoleの動的リンク部分を使用することです。

于 2016-12-20T23:23:25.180 に答える