9***@qq.com
9***@qq.com
  • 发布:2026-06-02 05:31
  • 更新:2026-06-02 11:54
  • 阅读:586

关于uniappx怎么实现app升级,不需要官方的插件

分类:uni-app x

最新开发app需要做系统升级的功能,业务的要求是点击系统升级跳转到应用商店打开app的详情页,让用户点击更新或者打开,就像IOS微信系统升级一样,同时也看了官方提供的插件感觉太折腾了,还要搞cloud, 如果一个按钮点击直接跳转到应用市场多好

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

Ask小助手

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

你的想法很直接,就是想通过一个按钮跳转到应用商店,让用户自己更新。这在 uni-app x 中是完全可以实现的,而且不需要使用官方的 App 升级中心插件。

核心思路就是利用 URL Scheme应用商店链接 来唤起手机上的应用商店,并直接定位到你的 App 详情页。

具体实现方法

在 uni-app x 中,你可以直接使用 uni.openURL 或一个更强大的开源插件 uts-openSchema 来打开这些链接。

1. 使用 uts-openSchema 插件 (推荐)

这是 hello uni-app x 官方示例中使用的方案,功能强大且稳定。

安卓平台

安卓系统主要使用 market://details?id=你的应用包名 这个链接来打开应用商店。

<template>  
  <view>  
    <!-- #ifdef APP-ANDROID -->  
    <button @click="openAppStore">点击跳转到应用商店更新</button>  
    <!-- #endif -->  
  </view>  
</template>  

<script setup lang="uts">  
import { openSchema } from '@/uni_modules/uts-openSchema';  

const openAppStore = () => {  
  // 将 'com.tencent.mm' 替换为你自己的应用包名  
  const packageName = '你的应用包名';   
  openSchema(`market://details?id=${packageName}`);  
}  
</script>

本助手使用国产模型,生成代码准确率较低。强烈建议使用uni-agent生成代码

iOS 平台

iOS 需要跳转到 App Store,链接格式通常为 itms-apps://itunes.apple.com/app/id你的Apple ID

<template>  
  <view>  
    <!-- #ifdef APP-IOS -->  
    <button @click="openAppStore">点击跳转到App Store更新</button>  
    <!-- #endif -->  
  </view>  
</template>  

<script setup lang="uts">  
import { openSchema } from '@/uni_modules/uts-openSchema';  

const openAppStore = () => {  
  // 需要替换为你应用在 App Store Connect 里的 Apple ID  
  const appleId = '你的Apple ID';   
  openSchema(`itms-apps://itunes.apple.com/app/id${appleId}`);  
}  
</script>

本助手使用国产模型,生成代码准确率较低。强烈建议使用uni-agent生成代码

鸿蒙平台

鸿蒙系统可以跳转到华为应用市场。

<template>  
  <view>  
    <!-- #ifdef APP-HARMONY -->  
    <button @click="openAppStore">点击跳转到华为应用市场更新</button>  
    <!-- #endif -->  
  </view>  
</template>  

<script setup lang="uts">  
import { openSchema } from '@/uni_modules/uts-openSchema';  

const openAppStore = () => {  
  // 替换为你在华为应用市场的应用ID  
  const huaweiAppId = 'io.dcloud.hellouniapp.h';   
  openSchema(`https://appgallery.huawei.com/app/detail?id=${huaweiAppId}`);  
}  
</script>

本助手使用国产模型,生成代码准确率较低。强烈建议使用uni-agent生成代码

合并示例

你可以将上述代码合并,利用条件编译,让一套代码适配所有平台。

<template>  
  <view>  
    <button @click="openAppStore">点击跳转到应用商店更新</button>  
  </view>  
</template>  

<script setup lang="uts">  
import { openSchema } from '@/uni_modules/uts-openSchema';  

const openAppStore = () => {  
  // #ifdef APP-ANDROID  
  openSchema('market://details?id=你的应用包名');  
  // #endif  
  // #ifdef APP-IOS  
  openSchema('itms-apps://itunes.apple.com/app/id你的AppleID');  
  // #endif  
  // #ifdef APP-HARMONY  
  openSchema('https://appgallery.huawei.com/app/detail?id=你的鸿蒙应用ID');  
  // #endif  
}  
</script>

本助手使用国产模型,生成代码准确率较低。强烈建议使用uni-agent生成代码

这个 uts-openSchema 插件就是 hello uni-app x 项目里自带的,你可以在官方示例代码中找到它的完整用法:hello uni-app x 示例

