概述
陌生人社交/交友应用可以帮助您快速结交来自世界各地的新朋友,让您享受交友和在线约会的乐趣。用户可以通过应用找到他们感兴趣的人,然后通过文字、语音或视频相互了解。
场景描述
基于腾讯实时通信Call和腾讯实时通信Chat,您可以快速构建自己的陌生人社交/交友应用。该服务提供覆盖全球的高连接、高可靠、强安全的网络连接通道。它使用自研的多路复用最优寻址算法,具备全网调度能力,拥有丰富的高带宽资源储备,确保您的社交体验流畅。
技术解决方案
解决方案优势
快速集成。提供1v1社交场景定制化组件,帮助开发者快速轻松地实现功能。
功能完善且可扩展。满足1v1社交/在线交友场景的基本功能需求,业务场景API高度贴合,模块化组件支持美颜功能的自由扩展。
超高质量,全球节点分布。凭借多年技术积累,消息收发成功率高于99.99%,抗网络抖动超过1,000毫秒,在高达70%的丢包率下仍能保持正常语音通话;节点覆盖亚太、北美、欧洲、中东和非洲等全球200多个国家和地区,端到端通话延迟低至300毫秒。能为客户在1v1海外社交业务中提供保障。
接入准备
服务激活
您需要同时激活Call和Chat服务。
为了给音视频通话和聊天互动功能提供更好的体验,我们为每个SDKAppID提供Call服务的7天免费试用套餐(试用版不包括额外通话时长)和Chat服务的1个月试用套餐。每个SDKAppID可以免费体验两次试用,一个账号下所有SDKAppID的试用总次数为10次。
您可以在腾讯实时通信(TRTC)控制台激活Call和Chat试用版。具体步骤如下:
1. 登录TRTC控制台,点击创建应用。
2. 在弹出窗口中,选择Call,输入应用名称,选择数据存储区域,然后点击创建。
3. 创建应用后,默认显示Call应用详情页。此时,您已快速创建应用并成功获得音视频通话(Call)试用套餐。您可以查看当前Call应用详情页或应用概览页面的信并参考集成指南进行集成。在集成指南中将使用SDKAppID
和SDKSecretKey
。
4. 点击左侧菜单中的Chat,然后在页面上点击开始使用。现在您已经快速激活了Chat服务并成功获得Chat试用套餐。
注意:
TUICallKit支、Android、Web、uni-app和Flutter等多平台。为方续集成和功能实现将以Android为例进行演示。关于其他平台的接入指南,请参考快速接入文档。
- Android 5.0(SDK API Level 21)或更高版本。
- Gradle 4.2.1或更高版本。
- 搭载Android 5.0或更高版本的移动设备。
TUIKit组件集成
步骤1:项目导入
从GitHub下载TUIKit源代码。确保TUIKit文件夹与您自己的项目文件夹位于同一级别,例如:
步骤2:项目配置
1. 在项目根目录中找到settings.gradle.kts(或settings.gradle)
文件,添加以下代码以将tuikit
组件导入到项目中。
settings.gradle.kts
// 包含内部组件通信模块(必需模块)
include(":tuicore")
project(":tuicore").projectDir = File(settingsDir, "../TUIKit/TUICore/tuicore")
// 包含IM组件公共模块(必需模块)
include(":timcommon")
project(":timcommon").projectDir = new File(settingsDir, "../TUIKit/TIMCommon/timcommon")
// 包含聊天功能模块(基础功能模块)
include(":tuichat")
project(":tuichat").projectDir = File(settingsDir, "../TUIKit/TUIChat/tuichat")
// 包含会话功能模块(基础功能模块)include(":tuiconversation")
include(":tuiconversation")
project(":tuiconversation").projectDir = File(settingsDir, "../TUIKit/TUIConversation/tuiconversation")
// 包含音视频通话功能模块
include(":tuicallkit-kt")
project(":tuicallkit-kt").projectDir = File(settingsDir, "../TUIKit/TUICallKit/tuicallkit-kt")
settings.gradle
// 包含内部组件通信模块(必需模块)。
include ':tuicore'
project(':tuicore').projectDir = new File(settingsDir, '../TUIKit/TUICore/tuicore')
// 包含IM组件通用模块(必需模块)。
include ':timcommon'
project(':timcommon').projectDir = new File(settingsDir, '../TUIKit/TIMCommon/timcommon')
// 包含聊天功能模块(基础功能模块)。
include ':tuichat'
project(':tuichat').projectDir = new File(settingsDir, '../TUIKit/TUIChat/tuichat')
// 包含会话功能模块(基础功能模块)。
include ':tuiconversation'
project(':tuiconversation').projectDir = new File(settingsDir, '../TUIKit/TUIConversation/tuiconversation')
// 包含音视频通话功能模块。
include ':tuicallkit-kt'
project(':tuicallkit-kt').projectDir = new File(settingsDir, '../TUIKit/TUICallKit/tuicallkit-kt')
2.在app目录中,找到build.gradle.kts (或 build.gradle)
文件,并在dependencies
部分添加以下代码,声明当前应用对新添加组件的依赖关系。
build.gradle.kts
">dependencies { api(project(":tuicore")) api(project(":tuichat")) api(project(":tuiconversation")) api(project(":tuicallkit-kt")) }
build.gradle
dependencies {
api project(':tuicore')
api project(':tuichat')
api project(':tuiconversation')
api project(':tuicallkit-kt')
}
3.由于SDK内部使用了Java的反射特性,你需要通过在app目录下的proguard-rules.pro
文件末尾添加以下代码,将SDK中的某些类添加到混淆白名单中。添加后,点击右上角的Sync Now同步代码。
-keep class com.tencent.** { *; }
4.在app目录下找到AndroidManifest.xml文件,在application节点添加tools:replace="android:allowBackup"
,用自己的设置覆盖组件设置。
步骤3:登录组件
在你的项目中添加以下代码。其功能是通过调用TUICore中的相关接口完成TUI组件的登录。这一步骤非常关键,只有在成功登录后,你才能正常使用TUIKit提供的功能。
Java:
com.tencent.qcloud.tuicore.TUILogin; import com.tencent.qcloud.tuicore.interfaces.TUICallback; import com.tencent.qcloud.tuikit.tuicallkit.debug.GenerateTestUserSig; public class MainActivity extends AppCompatActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //begin String userID = "denny"; // 替换为你的用户ID。 int sdkAppID = 0; // 替换为第1步在控制台获取的SDKAppID。 String secretKey = "****"; // 替换为第1步在控制台获取的SecretKey。 String userSig = GenerateTestUserSig.genTestUserSig(userId, sdkAppITUILogin.login(this, sdkAppId, userId, userSig, new TUICallback() {Success() { } @Override public void onError(int errorCode, String errorMessage) { } }); //end } }
Kotlin:
import com.tencent.qcloud.tuicore.TUILogin
import com.tencent.qcloud.tuicore.interfaces.TUICallback
import com.tencent.qcloud.tuikit.tuicallkit.debug.GenerateTestUserSig
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// begin
val userID = "denny" // 替换为你的用户ID。
val sdkAppID = 0 // 替换为第1步在控制台获取的SDKAppID。
val secretKey = "****" // 替换为第1步在控制台获取的SecretKey。
val userSig = GenerateTestUserSig.genTestUserSig(userId, sdkAppId, secretKey)
TUILogin.login(this, sdkAppId, userId, userSig, object : TUICallback() {
override fun onSuccess() {
}
override fun onError(errorCode: Int, errorMessage: String) {
}
})
// end
}
}
参数 | 类型 | 描述 |
userID | String | 客户根据自己的业务定义用户ID。它只能包含字母(a-z,A-Z)、数字(0-9)、下划线(_)和连字符(-)。 |
sdkAppID | int | 在 TRTC控制台创建的音视频应用的唯一标识符SDKAppID。 |
secretKey | String | 在TRTC控制台创建的音视频应用的SDKSecretKey。 |
userSig | String | 用于用户登录认证的安全保护签名,用于确认用户身份并防止恶意攻击者窃取您的云服务使用权。 |
注意:
开发环境:如果您处于本地开发和调试阶段,可以使用本地的GenerateTestUserSig.genTestSig
函数生成userSig。在此方法中,SDKSecretKey容易被反编译和逆向工程破解,一旦您的密钥泄露,攻击者可能会窃取您的腾讯云流量。
生产环境:如果您的项目即将上线,请采用服务端生成 UserSig的方法。
业务功能实现
社交大厅
您可以在自己的业务服务器上记录每个注册和登录的用户,并根据特定的推荐算法将其显示在用户的社交大厅页面中。
聊天互动
成功调用上述登录方法后,您还可以通过以下操作显示会话列表页面。点击会话列表上的成员可跳转到消息页面。
在您的XML文件中添加FragmentContainerView
(例如,activity_main.xml
)。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android='httpschemasandroidcomapkresandroid'
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!-- 添加fragment容器 -->
<androidx.fragment.app.FragmentContainerView
android:id='idfragment_container_view'
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
在需要显示会话列表页面的地方调用以下代码,以调出会话列表页面。
Java:
TUIConversationFragment conversationFragment = new TUIConversationFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container_view, conversationFragment)
.commit();
Kotlin:
val conversationFragment = TUIConversationFragment()
supportFragmentManager.beginTransaction()
.replace(R.id.fragment_container_view, conversationFragment)
.commit()
音视频通话
成功调用上述登录方法后,调用TUICallKit的call方法,指定被呼叫方的userID和通话类型,即可发起音视频通话。被呼叫方可以收到来电邀请。
Java:
Kotlin:
import com.tencent.qcloud.tuikit.tuicallengine.TUICallDefine
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit
// 发起一对一语音通话(假设被呼叫方的userID是mike)
TUICallKit.createInstance(context).call("mike", TUICallDefine.MediaType.Audio)
离线推送
离线推送功能可以让用户及时收到来自好友的消息通知和来电请求,增强用户粘性和活跃度。TUICallKit组件支持通过集成TIMPush插件**(付费)**实现离线推送功能,使用户即使在应用处于后台或离线状态时也能收到通话通知。
以下是TIMPush集成后的效果示例。
注意:
要实现如上所示的良好通话体验,建议在您的应用中开启"通知"、"显示在其他应用上层"和"后台启动界面"权限。有关详细方法,请参见开启相关权限。
悬浮窗
在好友之间进行音视频通话时,如果用户需要退出通话界面但又不想终止当前通话进程,可以使用悬浮窗功能。实现效果如下图所示:
初始化TUICallKit组件时使用enableFloatWindow方法启用此功能。代码如下:
TUICallKit.createInstance(context).enableFloatWindow(true);
Kotlin:
TUICallKit.createInstance(context).enableFloatWindow(true)
美颜特效
开启美颜特效可以在视频社交过程中提升用户的视觉形象,营造生动有趣的氛围。腾讯特效SDK支持与TUICallKit组件集成,可提供丰富的美颜特效,如虚拟背景、美颜、图像调整、滤镜、贴纸、Animoji和捏脸DIY等。
有关腾讯特效SDK的更多信息,请参阅腾讯特效SDK文档。
如果您想将美颜特效集成到您的业务中,请参阅腾讯特效SDK文档。
通话记录
您可以通过TUICallKit的服务器API 查看通话记录并获取通话时长,从而构建自己的计费系统。
UI定制
为了满足您的个性化产品UI需求,TUICallKit产品支持对UI界面进行自定义修改,包括设置昵称/头像、自定义铃声以及调整文本和图标,这可以帮助您快速完成个性化业务场景的设置。如果您有自定义UI需求,请参考以下文档。
源代码级解决方案
对于1v1社交场景,腾讯云还推出了源代码级解决方案。您只需下载源代码并按照文档设置后端即可运行1v1社交网络应用,之后即可正式启用付费的TRTC Call和TRTC Chat。产品样例图片如下:
如果您想了解更多关于1v1社交场景的源代码级解决方案,请随时提交工单。我们的技术人员稍后会与您联系。