有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
TIMPush 推送插件为 Google 平台带来了 VoIP calls 的通知机制,结合Firebase Cloud Messaging (FCM)提供的数据消息能力 以及TUICallKit组件,能够实现具有自定义布局的来电显示界面。
说明:
FCM 数据消息能力仅支持 TIMPush 7.9.5668 及以上版本的 pixel 手机,其他厂商设备需自测支持情况;
TUICallKit 仅支持2.3及以上的版本。
本文详细介绍如何在 TUICallKit 组件中接入TIMPush插件,使用 FCM 的数据消息能力,实现音视频通话的横幅来电显示效果。


集成效果

TUICallKit 在 GitHub 示例工程上已成功集成了 FCM 数据消息推送,您可以通过参见 Call UIKit 示例工程 来快速实现功能的正常运行。以下示意图展示了 TUICallKit 含 UI 方案集成 FCM 数据消息后,当被叫端的应用在前台、后台或者应用进程不存在时,被叫端收到来电邀请后的效果:
应用在前台时的显示效果
应用在后台时或者离线时的显示效果






说明:
为实现上图良好的通话体验,建议您在应用中开启“通知”权限、“显示在其他应用上层”以及“后台拉起界面”权限,具体方法见:相关权限开启
被叫端的来电显示策略详见:被叫端来电显示策略

准备条件

1. 将您自己的应用注册到 FCM推送平台,得到 AppIDAppKey 等参数以及 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:7.9.5668"
implementation "com.tencent.timpush:fcm:7.9.5668"
说明:
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。

交流与反馈

如有问题,欢迎您加入我们的 TUICallKit 技术交流平台 zhiliao,进行技术交流和产品沟通。