更新记录

1.0.0(2025-05-28) 下载此版本

新增功能

  • 新增了switchIcons(切换图标), restoreIcons(恢复默认), getSwitchList(可切换列表)的方法
  • 初始版本

问题修复

功能优化


平台兼容性

uni-app

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - 5.0 × ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
× × × × × × - × × × ×

uni-app x

Chrome Safari Android iOS 鸿蒙 微信小程序
- - 5.0 × × ×

动态切换应用图标、名称(节假日、VIP用户、活动等场景的动态切换(ima-icons)

ima-icons 是一款动态切换应用图标、名称的UTS插件,支持切换应用图标切换应用名称切换应用图标和名称等功能,可实现节假日(元旦、春节)、VIP用户(vip、svip)、活动(6.18、双11、春节年货)等场景的动态切换应用图标、名称

💎建议

  • 切换图标(即启用 activity-alias)时,Android 系统的默认行为是:重启整个 app 进程,以便 Launcher 更新图标和入口
  • 因此,App 自动退出并重新启动(或不启动)是系统行为,无法完全避免,但我们可以做一些“静默处理”的优化,使切换尽量不打扰用户体验
  • 因某些品牌的手机内核或者是系统的问题,导致切换app时会退出应用,我们可以采用一些用户体验优化手段【有些品牌手机不受影响】
  • ✅ 方法一:切换图标后自动拉起 App(模拟“静默”)
  • ✅ 方法二:切图标后提示“切换成功,稍后自动返回 App”,增强体验感知
  • ✅ 方法三:将图标切换放在 App 空闲状态或退出后执行

⚠️注意️

  • android 端已全部完成代码的开发与测试(已完成)
  • harmony 端(计划中)
  • 运行到基座时,只要是更改过代码后,代码‘正在同步手机端程序文件’时可能无法打开,需要手动去打开应用(正式发布不影响)

需要权限

使用示例【此示例的代码只实现了基础操作的逻辑,更多示例请导入项目】

  • 新建一个test.vue的文件

<template>
  <view class="ima-test">
    <view class="ima-test-item" @click="onSwitchList">可切换列表名称</view>
    <view class="ima-test-item" @click="onSwitchIcons">切换 图标|名称</view>
    <view class="ima-test-item" @click="onRestoreIcons">恢复默认</view>
  </view>
</template>

<script>
  import {getSwitchList, switchIcons, restoreIcons} from "@/uni_modules/ima-icons";

  let _this = null
  export default {
    data() {
      return {
        switchList: []
      }
    },
    methods: {
      // 可切换列表名称
      onSwitchList() {
        const switchList = getSwitchList();
        _this.switchList = switchList
        console.log('可切换列表名称', switchList)
      },
      // 切换 图标|名称
      onSwitchIcons() {
        const aliasName = _this.switchList(0) // 选择第一个切换方式
        switchIcons(aliasName)
      },
      // 恢复默认
      onRestoreIcons() {
        restoreIcons()
      }
    }
  }
</script>

<style lang="scss">
  .ima-test {

  }
</style>

方法

方法名称 说明 方法参数 平台
getSwitchList 返回可切换列表 android
switchIcons 切换图标(图标、名称、图标+名称) aliasName: 可切换列表参数(数据来源getSwitchList中返回的) android
restoreIcons 恢复默认(默认的图标+名称) android

图标配置

  • 将图标放在uni_modules/ima-icons/utssdk/app-android/res/mipmap-xxhdpi
  • 建议图标格式:png
  • 建议图标尺寸:最低不低于144x144、最大不大于:512x512

切换配置

  • 【必须】android:name: 切换switchIcons方法中的aliasName参数(即切换的名称),然后需要在uni_modules/ima-icons/utssdk/interface.uts文件中添加ICONS_CONFIG的值
  • 【必须】android:enabled: 设置值为false(不要为true,否则导致多图标)【固定值】
  • 【必须】android:exported: 设置值为true【固定值】
  • 【按需】android:icon: 图标参数,"@mipmap/xxxx"(其中的‘xxxx’为图标的名称,不带后缀)
  • 【按需】android:roundIcon: 圆形图标(有则配置,无则不配)【和android:icon放在同一个目录】
  • 【按需】android:label: 应用名称(即app的名称)
  • 【必须】android:targetActivity: 设置值为io.dcloud.PandoraEntry【固定值】,然后需要在uni_modules/ima-icons/utssdk/interface.uts文件中配置MAIN_ACTIVITY的值

uni_modules/ima-icons/utssdk/app-android/AndroidManifest.xml中的配置

<activity-alias
    android:name="MyIconAndLabel1"
    android:enabled="false"
    android:exported="true"
    android:icon="@mipmap/icon1"
    android:roundIcon="@mipmap/icon1_round"
    android:label="切换图标名称1" 
    android:targetActivity="io.dcloud.PandoraEntry">
    <!-- 相同部分,去掉,具体请导入示例参看 -->
</activity-alias>

切换(图标 + 名称)配置

  • 【必须配置】android:icon
  • 【必须配置】android:label
  • 【按需配置】android:roundIcon(没有的话删除,不建议为空)

切换图标、不切换名称

  • 【必须配置】android:icon
  • ⚠️【不要配置】android:label(删除掉)
  • 【按需配置】android:roundIcon(没有的话删除,不建议为空)

切换名称、不切换图标

  • ⚠️【不要配置】android:icon(删除掉)
  • 【必须配置】android:label
  • 【按需配置】android:roundIcon(没有的话删除,不建议为空)

隐私、权限声明

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

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

插件不采集任何数据

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

许可协议

MIT协议

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