即时通信 IM VoIP

VoIP 通话是一种通过互联网或 IP 网络传输数字语音数据的电话通话技术,具有成本低、音质高、灵活性强和集成其他通信服务的优势。

相关产品
即时通信 IM 产品页,含版本规格、价格与购买入口。
Android iOS
 

一、iOS

由于 TIMPush 当前尚不支持 iOS 的 VoIP 推送功能。

二、Android

你可以使用我们的 TIMPush 插件(付费)来实现 Android 端的 VoIP 通知。

三、集成消息推送插件

本插件在 pub.dev 的包名为: tencent_cloud_chat_push , 你可以将其引入 pubspec.yaml 依赖目录中, 也可以执行下列命令, 自动安装。

flutter pub add tencent_cloud_chat_push

四、准备条件

1. 将你自己的应用注册到 FCM 推送平台,得到 AppID 和 AppKey 等参数以及 google-services.json 文件 ,来实现离线推送功能。

2. 登录即时通信 IM 控制台,在推送管理 > 接入设置功能栏,选择 FCM,添加 FCM 的证书,其中,消息类型选择透传(数据)消息。

厂商推送平台 IM 控制台配置
 

五、快速接入

1. 下载并添加配置文件

完成控制台厂商推送信息填写后,下载并添加配置文件到工程。将下载的 timpush-configs.json 文件添加到应用模块的 assets 目录下,将 google-services.json 添加到工程 app 目录下。

选择下载配置文件 timpush-configs.json 下载文件 google-services.json 添加到工程
  

2. 集成 TIMPush 插件

在项目的 app 目录下的 build.gradle 文件中添加如下依赖:

implementation "com.tencent.timpush:fcm: xxxxxx"

注意:说明:

3. 客户端代码配置

在你项目 android 路径下 MainActivity 同级目录中,新建一个新的 Application 文件类, 例如可命名为 MyApplication。

如果你已经自定义了一个 Application 类,则可直接复用,不需要再次创建。

将下列代码粘贴到该文件中, 如上图所示:

package xxxx.xxxx.xx
import com.tencent.chat.flutter.push.tencent_cloud_chat_push.application.TencentCloudChatPushApplication;
public class MyApplication extends TencentCloudChatPushApplication {
@Override
public void onCreate() {
super.onCreate();
}
}

注意:说明:

注意:如果你已经创建了自己的 Application 为了其他用途,请直接 extends TencentCloudChatPushApplication 并保证 onCreate() 函数中,调用了 super.onCreate(); 即可。

同时,你还需要修改你的 MainActivity 文件:

打开 android/app/src/main/AndroidManifest.xml 文件,为 <application> 标签,新增指定一个 android:name 参数即可,指向刚制作的自定义 Application 类。如下:

六、

4. 完成工程配置

·在项目级 build.gradle 文件的 buildscript -> dependencies 下添加以下配置:

buildscript { dependencies { classpath 'com.google.gms:google-services:4.3.15' }}

·在项目的 app 目录下的 build.gradle 文件中添加下方配置:

apply plugin: 'com.google.gms.google-services'

5. 注册推送插件

请在登录完成后, 立即注册推送插件。

调用 TencentCloudChatPush().registerPush 方法, 需传入上一步定义的点击回调函数。

此外,你还可选传入 apnsCertificateID iOS 推送证书 ID 及 androidPushOEMConfig Android 推送厂商配置。此二项配置已在前序步骤指定,若无修改必要,可不再传入。

TencentCloudChatPush().registerPush(onNotificationClicked: _onNotificationClicked);

6. 实现自动登录

FCM 的 data 模式只能将离线 App 唤醒,所以还需要你在 onAppWakeUpEvent 中实现登录以及拉起 App 等操作。

TencentCloudChatPush().registerOnAppWakeUpEvent(onAppWakeUpEvent: () { // TODO: 登录操作});

完成上述步骤后,你可以结合 TUICallKit 使用 TIMPush 的离线推送能力。

7. 拨打离线推送通话

AtomicXCore 的 CallStore 在发起通话时自动携带离线推送参数,你不需要手动设置任何 offlinePushInfo 字段。默认推送内容如下:

字段 默认值
推送标题 主叫用户的 ID。
推送描述 中文环境下为「你有新的来电」,其它语言为「You have a new call」。
铃声 SDK 内置铃声。

如果你想自定义推送标题或描述,可在发起通话时通过 CallParams 传入 offlinePushTitle / offlinePushDescription,传入后会覆盖上述默认值。

import 'package:atomic_x_core/api/call/call_store.dart';// 构建通话参数final params = CallParams( timeout: 30, // 超时时间(秒) userData: "自定义数据", // 扩展信息(可选) // 可选:自定义离线推送标题和描述(不填则使用默认值) offlinePushTitle: "Alice", offlinePushDescription: "is calling you",);final userIdList = ["被叫用户的 userID"];// 发起通话final result = await CallStore.shared.calls( userIdList, CallMediaType.video, // video 视频通话,audio 语音通话 params,);if (result.errorCode == 0) { // 通话发起成功,跳转到你自己的通话页面} else { // 通话失败处理 print("calls failed: ${result.errorCode}, ${result.errorMessage}");}

七、应用被终止后,无法显示来电 UI?

·确认收到了推送,收不到推送需要确认下 IM 控制台是否正确上传证书。参见文档上述快速接入的 第一步,看下是否添加正确。

·确认控制台选择了 FCM 数据消息,对照上述准备条件的 第二步。

·确认收到数据消息,过滤日志(关键字:TIMPush),检查下述日志有打印(如果收不到消息,可以使用 IM 控制台的 排查工具 查看原因)。

·确认实现了自动登录。自动登录后才会去拉通话请求,才能显示来电 UI。

八、交流与反馈

如有问题,可以 联系我们,进行技术交流和产品沟通。

赞 (0)
上一篇 4天前
下一篇 4天前