更新记录

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

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
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"} ,此时会新建一个渠道。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

作者未提供license.md

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问