离线通话推送

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推送平台,得到 AppIDAppKey 等参数以及 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 发出的事件通知,实现自动登录。
Kotlin
Java
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 {
@Override
public 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() {
@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 的离线推送能力。
说明:
如果您的 Android 程序在接收推送或拉起页面时遇到问题,您可以参见 被叫端来电显示策略 对问题进行排查。

高级功能

自定义铃声

如果您想自定义该铃声,可以替换 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