TIMPush 插件是一款功能强大的付费插件,它为 Google 平台带来了 VoIP calls 的通知机制,结合
Firebase Cloud Messaging (FCM)
提供的数据消息能力以及TUICallKit
组件,能够实现具有自定义布局的来电显示界面。说明:
FCM 数据消息功能仅适用于搭载 TIMPush 7.9.5668 及更高版本且拥有 Google Mobile Services 的手机,其他设备需自测支持情况;
TUICallKit 仅支持2.3及以上的版本。
本文详细介绍如何在 TUICallKit 组件中接入
TIMPush
插件,使用 FCM 的数据消息能力,实现音视频通话的横幅来电显示效果。集成效果
TUICallKit 在 GitHub 示例工程上已成功集成了 FCM 数据消息推送,您可以通过参见 Call UIKit 示例工程 来快速实现功能的正常运行。以下示意图展示了 TUICallKit 含 UI 方案集成 FCM 数据消息后,当被叫端的应用在前台、后台或者应用进程不存在时,被叫端收到来电邀请后的效果:
应用在前台时的显示效果 | 应用在后台时或者离线时的显示效果 |
| |
准备条件
1. 开通服务
2. 厂商配置
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:timpush:latest.release"implementation "com.tencent.timpush:fcm:latest.release"
说明:
TIMPush 需要集成 IM SDK 在7.9.5666版本及以上。TIMPush 的版本号及更新信息,可以在 更新日志 中进行查询。
您可以在
tuicallkit-kt/build.gradle
文件中修改 IM SDK 的版本号。api "com.tencent.imsdk:imsdk-plus:7.9.5668"
3. 完成工程配置
在项目级
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'
在
proguard-rules.pro
文件中,将 TIMPush 相关类加入不混淆名单:-keep class com.tencent.qcloud.** { *; }-keep class com.tencent.timpush.** { *; }
在项目的 app 目录下,找到并打开
build.gradle
文件,将应用包名修改为您的实际应用包名。applicationId 'com.****.callkit'
4. 实现自动登录
在应用的
application
类中,监听 TIMPush 发出的事件通知,实现自动登录。TUICore.registerEvent(TUIConstants.TIMPush.EVENT_IM_LOGIN_AFTER_APP_WAKEUP_KEY, TUIConstants.TIMPush.EVENT_IM_LOGIN_AFTER_APP_WAKEUP_SUB_KEY, new ITUINotification() { @Override public void onNotifyEvent(String key, String subKey, Map<String, Object> param) { if (TUIConstants.TIMPush.EVENT_IM_LOGIN_AFTER_APP_WAKEUP_KEY.equals(key) && TUIConstants.TIMPush.EVENT_IM_LOGIN_AFTER_APP_WAKEUP_SUB_KEY.equals(subKey)) { //you need to login again to launch call activity, please implement this method by yourself autoLogin(); } } });
完成上述步骤后,您可以结合 TUICallKit 使用 TIMPush 的离线推送能力。
说明:
高级功能
自定义铃声
如果您想自定义该铃声,可以替换
tuicallkit-kt/src/main/res/raw/phone_ringing.mp3
文件。注意:
替换掉该铃声后,不论应用在前台、后台或者离线,铃声都会是替换后的铃声。
替换后其他厂商手机收到邀请后的铃声也会是替换后的铃声。
常见问题
1. 应用杀死后无法弹出来电UI
确认收到了推送,收不到推送需要确认下 IM 控制台是否正确上传证书。参见文档上述快速接入的第一步,看下是否添加正确。
确认控制台选择了 FCM 数据消息,对照上述准备条件的第二步;
确认收到数据消息,过滤日志(关键字:TIMPush),检查下述日志有打印(如果收不到消息,可以使用 IM 控制台的 排查工具 查看原因);
确认实现了自动登录。自动登录后才会去拉通话请求,才能显示来电UI。