概述
陌生人社交/约会应用程序可以帮助您快速结识来自世界各地的新朋友,让您享受交友和在线约会的乐趣。用户可以通过该应用找到感兴趣的人,然后通过文字、语音或视频互相了解。
场景描述
基于腾讯RTC通话和腾讯RTC聊天,您可以快速构建自己的陌生人社交/约会应用。该服务提供高度连接、高度可靠和强安全性的网络连接通道,覆盖全球。它使用自研的多路复用最优寻址算法,具备全网调度能力,并且拥有丰富的高带宽资源储备,确保您的社交体验流畅。
技术解决方案
解决方案优势
快速集成。 提供1对1社交场景定制组件,帮助开发者快速轻松地实现功能。
完美且可扩展的特性。 满足1对1社交/在线交友场景的基本功能,业务场景API高度契合,模块化组件支持美容模式功能的自由扩展。
异常高质量,全球节点分布。 凭借多年的技术经验,消息发送和接收的成功率超过99.99%,抗网络抖动能力超过1000毫秒,丢包率超过70%仍能正常进行语音通话;节点覆盖200多个国家和地区,如亚太、北美、欧洲、中东和非洲,端到端通话延迟低至300毫秒。可以为客户提供1对1海外社交业务的保护。
接入准备
服务激活
您需要同时激活通话和聊天服务。
为了提供更好的音频和视频通话及聊天互动体验,我们为每个SDKAppID提供7天免费试用的通话服务包(试用版不包括额外通话时长)和一个月免费试用的聊天服务包。每个SDKAppID可以免费体验两次,所有SDKAppID在一个账户下的总试用次数为10次。
您可以在腾讯实时通信(TRTC)控制台激活通话和聊天试用版。具体步骤如下:
1. 登录 TRTC控制台 并点击 创建应用。
2. 在弹出的窗口中,选择通话,输入应用名称,选择数据存储区域,然后点击 创建。
3. 应用创建后,默认显示通话应用详情页面。此时,您已快速创建应用并成功获得音频和视频通话(通话)试用包。您可以查看当前通话应用详情页面或应用概览页面上的信息,并参考集成指南进行集成。SDKAppID
和 SDKSecretKey
将在集成指南中使用。
4. 在左侧菜单中点击 聊天,然后在页面上点击 开始。您现在已快速激活聊天服务并成功获得聊天试用包。
环境准备
注意:
TUICallKit支持多种平台,如小程序、iOS、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 = new File(settingsDir, "../TUIKit/TUIChat/tuichat")
// 包含会话功能模块(基本功能模块) include(":tuiconversation")。
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")
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中的某些类添加到混淆允许列表中。添加后,点击右上角的立即同步以同步代码。
-keep class com.tencent.** { *; }
4.在app目录中找到AndroidManifest.xml文件,并在application节点中添加tools:replace="android:allowBackup"
以覆盖组件设置。
步骤3:登录组件
在您的项目中添加以下代码。其功能是通过调用TUICore中的相关接口完成对TUI组件的登录。此步骤至关重要,只有在成功登录后,您才能正确使用TUIKit提供的功能。
Java:
import 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);
//开始
String userID = "denny"; // 替换为您的用户ID。
int sdkAppID = 0; // 替换为第1步中从控制台获取的SDKAppID。
String secretKey = "****"; // 替换为第1步中从控制台获取的SecretKey。
String userSig = GenerateTestUserSig.genTestUserSig(userId, sdkAppId, secretKey);
TUILogin.login(this, sdkAppId, userId, userSig, new TUICallback() {
@Override
public void onSuccess() {
}
@Override
public void onError(int errorCode, String errorMessage) {
}
});
//结束
}
}
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)
// 开始
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) {
}
})
// 结束
}
}
参数 | 类型 | 描述 |
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">
<!-- 添加片段容器 -->
<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()
音频/视频通话
在上述登录方法成功调用后,调用call方法的TUICallKit,指定被叫的userID和通话类型,并发起音频/视频通话。被叫方可以接收到来电邀请。
Java:
import com.tencent.qcloud.tuikit.tuicallengine.TUICallDefine;
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit;
// 发起1对1语音通话(假设被叫的userID是mike)。
TUICallKit.createInstance(context).call("mike", TUICallDefine.MediaType.Audio);
Kotlin:
import com.tencent.qcloud.tuikit.tuicallengine.TUICallDefine
import com.tencent.qcloud.tuikit.tuicallkit.TUICallKit
// 发起1对1语音通话(假设被叫的userID是mike)。
TUICallKit.createInstance(context).call("mike", TUICallDefine.MediaType.Audio)
离线推送
离线推送功能允许用户及时接收来自朋友的消息通知和来电请求,提高用户粘性和活跃度。TUICallKit组件支持通过集成TIMPush插件 **(收费)**来实现离线推送功能,使用户即使在应用运行在后台或离线时也能接收通话通知。
以下是TIMPush集成后的效果示例。
注意:
为了实现良好的通话体验,建议在应用中启用“通知”、“悬浮在其他应用上”和“后台启动界面”权限。详细方法请参见启用相关权限。
悬浮窗口
在好友之间进行音频/视频通话时,如果用户需要退出通话界面但又不想终止当前通话过程,可以使用悬浮窗口功能。实现效果如图所示:
在初始化TUICallKit组件时使用enableFloatWindow方法启用该功能。代码如下:
Java:
TUICallKit.createInstance(context).enableFloatWindow(true);
Kotlin:
TUICallKit.createInstance(context).enableFloatWindow(true)
美颜效果
启用美颜效果可以提高用户在视频社交过程中的视觉吸引力,营造活泼有趣的氛围。腾讯效果SDK支持与TUICallKit组件集成,提供丰富的美颜效果,如虚拟背景、美颜、图像调整、滤镜、贴纸、动画表情和脸部捏造DIY。有关腾讯效果SDK的更多信息,请参阅腾讯效果SDK文档。如果您想将美颜效果集成到您的业务中,请参阅腾讯效果SDK文档;如果您想集成其他第三方美颜效果,请参阅第三方SDK文档进行集成。
通话记录
您可以通过TUICallKit的服务器API 查看通话记录并获取通话时长,从而建立自己的计费系统。
UI定制
为了满足您的个性化产品UI需求,TUICallKit产品支持对UI界面的自定义修改,包括设置昵称/头像、自定义铃声和调整文本及图标,这可以帮助您快速完成个性化业务场景的搭建。如果您有自定义UI需求,请参阅以下文档。
源代码级解决方案
对于1对1社交场景,腾讯云还推出了源代码级解决方案。您只需下载源代码并根据文档设置后端,即可运行1对1社交网络应用,然后正式上线付费的TRTC通话和TRTC聊天功能。产品样例图如下:
如果您想了解更多关于1对1社交场景的源代码级解决方案,请随时提交工单。我们的技术人员将随后与您联系。