2. 使用 uni.openURL (更简单)

如果你不想引入额外的插件,也可以直接使用 uni-app x 内置的 uni.openURL API,效果是一样的。

<script setup lang="uts">  
const openAppStore = () => {  
  // #ifdef APP-ANDROID  
  uni.openURL({  
    url: 'market://details?id=你的应用包名'  
  });  
  // #endif  
  // #ifdef APP-IOS  
  uni.openURL({  
    url: 'itms-apps://itunes.apple.com/app/id你的AppleID'  
  });  
  // #endif  
  // #ifdef APP-HARMONY  
  uni.openURL({  
    url: 'https://appgallery.huawei.com/app/detail?id=你的鸿蒙应用ID'  
  });  
  // #endif  
}  
</script>

本助手使用国产模型,生成代码准确率较低。强烈建议使用uni-agent生成代码

如何获取关键参数?

  • Android 应用包名:可以在 HBuilderX 中你的 manifest.json 文件里,“基础配置” 下的 “Android包名” 找到。
  • iOS Apple ID:登录你的 App Store Connect,进入你的 App 页面,在 “App 信息” 里找到 “Apple ID”。
  • 鸿蒙应用 ID:在你的 AppGallery Connect 项目信息里可以找到。

如果你还需要“检测更新”的逻辑

如果你的需求不仅仅是点击一个按钮,而是希望 App 启动时自动检查后端接口,判断是否需要更新,那么你可能需要一些额外的逻辑。插件市场上有一些现成的插件就是做这个的,它们通常封装好了更新弹窗 UI 和下载逻辑,也支持跳转到应用商店。

例如,这个插件支持打开安卓、苹果、鸿蒙应用市场,也支持 App 内部下载:yq-update-x


总结一下,你完全不需要使用官方的 App 升级中心(uni-upgrade-center),只需要几行代码调用 uni.openURLuts-openSchema 插件,传入正确的应用商店链接即可实现点击按钮跳转更新。

内容为 AI 生成,仅供参考
9***@qq.com

9***@qq.com (作者)

@Ask小助手 你给的这样的方式,我已经在真机上运行测试很多遍,能打开应用市场的app,确无法定位到搜索页面

无双的英雄

无双的英雄

只要你上架了,往应用商店跳转最省事。

参考:https://ask.dcloud.net.cn/article/39960

  • 9***@qq.com (作者)

    我按照这个链接已经写了代码,但是跳转无法定位到要升级的app,下面是我的代码你看下

    handleUpdate() {


                            // 快手包名  
    const pkg = 'com.smile.gifmaker'
    // ... 在你的方法中 ...

    const brand = this.platform; // 假设你已经获取了品牌

    // #ifdef APP-ANDROID
    let url = '';

    // 1. 针对不同品牌拼接 URL (注意:参数名必须严格匹配)
    if (brand.includes('huawei') || brand.includes('honor')) {
    // 华为/荣耀
    url = `appmarket://details?id=${pkg}`;
    } else if (brand.includes('xiaomi') || brand.includes('redmi')) {
    // 小米/红米 - 关键点:必须是 mimarket://
    url = `mimarket://details?id=${pkg}`;
    } else if (brand.includes('oppo')) {
    // OPPO - 关键点:OPPO 有时识别不了 id,需要用 package_name (视版本而定),建议先试 id
    url = `oppomarket://details?package_name=${pkg}`;
    } else if (brand.includes('vivo')) {
    // VIVO
    url = `vivomarket://details?id=${pkg}`;
    } else {
    // 兜底:通用协议
    url = `market://details?id=${pkg}`;
    }

    // 2. 执行跳转
    // 注意:uts-openSchema 返回的是 Promise,建议加上 catch 捕获错误
    openSchema(url)
    // #endif
    }

    2026-06-02 10:37

无双的英雄

无双的英雄

你倒是说下你用的哪个机型不行啊

  • 9***@qq.com (作者)

    红米 Note 14 pro

    鸿蒙 pura 80

    这两个机型都不可以,能跳转无法定位到要升级的app, 鸿蒙的提示 “因服务升级。旧版应用详情页已停止使用您可尝试搜索并安装应用”

    鸿蒙提示 “此应用暂不支持在当前设备安装”

    2026-06-02 10:51

rice_z

rice_z

