更新记录
1.0.10(2025-09-15)
- 增加鸿蒙支持
1.0.9(2025-04-09)
优化
1.0.8(2025-04-02)
- 优化兼容性
平台兼容性
uni-app(3.6.9)
Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
---|---|---|---|---|---|---|---|---|
√ | √ | - | - | √ | √ | 5.0 | √ | √ |
微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
---|---|---|---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - | - | - | - |
uni-app x(3.6.9)
Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
---|---|---|---|---|---|
- | - | 5.0 | √ | √ | - |
其他
多语言 | 暗黑模式 | 宽屏模式 |
---|---|---|
√ | √ | √ |
动态切换桌面icon图标,支持vue2/vue3,ios/android/harmony
- 动态切换app的桌面icon图标,实现类似双十一、过年时app桌面图标自动变化的效果
相关插件推荐
- app、H5、短信启动拉起唤醒其他app、添加桌面快捷方式https://ext.dcloud.net.cn/plugin?id=***
- 自定义锁屏界面,类似QQ音乐在锁屏时动态刷新歌词封面的效果https://ext.dcloud.net.cn/plugin?id=***
- 动态切换桌面icon图标实现类似双十一、过年时app桌面图标自动变化的效果支持vue2vue3https://ext.dcloud.net.cn/plugin?id=***
- 长按桌面图标快捷菜单入口shortcut3dtouchhttps://ext.dcloud.net.cn/plugin?id=***
集成步骤
-
配置项目
- 下载demo示例,将demo里的nativeResources文件、AndroidManifest.xml、Info.plist文件拷贝到自己的项目里(如果已经存在此文件或文件夹请合并内容,合并内容可咨询作者)
- 替换nativeResources下iOS和Android的图标文件,文件名称不能修改,只替换图片
- 删除本地基座和手机app,重新自定义基座,使用自定义基座运行
-
鸿蒙集成步骤:
- 首先开通图标管理服务,并保证应用处于正式上架状态;
- 在图标管理页面上传应用的个性化图标,上传正方形大小为216*216px的图片,格式为PNG格式或WEBP格式
- 业务流程:业务流程:查询动态图标信息(UTSQueryDynamicIcons)->切换动态图标(UTSQueryDynamicIcons)->恢复默认图标(UTSResetAppIcon)
-
ios和Android当前仅支持3个图标切换,如需支持更多图片切换,请联系作者定制
接口文档
import {
UTSReplaceAppIcon,
UTSSupportsAlternateIcons,
UTSResetAppIcon,
UTSGetCurrentAppIconName,
UTSQueryDynamicIcons
} from "@/uni_modules/wrs-uts-replaceappicon"
data() {
var isAndroid = true
switch (uni.getSystemInfoSync().platform) {
// android
case 'android':
isAndroid = true
break;
// ios
default:
isAndroid = false
break;
}
return {
isAndroid: isAndroid,
title: 'Hello',
names: ["com.wrs.wrsicon1", "com.wrs.wrsicon2", "com.wrs.wrsicon3"],
msg: null
}
},
- 替换桌面图标icon
- 有些Android机型切换桌面图片后app会自动切换到后台,所以一般Android里在app后台运行时或关闭app时再切换icon
- ios替换桌面图标时,会弹出系统提示框,为了不弹出这个提示框,请同时集成插件https://ext.dcloud.net.cn/plugin?name=wrs-uts-replaceappicon-noalert
var params = {};
switch (uni.getSystemInfoSync().platform) {
case 'android': {
// AndroidManifest.xml,所有的activity-alias名称
let names = ["com.wrs.wrsicon1", "com.wrs.wrsicon2", "com.wrs.wrsicon3"]
params.iconName = "com.wrs.wrsicon1" // AndroidManifest.xml里要显示的activity-alias名称
params.names = names
params.restartSystemLauncher = true; // 是否重启launch,仅支持Android,有些机型需要重启launch后图标才能生效
}
break;
case 'ios': {
params.iconName = "wrsicon1" // Info.plist里配置的CFBundleAlternateIcons节点下的名称
}
break;
case 'harmonyos': {
// 业务流程:查询动态图标信息(UTSQueryDynamicIcons)->切换动态图标(UTSQueryDynamicIcons)->恢复默认图标(UTSResetAppIcon)
UTSQueryDynamicIcons((resp)=>{
let flag = resp.flag
if(flag) {
let icons = resp.icons
let titles = []
for(let i = 0; i < icons.length; i ++) {
titles.push(icons[i].iconUrl)
}
this.showActionSheet(titles, (index)=>{
let iconId = icons[index].iconId
let params = {}
params.iconId = iconId
UTSQueryDynamicIcons(params, (resp)=>{
let suc = resp.flag
if(suc) {
} else {
this.showMsg("切换图标失败:" + JSON.stringify(resp))
}
})
})
} else {
this.showMsg("查询动态图标失败:" + JSON.stringify(resp))
}
})
}
break;
default:
break;
}
UTSReplaceAppIcon(params, (resp) => {
this.showMsg(JSON.stringify(resp))
});
- 重置为app原本的icon
var params = {};
if (this.isAndroid) {
params.names = this.names
}
UTSResetAppIcon(params, (resp)=>{
})
- 判断是否支持修改桌面icon,仅支持iOS
let support = UTSSupportsAlternateIcons()
if (support) {
this.showMsg("当前机型支持修改icon")
} else {
this.showMsg("当前机型不支持修改icon")
}