w***@163.com
w***@163.com
  • 发布:2026-02-10 16:31
  • 更新:2026-02-10 16:32
  • 阅读:18

华为手机 应用程序 处理离线和在线 自定义声音 在线配置没有生效 代码如下

分类:插件市场

客户端
//DCloud-PushSound 在线推送自定义声音
export function initPushSound() {
plugin.setCustomPushChannel({
soundName: "pushsoundhw",
channelId: "huawei_channel",
channelDesc: "报警铃声",
enableLights: true,
enableVibration: true,
importance: 3,
lockscreenVisibility: 0
}, (msg) => {
console.log("push sound error :" msg)
});

}
//华为离线客户端自定义声音配置
export function initHWPushSound() {
const channelManager = getChannelManager()
channelManager.setPushChannel({
channelId: 'huawei_channel',
channelDesc: '华为离线推送',
soundName: 'pushsoundhw' // pushsound.mp3 放在 raw 目录
})
}

//服务端
return await uniPush.sendMessage({
"push_clientid": jsonObj.cid, //客户端推送标识push_clientid
"force_notification": true,
"title": jsonObj.title,
"content": jsonObj.content,
"payload": jsonObj.payload,
"options": {
"HW": {
"/message/android/category": "WORK",
"/message/android/notification/channel_id": 'huawei_channel',
"/message/android/notification/sound": "pushsoundhw",
"channelId": "huawei_channel",
"sound": "pushsoundhw",

        }  
    }  
})  

声音文件在 /nativeResources/android/res/raw/pushsoundhw.mp3

代码上有问题吗?

2026-02-10 16:31 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

根据知识库中关于华为推送自定义声音的相关内容,结合你提供的代码,在线推送自定义声音未生效的问题可能由以下几个原因导致:


✅ 1. 声音文件命名与路径

  • 声音文件名不能带后缀,如 pushsoundhw.mp3 应命名为 pushsoundhw
  • 文件必须放在 /nativeResources/android/res/raw/ 目录下,且需重新打包生效

✅ 2. 通知渠道(channelId)不可复用

来自知识库:push > 客户端API > 注意事项

一旦通知渠道建立,不能修改其配置,即使删除再重建同名渠道也无效。
若你曾用 huawei_channel 创建过渠道,必须更换一个新的 channelId 才能更换铃声。

建议:

channelId: "huawei_channel_v2"

✅ 3. 服务端参数结构问题

你服务端配置中 options.HW 的字段写法存在冗余与错误字段:

"/message/android/notification/sound": "pushsoundhw",  
"channelId": "huawei_channel",  
"sound": "pushsoundhw"

根据知识库,华为推送服务端应使用字段

"options": {  
  "HW": {  
    "/message/android/notification/channel_id": "huawei_channel_v2",  
    "/message/android/notification/sound": "pushsoundhw"  
  }  
}

注意:channelIdsound 是客户端字段,不应出现在服务端配置中


✅ 4. 确认离线推送是否已集成成功

来自知识库:unipush-v1 > 1.3.2 确认离线厂商是否可用

请确认:

  • 华为后台已正确配置 SHA256 指纹证书;
  • 使用了正式签名包;
  • agconnect-services.json 已上传;
  • 华为推送服务已开通;
  • 云端打包后重新安装测试。

✅ 5. 建议测试流程

  1. 更换 channelId 为新的值(如 huawei_channel_v2);
  2. 确保声音文件命名为 pushsoundhw,无后缀,放在 /res/raw/
  3. 重新打包并安装;
  4. 服务端使用如下结构发送:
"options": {  
  "HW": {  
    "/message/android/notification/channel_id": "huawei_channel_v2",  
    "/message/android/notification/sound": "pushsoundhw"  
  }  
}

✅ 总结

问题点 是否已处理
声音文件命名正确
文件路径正确
channelId 是否更换 ❌(需更换)
服务端字段是否正确 ❌(需调整)
是否重新打包安装 ❓(建议确认)

如仍有问题,建议通过 插件市场自定义铃声插件 提供的 demo 进行对比测试。

内容为 AI 生成,仅供参考

要回复问题请先登录注册