web-dev-qa-db-ja.com

Firebaseの招待をどのようにテストしますか?

動的リンクまたは招待をどのようにテストしますか?実行できるadbコマンドはありますか?また、そのリンクはどのように生成されますか?.

試してみました(さまざまなバリエーションで)

adb Shell am start -W -a Android.intent.action.VIEW -d "https://play.google.com/store/apps/details?id=com.gonevertical.chatterbox\\&pcampaignid=appinvite_\\&referrer=deep_link_id%3Dhttps://gonevetical.com/chatterbox/invite/group/-KJnkQfRjZfAH9-U_U4a%26invitation_id%3D20832144509-9642991a-de62-4d40-ba93-b991208c2d31" com.gonevertical.chatterbox

プロジェクトhttps://github.com/branflake2267/chatterbox/blob/master/Android/app/src/main/AndroidManifest。 xml

14
Brandon

招待状のテストを開始する前に、次のことを行う必要があります。

  1. アプリをFirebaseプロジェクトに接続し、 Firebase console から接続します。
  2. Firebase Dynamic Linksを有効にします。 Firebase console から、[Dynamic Links]セクションを開き、プロンプトが表示されたら利用規約に同意します。
  3. FirebaseをAndroidプロジェクト に追加します。
  4. FirebaseInvitesの依存関係をアプリレベルのbuild.gradleファイルに追加します。

Gradleファイル:

compile 'com.google.firebase:firebase-invites:9.0.2'

招待状を送信する

AppInviteInvitation.IntentBuilder クラスを使用してIntentを作成します。

private void onInviteClicked() {
    Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.string.invitation_title))
            .setMessage(getString(R.string.invitation_message))
            .setDeepLink(Uri.parse(getString(R.string.invitation_deep_link)))
            .setCustomImage(Uri.parse(getString(R.string.invitation_custom_image)))
            .setCallToActionText(getString(R.string.invitation_cta))
            .build();
    startActivityForResult(intent, REQUEST_INVITE);
}

AppInviteInvitationインテントを起動すると、連絡先チューザーが開き、ユーザーは招待する連絡先を選択します。招待状は電子メールまたはSMSで送信されます。ユーザーが連絡先を選択して招待状を送信すると、アプリはonActivityResultへのコールバックを受信します。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Log.d(TAG, "onActivityResult: requestCode=" + requestCode + ", resultCode=" + resultCode);

    if (requestCode == REQUEST_INVITE) {
        if (resultCode == RESULT_OK) {
            // Get the invitation IDs of all sent messages
            String[] ids = AppInviteInvitation.getInvitationIds(resultCode, data);
            for (String id : ids) {
                Log.d(TAG, "onActivityResult: sent invitation " + id);
            }
        } else {
            // Sending failed or it was canceled, show failure message to the user
            // ...
        }
    }
}

招待状を受け取る

ユーザーが招待状を受け取ったときに、ユーザーがまだアプリをインストールしていない場合は、GooglePlayストアからアプリをインストールすることを選択できます。次に、アプリがインストールされた後、またはアプリがすでにインストールされている場合は、アプリが起動し、コンテンツのURLを送信した場合はそのURLを受け取ります。アプリのコンテンツへのURLを受け取るには、getInvitationメソッドを呼び出します。

@Override
protected void onCreate(Bundle savedInstanceState) {
    // ...

    // Create an auto-managed GoogleApiClient with access to App Invites.
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addApi(AppInvite.API)
            .enableAutoManage(this, this)
            .build();

    // Check for App Invite invitations and launch deep-link activity if possible.
    // Requires that an Activity is registered in AndroidManifest.xml to handle
    // deep-link URLs.
    boolean autoLaunchDeepLink = true;
    AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink)
            .setResultCallback(
                    new ResultCallback<AppInviteInvitationResult>() {
                        @Override
                        public void onResult(AppInviteInvitationResult result) {
                            Log.d(TAG, "getInvitation:onResult:" + result.getStatus());
                            if (result.getStatus().isSuccess()) {
                                // Extract information from the intent
                                Intent intent = result.getInvitationIntent();
                                String deepLink = AppInviteReferral.getDeepLink(intent);
                                String invitationId = AppInviteReferral.getInvitationId(intent);

                                // Because autoLaunchDeepLink = true we don't have to do anything
                                // here, but we could set that to false and manually choose
                                // an Activity to launch to handle the deep link here.
                                // ...
                            }
                        }
                    });
}

重要:上記のコードでは、AppInvite.APIが有効になっている接続済み GoogleApiClient が必要です。

launchDeepLinkパラメーターがtrueの場合、アプリはアプリのコンテンツへのURLで自動的に再起動します。これは、アプリが通常どおり処理できます。 launchDeepLinkパラメータがfalseの場合、 getInvitationIntent によって返されるインテントを手動で開始して、必要に応じてURLを処理できます。

ホットから FirebaseInvitesをあなたのAndroid App から送受信する)に関する詳細情報は次のとおりです。

Android Studioでのリンクテスト

また、Android Studioバージョン2.x機能のディープリンクテスト機能を使用して、指定したURLでアプリを起動できることを確認できます。これを設定するには、最初に実行>構成の編集 Androidアプリケーション>一般セクションから。HTTPURLをテストするには、ディープリンクを選択します。 Launch Options で、テストするURLを入力します。リンクが成功した場合、アプリはエミュレーターまたは接続されたデバイスで起動します。それ以外の場合は、エラーメッセージが表示されます。 実行ウィンドウ。

Androidデバッグブリッジ

Android Debug Bridgeを使用して、リンクがアプリを開くことをテストします。ここで、{URL}はアプリマニフェストで宣言されたHTTPURLを表します。

adb Shell am start -a Android.intent.action.VIEW -d "{URL}" com.example.Android

link で、実装をテストする方法についての詳細があります。

10

FireBaseコンソールでリンクを生成し、リンクをメールにコピーし、デバイスでメールを開いて、デバイス上のリンクをクリックすることで、それらをテストしました。その方法でアプリを確認できます。

リンクをデバッグする場合も同じようにしますが、短いリンクではなく完全なリンクを電子メールにコピーして、完全なリンクのバリエーションを試してください。

3
diidu

賞金獲得の回答のコメントに投稿されたリンクで、以下を見つけました。これにより、招待状を受け取り、招待状からの新規インストールを処理するコードをテストできます。

友人からの招待状の受信をシミュレートするには、自分に招待状を送信し、テストアプリをアンインストールしてから、電子メール内のリンクをクリックします。

これにより、通常、アプリをダウンロードするためにPlayストアまたはAppStoreに移動します。これはテストアプリであるため、存在しないストアページにリンクします。

招待リンクをクリックした後、デバイスまたはエミュレーターにアプリを再インストールして実行し、受信側でフェッチされた招待状を確認します。

1
staackuser2

私はstaackuser2と同じように、1つの言及がありました。 GooglePlayのクローズドアルファ/ベータでアプリを公開できます。テスターリストに自分と別のメールアカウントを追加します。そうすれば、アプリはテスターとして登録された両方のデバイスのGooglePlayに表示されます。次に、2つのアカウント間で招待状を送信できます。メール内のリンクをクリックすると、AppStoreのアプリに移動します。インストールすると、アプリの起動時に招待ID(およびプロモーションコードなどの他のディープリンク情報の可能性)を確認できます。

0
Mircea Rila