2016-06-14 68 views
14

你如何测试动态链接或邀请?是否有可以运行的adb命令,以及该链接将如何生成。你如何测试Firebase邀请?

我试过(用不同的变化)

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

+0

我尝试过使用adb shell,您将测试安装引用程序的方式,但似乎不起作用。作为参考:'广播-a com.android.vending.INSTALL_REFERRER -n {com.your.package} /com.tune.TuneTracker - 引用者“test_referrer = test”' – staackuser2

+0

我知道这不是一个有用的评论,更多的咆哮:我已经发现测试firebase是相当糟糕的,因为:总是事后......我希望它会随着时间的推移而改善,因为他们做了那些奇妙的代码段等(我承认这真的很棒) – Creos

+0

@Creos同意了。我对缺乏文档和例子感到有些震惊。我已经看到了Github上的那些,但这个问题是他们说它支持的实际用例的一个例子,但实际上并没有说明如何去做。 – staackuser2

回答

8

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

  1. 您的应用程序连接到您的Firebase项目,请从开始3210。
  2. 启用Firebase动态链接,从Firebase console开启动态链接部分并接受服务条款(如果提示),请执行此操作。
  3. Add Firebase to your Android project
  4. 添加依赖于火力地堡邀请到您的应用程序级build.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意图打开用户选择要邀请的联系人的联系选择器。邀请通过电子邮件或短信发送。用户选择联系人和发送之后的邀请,您的应用程序将收到回调到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(如果已发送)。要接收您的应用网址的内容,调用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. 
           // ... 
          } 
         } 
        }); 
} 

重要提示:上述代码需要连接GoogleApiClient启用AppInvite.API

如果launchDeepLink参数是true,该应用程序会自动与您的应用网址的内容,您的应用可以正常处理重新登场。如果launchDeepLink参数是false,则可以手动启动由getInvitationIntent返回的意图以在适当时处理URL。

这是关于热到Send and Receive Firebase Invites from Your Android App的更多信息。

链路测试Android Studio中

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

的Android调试桥

测试您的链接中使用Android调试桥,其中{URL}代表在应用清单中声明的​​HTTP URL打开您的应用。

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

link有关于如何测试您的实施的更多信息。

+0

您刚刚提到的所有信息都只是从Firebase邀请(https://firebase.google.com/docs/invites/android)的设置文档中复制而来。 OP(和我)想知道如何通过邀请链接模拟安装应用程序。现在看来,确保邀请链接工作的唯一方法是在将应用推送到Play商店后进行测试。 – Josh

+1

这通常会将您发送到Play商店或App Store以下载应用程序。因为这是一个测试应用程序,它将链接到一个不存在的商店页面。另一种方法是尝试使用[Firebase Invites Quickstart](https://github.com/firebase/quickstart-cpp/blob/master/invites/testapp/readme.md)。它演示了使用Firebase Invites C++ SDK发送和接收Firebase邀请。当您首次运行应用程序时,它将检查传入的动态链接或邀请,并报告是否能够获取邀请。还允许您模拟接收来自朋友的邀请。 –

+0

只是从官方文档复制粘贴 –

3

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

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

1

我发现下面的链接发布在赏金答案的评论中。它允许您接收邀请并测试处理来自邀请的新安装的代码。

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

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

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

0

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