更新记录
1.0.2(2023-03-20) 下载此版本
Android自定义铃音,soundName
参数变为可选,当不设置soundName
时为默认铃音。
1.0.1(2022-04-20) 下载此版本
Android自定义铃音添加方法。
1.0.0(2022-02-23) 下载此版本
自定义推送铃声插件,同时支持 Android、iOS 平台
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 12.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | 适用版本区间:9 - 15 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
插件使用说明
功能说明: 本插件仅支持替换 unipush 推送消息时播放的声音,并且只支持音频文件,无法实现自定义语言播报功能(语音播报功能指的是类似微信支付宝收款提示音)
iOS 使用说明
注:使用该插件前提,请确保您的项目已经集成推送并可以正常收到推送消息。
1.绑定插件使用的项目
- 在插件页面选择(购买 for 云打包),并勾选使用插件的项目;
2.在 HBuilderX 中配置项目
-
选择 manifest -> App原生插件配置 -> 云端插件 -> 选择云端插件 -> 勾选此插件
-
在项目根目录中的
nativeplugins
目录中新建DCloud-PushSound
目录,在DCloud-PushSound
目录中新建ios
目录,然后在ios
目录中放入铃声文件pushsound.caf
注意,文件必须命名为pushsound.caf
说明
nativeplugins
目录为原生插件目录,如果没有的话请自行创建此目录DCloud-PushSound
目录为该插件目录,DCloud-PushSound
为该插件的ID,必须拼写正确pushsound.caf
为插件配置的铃声名称,必须是caf
音频文件并且必须命名为pushsound.caf
,下面有将其他类型音频文件转成caf
文件的方法
-
音频文件转换
caf
文件方法(仅mac
系统,windows系统可以通过pp助手转换音频,或者自行搜索一下音频转换工具)时长要求 30 秒以内
打开终端cd到音频文件所在目录,运行命令:(注:将
提示音.m4r
改成你自己的铃声,支持 mp3 或其他格式的音频转换)afconvert 提示音.m4r pushsound.caf -d ima4 -f caff -v
3.打自定义基座测试
- 重新打自定义基座,运行到测试机
-
后端推送测试时请将 iOS 的
apns
配置信息中的sound
字段值改为pushsound.caf
php 示例
$payload = '{"title":"测试标题","content":"测试内容","sound":"pushsound.caf","payload":"test"}'; $intent = 'intent:#Intent;action=android.intent.action.oppopush;launchFlags=0x14000000;component=io.dcloud.HBuilder/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=测试标题;S.content=测试内容;S.payload=test;end'; $template = new IGtTransmissionTemplate();//使用透传消息模板 $template->set_appId(APPID);//应用appid $template->set_appkey(APPKEY);//应用appkey $template->set_transmissionType(2);//透传消息类型 $template->set_transmissionContent($payload);//消息内容 $notify = new IGtNotify(); $notify->set_title('测试标题'); $notify->set_content('测试内容'); $notify->set_intent($intent); $notify->set_type(NotifyInfo_type::_intent); $template->set3rdNotifyInfo($notify);
添加多个音频文件
如需支持多个音频文件按下面的步骤操作
1.在插件页面选择(下载 for 离线打包),将下载的插件包解压;
2.将 DCloud-PushSound 文件夹拷贝到 uni工程 nativeplugins
路径下;
3.将多个音频文档放到插件目录中 ios 路径下;
4.编辑插件目录中的 package.json,在 resource 节点中填写音频文件名称;
5.选择 manifest -> App原生插件配置 -> 本地插件 -> 选择本地插件 -> 勾选此插件
6.然后就可以制作自定义基座进行测试;
Android使用说明
Android端的自定义推送渠道,由此可以实现设置推送铃音。注意Android8.0之上才可以设置推送渠道,8.0之前版本在推送json里设置铃音的方式实现自定义铃音。
插件实现原理说明
首先Android8.0以下只需要有对应的声音文件就可以进行自定义铃声的调用,而Android在8.0以上时,Android使用推送渠道的配置来进行通知的创建(可自定义铃音),所以才由此插件来设置通知渠道,从而设置铃音。
手机厂商支持
现支持小米、华为的自定义铃音。华为申请 自分类权益 后,可以通过铃声文件名称进行下发,华为自定义铃音服务端api配置 ;而小米需要在小米开发者平台的控制台配置自定义渠道名称,后端发送通知时需携带小米的自定义渠道名称。如使用uniPush,请结合个推自定义铃声进行服务端api接口的设置。另外,本地自建通知也可以使用本插件进行铃音设置。
引入插件
注意:该方法仅Android平台支持,iOS平台不要调用
const plugin = uni.requireNativePlugin("DCloud-PushSound");
设置自定义渠道
setCustomPushChannel(options,errorCB);
options
属性 | 类型 | 必填 | 说明 |
---|---|---|---|
soundName | String | 否 | 添加的声音文件,注意raw目录下必须要有 ,1.0.2以后不传此字段将使用默认铃音。 |
channelId | String | 是 | 通知渠道id |
channelDesc | String | 是 | 通知渠道描述 |
enableLights | Boolean | 否 | 呼吸灯闪烁 |
enableVibration | Boolean | 否 | 震动 |
importance | Integer | 否 | 通知的重要性级别,可选范围 IMPORTANCE_LOW:2 IMPORTANCE_DEFAULT:3 IMPORTANCE_HIGH:4 |
lockscreenVisibility | Integer | 否 | 锁屏可见性,可选范围VISIBILITY_PRIVATE:0、VISIBILITY_PUBLIC:1、VISIBILITY_SECRET:-1。 |
errorCB
错误信息的回调
void errorCB(msg){
}
msg : 错误信息。
示例
plugin.setCustomPushChannel({
soundName: "pushsound",
channelId: "test",
channelDesc:"test渠道描述",
enableLights:true,
enableVibration:true,
importance:3,
lockscreenVisibility:0
});
获取所有通知渠道
获取当前应用注册的所有的通知渠道。
plugin.getAllChannels((p) => {
console.log("channels :" + JSON.stringify(p));//返回数组
})
删除指定渠道
plugin.deleteChannel("test");//渠道id
测试本地通知渠道
plugin.testNotification({
channelId: "test" //渠道id
});
声音文件设置
在nativeplugins目录下新建目录,并放入推送声音文件,如下图:
如多个mp3文件,不能同名以防冲突。
特别注意
由于Android通知渠道的机制问题,一旦通知渠道建立,便不能修改此渠道的配置,哪怕删除渠道后再次创建同channelid名称的渠道,也不会改变原先渠道的配置(除非删除应用),最明显的现象就是铃声动态修改失败,比如使用插件时,第一次的设置参数是{"channelid":"test","sound":"pushsound"} , 这时你想切换铃音,你的channelid就不能再叫test了,而应该为{"channelid":"test2","sound":"ring"} ,此时会新建一个渠道。