14

您如何测试动态链接或邀请?是否有可以运行的 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

4

4 回答 4

10

在开始测试邀请之前,您应该:

  1. 将您的应用连接到您的 Firebase 项目,从Firebase 控制台执行此操作。
  2. 启用 Firebase 动态链接,从Firebase 控制台打开动态链接部分并在出现提示时接受服务条款。
  3. 将 Firebase 添加到您的 Android 项目中。
  4. 将 Firebase 邀请的依赖项添加到您的应用级build.gradle文件中:

摇篮文件:

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

发送邀请

Intent使用AppInviteInvitation.IntentBuilder类构建一个:

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意图会打开联系人选择器,用户可以在其中选择要邀请的联系人。邀请通过电子邮件或短信发送。用户选择联系人并发送邀请后,您的应用会收到回调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
            // ...
        }
    }
}

接收邀请

当用户收到邀请时,如果用户尚未安装应用程序,他们可以选择从 Google Play 商店安装应用程序。然后,在安装应用程序之后,或者如果应用程序已经安装,应用程序将启动并接收其内容的 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.
                                // ...
                            }
                        }
                    });
}

重要提示:上面的代码需要连接的GoogleApiClientAppInvite.API启用。

如果launchDeepLink参数是true,应用程序会自动重新启动,并使用您的应用程序内容的 URL,您的应用程序可以正常处理。如果launchDeepLink参数为false,您可以手动启动getInvitationIntent返回的 Intent以在适当的时候处理 URL。

以下是有关从您的 Android 应用程序中热发送和接收 Firebase 邀请的更多信息。

Android Studio 中的链接测试

您还可以使用 Android Studio 2.x 版的深度链接测试功能来验证您的应用是否可以使用指定的 URL 启动。要进行设置,首先从Android 应用程序 > 常规部分选择运行 > 编辑配置。要测试 HTTP URL,请在Launch Options中选择Deep link,然后输入要测试的 URL。如果链接成功,应用程序应在模拟器或连接的设备上启动。否则,运行窗口中会出现一条错误消息。

Android 调试桥

使用 Android Debug Bridge 测试您的链接是否打开了您的应用程序,其中{URL}表示您的应用程序清单中声明的​​ HTTP URL。

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

链接中有更多关于如何测试你的实现的信息。

于 2016-06-21T19:32:35.027 回答
3

我通过在 FireBase 控制台中生成链接、将链接复制到电子邮件、在设备中打开电子邮件并单击设备上的链接来测试它们。您可以通过这种方式验证应用程序。

如果要调试链接,请执行相同操作,但将完整链接复制到电子邮件,而不是简短链接,并尝试完整链接的变体。

于 2016-06-22T11:59:30.477 回答
1

我在赏金获奖答案的评论中发布的链接中找到了以下内容。它允许您接收邀请并测试您处理来自邀请的新安装的代码。

要模拟收到朋友的邀请,您可以向自己发送邀请,卸载测试应用程序,然后单击电子邮件中的链接。

这通常会将您发送到 Play Store 或 App Store 以下载该应用程序。因为这是一个测试应用程序,它会链接到一个不存在的商店页面。

单击邀请链接后,在您的设备或模拟器上重新安装并运行该应用程序,并查看接收方获取的邀请。

于 2016-06-24T10:00:32.880 回答
0

我确实喜欢 staackuser2,只提到过一次。您可以在 Google Play 封闭 Alpha/Beta 版上发布您的应用。将您自己和另一个电子邮件帐户添加到测试人员列表中。这样,对于注册为测试人员的两台设备,该应用程序将在 Google Play 上可见。然后,您可以在两个帐户之间发送邀请。单击电子邮件中的链接将带您进入 App Store 上的应用程序。如果您安装它,您可以在应用启动时检查邀请 ID(以及可能的其他深层链接信息,例如促销代码等)。

于 2016-08-25T18:49:09.240 回答