Custom Definition Ringtone
Android 8.0 以下系统
1. 定制的铃音资源文件,Android 添加到工程 raw 目录下,iOS 链接进 Xcode 工程。
2. 发送消息指定生效自定义铃音。
{// ..."OfflinePushInfo": {"AndroidInfo": {"Sound": "shake", // 不带后缀},"ApnsInfo": {"Sound": "apns.mp3",}}}
V2TIMOfflinePushInfo v2TIMOfflinePushInfo = new V2TIMOfflinePushInfo();v2TIMOfflinePushInfo.setAndroidSound("铃音名称");v2TIMOfflinePushInfo.setIOSSound("铃音名称.mp3");String msgID = V2TIMManager.getMessageManager().sendMessage(v2TIMMessage, isGroup ? null : userID, isGroup ? groupID : null,V2TIMMessage.V2TIM_PRIORITY_DEFAULT, false, v2TIMOfflinePushInfo, new V2TIMSendCallback<V2TIMMessage>() {@Overridepublic void onProgress(int progress) {}@Overridepublic void onError(int code, String desc) {}@Overridepublic void onSuccess(V2TIMMessage v2TIMMessage) {}});
注意:
IMSDK 6.1.2155 及以上版本支持。
接口支持华为、小米、FCM 和 APNS。
Android 8.0 及以上系统
华为 和 ANPS
华为、APNS 可调用上面接口来设置离线推送铃音提示。
OPPO
1.将定制的铃音资源文件放在工程资源的 raw 目录下,然后通过以下方式创建通知 channel。
// 自定义创建示例if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);NotificationChannel notificationChannel =new NotificationChannel("channelId", "channelName", NotificationManager.IMPORTANCE_HIGH);notificationChannel.enableLights(true);notificationChannel.enableVibration(true);notificationChannel.setShowBadge(true);notificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);// "android.resource://包名/raw/private_ring"notificationChannel.setSound(Uri.parse("sound"), null);nm.createNotificationChannel(notificationChannel);}
2.使用创建的 channel。
创建私信通道。
发送消息指定 channelID 生效自定义铃音,接口设置参考如下,控制台设置见证书的 channelID 字段,两者设置一个即可。
{// ..."OfflinePushInfo": {"AndroidInfo": {"OPPOChannelID": "test_OPPO_channel_id",}}}
小米
2.发送消息指定 channelID 生效自定义铃音,接口设置参考如下,控制台设置见证书的 channelID 字段,两者设置一个即可。
{// ..."OfflinePushInfo": {"AndroidInfo": {"XiaoMiChannelID": "test_XiaoMi_channel_id",}}}
V2TIMOfflinePushInfo v2TIMOfflinePushInfo = new V2TIMOfflinePushInfo();v2TIMOfflinePushInfo.setAndroidXiaoMiChannelID("厂商申请的 channel ID");String msgID = V2TIMManager.getMessageManager().sendMessage(v2TIMMessage, isGroup ? null : userID, isGroup ? groupID : null,V2TIMMessage.V2TIM_PRIORITY_DEFAULT, false, v2TIMOfflinePushInfo, new V2TIMSendCallback<V2TIMMessage>() {@Overridepublic void onProgress(int progress) {TUIChatUtils.callbackOnProgress(callBack, progress);}@Overridepublic void onError(int code, String desc) {TUIChatUtils.callbackOnError(callBack, TAG, code, desc);}@Overridepublic void onSuccess(V2TIMMessage v2TIMMessage) {}});
FCM
1.将定制的铃音资源文件放在工程资源的 raw 目录下,然后通过以下方式创建通知 channel。
// 自定义创建示例if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {NotificationManager nm = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);NotificationChannel notificationChannel =new NotificationChannel("channelId", "channelName", NotificationManager.IMPORTANCE_HIGH);notificationChannel.enableLights(true);notificationChannel.enableVibration(true);notificationChannel.setShowBadge(true);notificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);// "android.resource://包名/raw/private_ring"notificationChannel.setSound(Uri.parse("sound"), null);nm.createNotificationChannel(notificationChannel);}
2.发送消息指定自定义铃音的 channelID,
{// ..."OfflinePushInfo": {"AndroidInfo": {"GoogleChannelID": "test_Google_channel_id",}}}
V2TIMOfflinePushInfo v2TIMOfflinePushInfo = new V2TIMOfflinePushInfo();v2TIMOfflinePushInfo.setAndroidFCMChannelID(PrivateConstants.fcmPushChannelId);String msgID = V2TIMManager.getMessageManager().sendMessage(v2TIMMessage, isGroup ? null : userID, isGroup ? groupID : null,V2TIMMessage.V2TIM_PRIORITY_DEFAULT, false, v2TIMOfflinePushInfo, new V2TIMSendCallback<V2TIMMessage>() {@Overridepublic void onProgress(int progress) {TUIChatUtils.callbackOnProgress(callBack, progress);}@Overridepublic void onError(int code, String desc) {TUIChatUtils.callbackOnError(callBack, TAG, code, desc);}@Overridepublic void onSuccess(V2TIMMessage v2TIMMessage) {}});
注意:
IMSDK 7.0.3754 及以上版本支持。
FCM 自定义铃声或者设置 ChannnelID 仅支持证书模式。
1. 请在发送消息的时候设置 OfflinePushInfo 的 iOSSound 字段, iOSSound 传语音文件名。
{// ..."OfflinePushInfo": {"ApnsInfo": {"Sound": "apns.mp3",}}}
若集成了 IM 相关产品,请您发送消息参考:
V2TIMOfflinePushInfo *pushInfo = [[V2TIMOfflinePushInfo alloc] init];pushInfo.title = @"push title";pushInfo.iOSSound = @"phone_ringing.mp3"; // your voice file's name[[V2TIMManager sharedInstance] sendMessage:msg receiver:receiver groupID:groupID priority:V2TIM_PRIORITY_DEFAULT onlineUserOnly:NO offlinePushInfo:pushInfo progress:nil succ:^{} fail:^(int code, NSString *msg) {}];
说明:
离线推送声音设置(仅对 iOS 生效), 当 iOSSound = kIOSOfflinePushNoSound,表示接收时不会播放声音。
当 iOSSound = kIOSOfflinePushDefaultSound,表示接收时播放系统声音。
如果要自定义 iOSSound,需要先把语音文件链接进 Xcode 工程,然后把语音文件名(带后缀名)设置给 iOSSound。
iOS 自定义铃音长度不能超过 30s。
2. 请在发送消息的时候设置 OfflinePushInfo 的
AndroidSound
字段, AndroidSound
传语音文件名。{"OfflinePushInfo": {"AndroidInfo": {"Sound": "shake", // 不带后缀"OPPOChannelID": "test_OPPO_channel_id","XiaoMiChannelID": "test_XiaoMi_channel_id","OPPOChannelID": "test_OPPO_channel_id","GoogleChannelID": "test_Google_channel_id"},"ApnsInfo": {"Sound": "apns.mp3"}}}
若集成了 IM 相关产品,请您发送消息参考:
V2TIMOfflinePushInfo *pushInfo = [[V2TIMOfflinePushInfo alloc] init];pushInfo.title = @"push title";pushInfo.AndroidSound = @"phone_ringing"; // your voice file's name[[V2TIMManager sharedInstance] sendMessage:msg receiver:receiver groupID:groupID priority:V2TIM_PRIORITY_DEFAULT onlineUserOnly:NO offlinePushInfo:pushInfo progress:nil succ:^{} fail:^(int code, NSString *msg) {}];
说明:
离线推送声音设置(仅对 Android 生效, 仅 imsdk 6.1 及以上版本支持) 只有华为和谷歌手机支持设置铃音提示。
小米铃音设置请您参见:服务端 Java SDK 文档。
如果要自定义 AndroidSound,需要先把语音文件放到 Android 工程的 raw 目录中,然后把语音文件名(不需要后缀名)设置给 AndroidSound。
注意:
接口支持华为、小米、FCM 和 APNS。
定制的铃音资源文件,Android 添加到工程 raw 目录下,iOS 链接进 Xcode 工程。
请在发送消息的时候设置 offlinePushInfo 的
iOSSound
及 androidSound
字段。{// ..."OfflinePushInfo": {"AndroidInfo": {"Sound": "shake", // 不带后缀"OPPOChannelID": "test_OPPO_channel_id","XiaoMiChannelID": "test_XiaoMi_channel_id","OPPOChannelID": "test_OPPO_channel_id","GoogleChannelID": "test_Google_channel_id"},"ApnsInfo": {"Sound": "apns.mp3"}}}
具体各厂商配置,请参阅 Android 及 iOS 模块的内容。调用的方法均在 Flutter 版本的 IM SDK 中有同名方法。