VoIP 通话是一种通过互联网或 IP 网络传输数字语音数据的电话通话技术,具有成本低、音质高、灵活性强和集成其他通信服务的优势。
配置VoIP
iOS
Android
集成消息推送插件
flutter pub addtencent_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"
说明:
TIMPush 需要集成 IM SDK 在7.9.5666版本及以上。TIMPush 的版本号及更新信息,可以在 更新日志 中进行查询。
在
build.gradle
中添加的依赖的版本需要与tencent_cloud_chat_push
版本对应。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. 拨打离线推送通话
TUIOfflinePushInfo offlinePushInfo = TUIOfflinePushInfo();offlinePushInfo.title = "Flutter TUICallKit";offlinePushInfo.desc = "This is an incoming call from Flutter TUICallkit";offlinePushInfo.ignoreIOSBadge = false;offlinePushInfo.iOSSound = "phone_ringing.mp3";offlinePushInfo.androidSound = "phone_ringing";offlinePushInfo.androidOPPOChannelID = "Flutter TUICallKit";offlinePushInfo.androidVIVOClassification = 1;offlinePushInfo.androidFCMChannelID = "fcm_push_channel";offlinePushInfo.androidHuaWeiCategory = "Flutter TUICallKit";offlinePushInfo.iOSPushType = TUICallIOSOfflinePushType.VoIP;TUICallParams params = TUICallParams(offlinePushInfo: offlinePushInfo);TUICallKit.instance.call(callUserId, TUICallMediaType.audio, params);
说明:
常见问题
应用被终止后,无法显示来电 UI?
确认收到了推送,收不到推送需要确认下 IM 控制台是否正确上传证书。参见文档上述快速接入的 第一步,看下是否添加正确。
确认控制台选择了 FCM 数据消息,对照上述准备条件的 第二步。
确认收到数据消息,过滤日志(关键字:TIMPush),检查下述日志有打印(如果收不到消息,可以使用 IM 控制台的 排查工具 查看原因):
确认实现了自动登录。自动登录后才会去拉通话请求,才能显示来电 UI。