在开始测试邀请之前,您应该:
- 将您的应用连接到您的 Firebase 项目,从Firebase 控制台执行此操作。
- 启用 Firebase 动态链接,从Firebase 控制台打开动态链接部分并在出现提示时接受服务条款。
- 将 Firebase 添加到您的 Android 项目中。
- 将 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.
// ...
}
}
});
}
重要提示:上面的代码需要连接的GoogleApiClient并AppInvite.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
在链接中有更多关于如何测试你的实现的信息。