如何用FirebaseAppInvite.getInvitation替换已废弃的AppInviteApi.getInvitation?
替换废弃的AppInviteApi.getInvitation()为FirebaseAppInvite方案
刚升级Google Play服务后遇到这个弃用警告很正常,因为官方已经把App Invites的功能完全整合到Firebase Dynamic Links里了,下面我给你一步步讲清楚怎么替换:
核心思路
原来的AppInviteApi.getInvitation()是通过GoogleApiClient来获取邀请数据,现在官方要求通过Firebase Dynamic Links的PendingDynamicLinkData作为入口,再用FirebaseAppInvite.getInvitation()从中提取App Invite相关的信息。
具体替换步骤
1. 确保依赖正确
首先检查你的build.gradle(Module级别),确保已经引入Firebase Dynamic Links的依赖(替换成当前最新版本即可):
implementation 'com.google.firebase:firebase-dynamic-links:21.2.0'
2. 替换旧代码
旧的废弃代码(基于GoogleApiClient):
// 旧代码,已废弃 AppInviteApi.getInvitation(mGoogleApiClient, this, true) .setResultCallback(new ResultCallback<AppInviteInvitationResult>() { @Override public void onResult(@NonNull AppInviteInvitationResult result) { if (result.getStatus().isSuccess()) { Intent intent = result.getInvitationIntent(); String deepLink = AppInviteReferral.getDeepLink(intent); // 处理深链接或邀请逻辑 } } });
新的替代代码(基于Firebase):
FirebaseDynamicLinks.getInstance() .getDynamicLink(getIntent()) .addOnSuccessListener(this, pendingDynamicLinkData -> { // 从动态链接数据中提取App Invite信息 FirebaseAppInvite appInvite = FirebaseAppInvite.getInvitation(pendingDynamicLinkData); if (appInvite != null) { // 获取邀请ID,可用于统计等场景 String invitationId = appInvite.getInvitationId(); // 获取邀请附带的深链接 Uri deepLink = appInvite.getDeepLink(); // 这里写你的业务逻辑,比如跳转对应页面、处理邀请来源等 if (deepLink != null) { // 处理深链接,比如打开指定页面 navigateToDeepLinkDestination(deepLink); } } }) .addOnFailureListener(this, e -> { Log.w("AppInvite", "获取动态链接失败", e); });
3. 关键说明
FirebaseDynamicLinks.getInstance().getDynamicLink(getIntent())会自动处理App Invite的链接数据,不管是通过邀请链接打开App还是直接启动App,都能正确捕获动态链接信息FirebaseAppInvite.getInvitation()是专门用来从动态链接中解析App Invite数据的工具方法,返回的对象包含了原AppInviteApi能获取的所有核心字段(邀请ID、深链接等)- 如果你的App之前已经配置过App Invites的Manifest信息,大部分不需要修改,但建议检查下Dynamic Links的Intent Filter配置(确保能正确接收链接跳转)
这样替换后,不仅解决了弃用警告,还能享受Firebase Dynamic Links带来的更多功能(比如跨平台支持、链接追踪等)。
内容的提问来源于stack exchange,提问作者zeus
相关产品推荐
相关产品推荐

