You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Android应用中实现Firebase Invites并支持多社交平台分享

扩展Firebase邀请链接到其他社交平台的实现方案

刚好我之前做过类似的需求,其实Firebase Invites现在已经逐步被Firebase Dynamic Links取代了,后者灵活性更高,完全能满足你生成专属邀请链接+自定义分享到各类社交应用的需求。下面是具体的实现步骤,一步步来就行:

1. 先搞定Firebase Dynamic Links的基础配置

首先确保你的Android项目已经集成了Firebase,然后在app/build.gradle里添加Dynamic Links的依赖:

implementation 'com.google.firebase:firebase-dynamic-links:21.2.0'

接着去Firebase控制台创建一个动态链接域名(比如yourapp.page.link),这是生成专属邀请链接的基础,跟着控制台的引导配置就行,很简单。

2. 生成每个用户的专属唯一邀请链接

要让每个用户的邀请链接独一无二,关键是在链接里带上用户的唯一标识(比如Firebase Auth的uid),这样后续才能识别邀请来源。生成链接的代码示例(用Kotlin写的,Java版本逻辑一致):

// 获取当前用户的唯一ID,比如从Firebase Auth里拿
val inviterId = FirebaseAuth.getInstance().currentUser?.uid ?: ""
// 构建动态链接
val dynamicLink = Firebase.dynamicLinks.dynamicLink {
    // 这里是你自己的业务链接,带上邀请者ID
    link = Uri.parse("https://yourapp.com/invite?inviterId=$inviterId")
    // 填你在Firebase控制台创建的域名前缀
    domainUriPrefix = "https://yourapp.page.link"
    // 配置Android端跳转规则:已装APP直接打开,没装跳应用商店
    androidParameters {
        packageName = "com.yourapp.package" // 填你的APP包名
        minimumVersion = 1 // 可选,指定最低支持的APP版本
    }
    // 如果需要支持iOS,这里可以配置iOS参数,不用的话可以删掉
    iosParameters("com.yourapp.ios") {
        appStoreId = "123456789" // 你的iOS应用在App Store的ID
    }
}
// 最终生成的专属邀请链接
val inviteLink = dynamicLink.uri.toString()

这样生成的inviteLink就是每个用户独有的邀请链接了。

3. 自定义分享到其他社交平台

现在你可以把这个链接分享到任何社交应用,主要有两种方式,按需选择:

方式一:用系统分享Intent(简单快捷,无需额外SDK)

调用Android系统的分享选择器,让用户自己选要分享的应用(微信、QQ、微博这些都能支持),代码非常简单:

val shareIntent = Intent().apply {
    action = Intent.ACTION_SEND
    // 自定义分享文案,把邀请链接放进去
    putExtra(Intent.EXTRA_TEXT, "快来加入我的XX应用!通过我的链接注册,我们都能拿奖励~ $inviteLink")
    type = "text/plain"
}
// 弹出分享选择器,自定义标题
startActivity(Intent.createChooser(shareIntent, "选择分享渠道"))

这种方式的好处是零额外集成成本,只要用户手机上装了对应的社交应用,就能直接分享,适合快速实现需求。

方式二:集成第三方社交SDK(定制化体验)

如果想要更流畅的分享体验(比如直接跳微信好友列表、自定义分享卡片的标题/图片),可以集成对应平台的SDK,比如微信开放平台、QQ开放平台的SDK。以微信为例,大致步骤:

  1. 去微信开放平台注册账号,创建应用并获取AppID
  2. 添加微信SDK的依赖到项目(具体看微信官方文档)
  3. 调用微信的分享接口,把邀请链接作为网页内容分享:
// 先初始化微信API
val api = WXAPIFactory.createWXAPI(this, "你的微信AppID", true)
api.registerApp("你的微信AppID")

// 构建分享请求
val req = SendMessageToWX.Req().apply {
    transaction = "invite_${System.currentTimeMillis()}" // 唯一标识,避免重复请求
    message = WXMediaMessage().apply {
        title = "邀请你加入XX应用"
        description = "通过我的链接注册,双方都能获得专属奖励哦~"
        // 设置分享的网页链接
        mediaObject = WXWebpageObject().apply {
            webpageUrl = inviteLink
        }
        // 可选:设置分享的缩略图,需要转成字节数组
        thumbData = BitmapFactory.decodeResource(resources, R.drawable.share_thumb)?.let {
            val outputStream = ByteArrayOutputStream()
            it.compress(Bitmap.CompressFormat.JPEG, 80, outputStream)
            outputStream.toByteArray()
        }
    }
    scene = SendMessageToWX.Req.WXSceneSession // 分享到微信好友,换成WXSceneTimeline就是朋友圈
}
// 发送分享请求
api.sendReq(req)

这种方式体验更好,但需要针对每个平台单独配置和集成,适合对体验要求高的场景。

4. 接收并处理邀请链接

当新用户通过链接安装/打开APP时,你需要在APP启动时解析这个动态链接,拿到邀请者ID并做相应处理(比如记录邀请关系、发奖励等)。代码示例:

// 在SplashActivity或者MainActivity的onCreate方法里处理
Firebase.dynamicLinks
    .getDynamicLink(intent)
    .addOnSuccessListener(this) { pendingDynamicLinkData ->
        pendingDynamicLinkData?.link?.let { deepLink ->
            // 从链接里取出邀请者ID
            val inviterId = deepLink.getQueryParameter("inviterId")
            if (!inviterId.isNullOrEmpty()) {
                // 这里写你的业务逻辑:比如给邀请者加积分,给新用户发新人礼包等
                handleInviteReward(inviterId)
            }
        }
    }
    .addOnFailureListener(this) { e ->
        Log.w("DynamicLink", "解析动态链接失败", e)
    }

另外,别忘了在AndroidManifest.xml里配置动态链接的跳转过滤器,这样用户点击链接时能直接打开你的APP:

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <!-- 填你在Firebase控制台创建的动态链接域名 -->
    <data
        android:host="yourapp.page.link"
        android:scheme="https"/>
</intent-filter>

一些额外的注意事项

  • 测试的时候,可以直接把生成的链接复制到浏览器里打开,看看能不能正确跳转到APP或者应用商店,Firebase控制台也有专门的动态链接测试工具。
  • 国内有些社交平台会对外部链接进行拦截,建议把你的动态链接域名加入对应平台的白名单(比如微信的域名验证),避免链接被屏蔽。
  • 如果需要统计邀请数据(比如多少人点击了链接、多少人通过链接安装了APP),可以结合Firebase Analytics,跟踪对应的事件就行。

内容的提问来源于stack exchange,提问作者Aman Verma

火山引擎 最新活动