cordova-plugin-local-notification的smallIcon、振动、自定义音效不生效求助
Cordova本地通知smallIcon、振动、自定义音效不生效解决方案
以下解决方案针对cordova-plugin-local-notification插件,按参数分别对应处理:
通用前置检查
- 提前请求系统通知权限:Android 13+需要申请
POST_NOTIFICATIONS权限,iOS需要先请求通知授权后再调度通知 - 测试时不要开启设备全局静音/勿扰模式,检查当前应用的通知权限开关(包含声音、振动权限)是否全部开启
1. smallIcon不生效修复
smallIcon仅对Android平台生效,iOS会自动使用应用图标作为通知小图标,无需配置:
- 图标必须符合Android系统规范:仅使用白色内容+透明背景的灰度图,禁止使用彩色图,按各分辨率切图:mdpi(2424px)、hdpi(3636px)、xhdpi(4848px)、xxhdpi(7272px)、xxxhdpi(96*96px)
- 将切好的图标放到项目
platforms/android/app/src/main/res/下对应drawable-*目录,命名为全小写+下划线格式,例如ic_noti_small.png - 代码中配置直接写资源名,不需要加路径和后缀:
smallIcon: 'ic_noti_small'
2. vibrate振动不生效修复
- 先在
config.xml中添加Android振动权限声明:<uses-permission android:name="android.permission.VIBRATE" /> - 不要直接传
vibrate: true,改为振动时长数组,例如:vibrate: [1000, 500, 1000] // 规则:振动1s→暂停0.5s→振动1s - iOS平台不需要额外配置vibrate参数,通知振动逻辑由系统根据用户全局设置控制
3. 自定义sound音效不生效修复
- 音效文件要求:Android支持mp3/wav格式,iOS支持caf/aiff/wav格式,时长不超过30s,命名为全小写无特殊字符
- 将音效文件放入对应平台原生资源目录:
- Android:放到
platforms/android/app/src/main/res/raw目录下,例如message.mp3 - iOS:将音效文件添加到Xcode项目的Resources目录,勾选「Copy items if needed」和对应应用target
- Android:放到
- 代码配置不需要加
file://前缀,直接对应文件名:// Android端 sound: 'message' // iOS端 sound: 'message.mp3'
调整后的完整调度代码示例:
cordova.plugins.notification.local.schedule({ title: 'Some title', text: 'Some text', smallIcon: 'ic_noti_small', icon: 'file://img/icon.png', vibrate: [1000, 500, 1000], sound: device.platform === 'Android' ? 'message' : 'message.mp3' });
内容的提问来源于stack exchange,提问作者Дмитрий Ковалевский
相关产品推荐
相关产品推荐

