离线通话推送
TIMPush 插件是一款功能强大的付费插件,它为 Google 平台带来了 VoIP calls 的通知机制,结合
Firebase Cloud Messaging (FCM)
提供的数据消息能力以及TUICallKit
组件,能够实现具有自定义布局的来电显示界面。说明:
拥有 Google Mobile Services 的手机。
FCM 数据消息功能仅在TIMPush 7.9.5668及更高版本中提供。
TUICallKit 的支持仅限于 2.3 版本及以上。
本文详细介绍如何在 TUICallKit 组件中接入
TIMPush
插件,使用 FCM 的数据消息能力,实现音视频通话的横幅来电显示效果。集成效果
TUICallKit 在 GitHub 示例工程上已成功集成了 FCM 数据消息推送,您可以通过参考 Call UIKit 示例工程 来快速实现功能的正常运行。以下示意图展示了 TUICallKit 含 UI 方案集成 FCM 数据消息后,当被叫端的应用在前台、后台或者应用进程不存在时,被叫端收到来电邀请后的效果。
应用在前台时的显示效果 | 应用在后台时或者离线时的显示效果 |
| |
说明:
准备条件
1. 将您自己的应用注册到 FCM推送平台,得到 AppID 和 AppKey 等参数以及
google-services.json
文件 ,来实现离线推送功能。2. 登录Chat 控制台,在推送管理 > 接入设置功能栏,选择 FCM,添加 FCM 的证书,其中,消息类型选择透传(数据)消息。
厂商推送平台 | Chat 控制台配置 |
| |
快速接入
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 需要集成 IMSDK 在 7.9.5668 版本及以上。
您可以在
tuicallkit-kt/build.gradle
文件中修改 Chat SDK 的版本号。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'
在
app/proguard-rules.pro
文件中,将 TIMPush 相关类加入不混淆名单。-keep class com.tencent.qcloud.** { *; }-keep class com.tencent.timpush.** { *; }
在
app/build.gradle
文件中,将应用包名修改为您的实际应用包名。applicationId 'com.****.callkit'
4. 实现自动登录
在应用的
application
类中,监听 TIMPush 发出的事件通知,实现自动登录。import com.tencent.qcloud.tuicore.TUIConstants import com.tencent.qcloud.tuicore.TUICore import com.tencent.qcloud.tuicore.interfaces.ITUINotification class BaseApplication : Application() { override fun onCreate() { super.onCreate() TUICore.registerEvent(TUIConstants.TIMPush.EVENT_IM_LOGIN_AFTER_APP_WAKEUP_KEY, TUIConstants.TIMPush.EVENT_IM_LOGIN_AFTER_APP_WAKEUP_SUB_KEY) { key, subKey, param ->if (TUIConstants.TIMPush.EVENT_IM_LOGIN_AFTER_APP_WAKEUP_KEY == key&& TUIConstants.TIMPush.EVENT_IM_LOGIN_AFTER_APP_WAKEUP_SUB_KEY == subKey) { //you need to login again to launch call activity, please implement this method by yourself autoLogin() } } } }
import com.tencent.qcloud.tuicore.TUIConstants; import com.tencent.qcloud.tuicore.TUICore; import com.tencent.qcloud.tuicore.interfaces.ITUINotification;public class BaseApplication extends Application {@Overridepublic void onCreate() {super.onCreate();TUICore.registerEvent(TUIConstants.TIMPush.EVENT_IM_LOGIN_AFTER_APP_WAKEUP_KEY,TUIConstants.TIMPush.EVENT_IM_LOGIN_AFTER_APP_WAKEUP_SUB_KEY, new ITUINotification() {@Overridepublic 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 yourselfautoLogin();}}});}}
完成上述步骤后,您可以结合 TUICallKit 使用 TIMPush 的离线推送能力。
说明:
高级功能
自定义铃声
如果您想自定义该铃声,可以替换
tuicallkit-kt/src/main/res/raw/phone_ringing.mp3
文件。注意:
替换掉该铃声后,不论应用在前台、后台或者离线,铃声都会是替换后的铃声。
替换后其他厂商手机收到邀请后的铃声也会是替换后的铃声。
常见问题
1. 应用杀死后无法弹出来电UI
确认收到了推送,收不到推送需要确认下 Chat 控制台是否正确上传证书。参见文档上述快速接入的第一步,看下是否添加正确。
确认控制台选择了FCM 数据消息,对照上述准备条件的第二步;
确认收到数据消息,过滤日志(关键字:TIMPush),检查下述日志有打印;
确认实现了自动登录。自动登录后才会去拉通话请求,才能显示来电UI。
2. 相关权限开启
为实现良好的通话体验,建议您在应用中开启“通知”权限、“显示在其他应用上层(悬浮窗)”以及“后台拉起界面”权限,具体方法如下:
悬浮窗权限:用于展示自定义的来电通知,以及通话悬浮窗。
后台拉起界面权限:用于当应用在后台时拉起界面(例如:VIVO手机)。
fun requestPermission(context: Context?) {//In TUICallKit,Please open both OverlayWindows and Background pop-ups permission.PermissionRequester.newInstance(PermissionRequester.FLOAT_PERMISSION, PermissionRequester.BG_START_PERMISSION).request()}
安装应用后,您可以长按应用图标,选择“应用信息”,然后开启“通知”权限、“显示在其他应用上层”以及“后台拉起界面”权限。或者您可以到
手机 > 系统设置 > 应用管理 > 应用
中手动开启上述权限。Pixel 4a | VIVO |
| |
交流与反馈
如果有任何需要或者反馈,您可以联系:
info_rtc@tencent.com
。