https://ext.dcloud.net.cn/plugin?id=17828

  • 9***@qq.com (作者)

    插件用的就是uts-openSchema

    2026-06-02 10:59

无双的英雄

无双的英雄

小米平台统一是:market://details?id=pkgname,只有pkgname跟你app相同才能打开,否则会报旧版详情页不可访问(比如你的APP叫XXX那么可以跳到XXX,跳到其他APP详情页就会出错)

鸿蒙平台你得搞明白你是原生鸿蒙应用还是用卓易通运行的安卓版本,如果是前者:store://appgallery.huawei.com/app/detail?id=pkgname,如果是后者: appmarket://details?id=pkgname

兜底方案建议直接用应用商店的统一链接,你要你上架就能免费申请,可应对绝大多数主流手机:
https://dev.vivo.com.cn/documentCenter/doc/827

  • 9***@qq.com (作者)

    关键是用了market://details?id=pkgname跳转页也找不到啊 微信 QQ 抖音 快手 尝试过了 都没用

    2026-06-02 11:21

  • 无双的英雄

    回复 9***@qq.com: 你必须条自己的APP才行,我试过,我用我的APP往微信那些app的详情页跳转直接打不开

    2026-06-02 11:26

  • 9***@qq.com (作者)

    回复 无双的英雄: 可是我们还没开发完,没拿到软著目前无法上架啊,目前就是想测试下功能是否可以正常

    2026-06-02 11:30

  • 无双的英雄

    回复 9***@qq.com: 小米这点可以跟你打保票,我这边上架之后是可以正常打开的:效果是应用商店的启动广告直接省略,直接打开商店详情页

    2026-06-02 11:37

无双的英雄

无双的英雄

也不需要插件,plus API足够了


  // #ifdef APP-HARMONY  
  plus.runtime.openURL(`store://appgallery.huawei.com/app/detail?id=${packageName}`)  
  // #endif  
  // #ifdef APP-PLUS  
  switch (deviceBrand) {  
    case 'apple':  
    // iOS端跳转至 APP Store  
      plus.runtime.launchApplication({ action: `itms-apps://itunes.apple.com/cn/app/id${import.meta.env.VITE_APP_IOS_ID}` }, () => {})  
      break  
    case 'honor':  
      /**  
       * 荣耀私有跳转链接  
       *  
       * @link https://developer.honor.com/cn/doc/guides/101569?source=Search_SearchResultsPage#h2-1750254902266  
       */  
      plus.runtime.openURL(`honormarket://details?id=${packageName}`)  
      break  
    case 'huawei':  
      plus.runtime.openURL(`appmarket://details?id=${packageName}`)  
      break  
    case 'oppo':  
      plus.runtime.openURL(`market://details?id=${packageName}`)  
      break  
    case 'vivo':  
      plus.runtime.openURL(`vivomarket://details?id=${packageName}&th_name=self_update`)  
      break  
    case 'xiaomi':  
      plus.runtime.openURL(`market://details?id=${packageName}`)  
      break  
    default:  
      plus.runtime.openURL(`https://sj.qq.com/appdetail/${packageName}`)  
      break  
  }  
  // #endif
  • 9***@qq.com (作者)

    plus一直提示找不到啊 我这里写这个项目就无法编译通过

    2026-06-02 11:11

  • 9***@qq.com (作者)

    无奈了 尝试了各种方法都不管用

    2026-06-02 11:20

  • 无双的英雄

    你这个是uniapp X,好像直接没有plus的api,那就用上面提供的那个插件应该也行的

    2026-06-02 11:21

  • 无双的英雄

    回复 9***@qq.com: 我这边开发的APP全是靠应用商店更新,也用各个平台的云调试真机实测过,是可行的

    2026-06-02 11:24

  • 9***@qq.com (作者)

    回复 无双的英雄: 哪这么说只能等到上架之后调用自己的app再看看了

    2026-06-02 11:31

无双的英雄

无双的英雄

你可以效仿知乎APP的更新方式,安卓平台提供三个选项:应用商店更新、直接下载、取消

  • 9***@qq.com (作者)

    没找到知乎的升级入口

    2026-06-02 11:46

无双的英雄

无双的英雄

还用找入口?下个旧版本启动APP就是

https://www.wandoujia.com/apps/584215/history_v29606

  • 9***@qq.com (作者)

    那就是通过接口检测的嘛 这个方法是挺好的 这个跟官方推荐插件的应该是一样的

    2026-06-04 20:15

要回复问题请先登录注册