本文介绍如何替换 TUICallKit 的来电铃声,来电铃声分为应用铃声和离线推送铃声。
一、 设置应用铃声
设置应用铃声有两种方式:替换铃声音频、调用设置铃声接口。
1.替换音频文件
如果您通过源码依赖 TUICallKit 组件,您可以替换
res\\raw
文件夹下的三个音频文件来达到替换铃声的目的:文件名 | 用途 |
phone_dialing.mp3 | 发起呼叫时的铃音 |
phone_hangup.mp3 | 被挂断的铃音 |
phone_ringing.mp3 | 接到呼叫时的铃音 |
2.设置铃声接口
您也可以通过 setCallingBell 接口设置来电铃声。
TUICallKit.createInstance(context).setCallingBell(filePath)
TUICallKit.createInstance(context).setCallingBell(filePath);
3. 设置静音模式
如果您不需要响铃,您可以通过 enableMuteMode 设置静音模式。
TUICallKit.createInstance(context).enableMuteMode(true)
TUICallKit.createInstance(context).enableMuteMode(true);
二、设置离线推送铃音
离线通知铃声仅支持以下厂商自定义:华为、小米、FCM,其他厂商 OPPO、vivo、荣耀等暂不支持。
TIMPush 提供了自定义铃声的方法,详情如下:
将铃音文件添加到本地 Android Studio 工程 res/raw 目录下。
调用接口 setAndroidSound() 和 setIOSSound() 接口设置铃声。
val pushInfo = OfflinePushInfo()pushInfo.title = "Mike" pushInfo.desc = "You have a new call"pushInfo.androidSound = "phong_ring"val params = TUICallDefine.CallParams() params.offlinePushInfo = pushInfo TUICallKit.createInstance(context).call("mike", TUICallDefine.MediaType.Video, params, callback)
TUICallDefine.OfflinePushInfo pushInfo = new TUICallDefine.CallParams().offlinePushInfo; pushInfo.setAndroidSound("phone_ring");
注意
将铃音文件添加到本地 Android Studio 工程 res/raw 目录下。
Android 8.0 之前,调用 setAndroidSound() 和 setIOSSound() 接口设置铃声。
Android 8.0 之后,还需要登录小米厂商控制台并创建channel并做好配置,然后在 即时通信 IM 控制台中配置 ChannelID,或在参数中配置。
val pushInfo = OfflinePushInfo()pushInfo.title = "Mike" pushInfo.desc = "You have a new call"pushInfo.androidSound = "phong_ring"pushInfo.androidXiaoMiChannelID = "channelID"val params = TUICallDefine.CallParams() params.offlinePushInfo = pushInfo TUICallKit.createInstance(context).call("mike", TUICallDefine.MediaType.Video, params, callback)
FCM自定义铃声,需要在登录之前进行配置,详情请参见 configFCMPrivateRing。
TIMPushManager.getInstance().configFCMPrivateRing("fcm_push_channel", "phone_ring", true)
Android 8.0 之前,调用setAndroidSound() 和 setIOSSound() 接口设置铃声。
Android 8.0之后,FCM 需要在 即时通信 IM 控制台中配置 channelID,或在参数中配置。
val pushInfo = OfflinePushInfo()pushInfo.title = "Mike" pushInfo.desc = "You have a new call"pushInfo.androidSound = "phong_ring"pushInfo.androidFCMChannelID = "fcm_push_channel"val params = TUICallDefine.CallParams() params.offlinePushInfo = pushInfo TUICallKit.createInstance(context).call("mike", TUICallDefine.MediaType.Video, params, callback)
如果您想自定义该铃声,可以替换
tuicallkit-kt/src/main/res/raw/phone_ringing.mp3
文件。注意:
替换掉该铃声后,不论应用在前台、后台或者离线,铃声都会是替换后的铃声。
替换后其他厂商手机收到邀请后的铃声也会是替换后的铃声。
如果项目引入了 TUIOfflinePushPush 组件,需在应用启动时,调用以下方法开启离线通知自定义铃音能力。
class DemoApplication : Application() {override fun onCreate() {TUIOfflinePushConfig.getInstance().isAndroidPrivateRing = true}}
public class DemoApplication extends Application {@Overridepublic void onCreate() {TUIOfflinePushConfig.getInstance().setAndroidPrivateRing(true);}}
1.华为 & APNs
调用接口 setAndroidSound() 和 setIOSSound()。
定制铃音资源文件,将铃音文件添加到本地 Android Studio 工程 res/raw 目录下。
val pushInfo = OfflinePushInfo()pushInfo.iosSound = "铃声名称.mp3"pushInfo.androidSound = "铃声名称"
TUICallDefine.OfflinePushInfo pushInfo = new TUICallDefine.OfflinePushInfo();pushInfo.setIOSSound("铃声名称.mp3");pushInfo.setAndroidSound("铃声名称");
2.小米
(1)Android 8.0 之前,调用setAndroidSound() 和 setIOSSound()。定制铃音资源文件,将铃音文件添加到工程 res/raw 目录下(参考上述华为调用)。
val pushInfo = OfflinePushInfo()pushInfo.iosSound = "铃声名称.mp3"pushInfo.androidSound = "铃声名称"pushInfo.androidXiaoMiChannelID = "厂商申请的channelID"
TUICallDefine.OfflinePushInfo pushInfo = new TUICallDefine.OfflinePushInfo();pushInfo.setIOSSound("铃声名称.mp3");pushInfo.setAndroidSound("铃声名称");pushInfo.setAndroidXiaoMiChannelID("厂商申请的channelID");
注意
Android 8.0之前的方式,IMSDK 6.1.2155 及以上版本支持。
Android 8.0之后的方式,IMSDK 7.0.3754 及以上版本支持。
3.FCM
Android 8.0 之前,调用 setAndroidSound() 和 setIOSSound()。定制铃音资源文件,将铃音文件添加到工程 res/raw 目录下(参考上述华为调用)。
Android 8.0之后,FCM 需要配置 channelID 以及铃音资源,TUICallKit 引入的 tuiofflinepush 组件已经处理了自定义铃声的播放。铃音文件需要添加到您本地 Android Studio 工程的 res/raw 目录下,并指定铃音名称和 channel ID 的名称,详细请参见 PrivateConstants 类。
public class PrivateConstants {// FCM 通道指定 channel IDpublic static String fcmPushChannelId = "FCM ChannelID";// FCM 需指定通道的推送铃音名称,与AndroidStudio 工程里 res/raw 目录中的铃音文件名一致,不需要后缀名public static String fcmPushChannelSoundName = "铃声名称";}
val pushInfo = OfflinePushInfo()pushInfo.iosSound = "铃声名称.mp3"pushInfo.androidSound = "铃声名称"pushInfo.androidFCMChannelID = "厂商申请的channelID"
TUICallDefine.OfflinePushInfo pushInfo = new TUICallDefine.OfflinePushInfo();pushInfo.setIOSSound("铃声名称.mp3");pushInfo.setAndroidSound("铃声名称");pushInfo.setAndroidFCMChannelID("厂商申请的channelID");
注意
Android 8.0之前的方式,IMSDK 6.1.2155 及以上版本支持。
Android 8.0之后的方式,IMSDK 7.0.3754 及以上版本支持。
FCM 自定义铃声或者设置 channel id 仅支持证书模式。