HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

windows创建ios证书和上架app store的教程

iOS证书

使用uniapp开发ios应用,云打包的时候需要提供证书profile文件(描述文件)和私钥证书p12文件。

然而这两个文件需要使用mac OS系统的电脑来生成,其实使用windows电脑也可以生成这两个文件,包括上架也是可以的。

首先来说生成证书的方法,生成证书首先要有苹果开发者账号,而苹果开发者账号来自己苹果开发者中心。假如你们公司还没有苹果开发者账号,请先参考这篇文章进入苹果开发者官网申请一个账号:

https://juejin.cn/post/7529496810265575458

申请账号应该是最麻烦的,申请完账号后,下面创建证书和上架就容易得多了。

首先来搞证书和证书profile文件

由于我们没有苹果电脑,因此我们使用香蕉云编来协助生成证书:

一、创建证书流程大致是这样:
(1)登录苹果开发者中心页面,进入证书页面,如下图:

(2)然后开始创建证书,创建证书第一步是选择证书的类型,这里固定选择ios distribution ad hoc and app store connect类型,不要选择其他的类型。

(3)点击下一步,需要提供一个csr文件,这时候就需要使用香蕉云编来辅助生成这个csr文件了:

https://www.yunedit.com/createcert

生成后,将这个csr文件下载到本地

然后继续刚才的步骤,选择这个csr文件,就可以生成证书了

(4)将第(3)步生成的证书下载下来,发现是.cer格式的,而不是p12格式,因此我们还需要使用香蕉云编,将这个cer文件转化为p12文件。

(5)重新登录香蕉云编,上传刚才的cer文件,就可以使用生成p12功能,转化为p12格式的私钥证书了。如下图所示:

二、创建profile文件(描述文件)的步骤。

(6)进入到苹果开发者中心,找到identifiers模块,如下图所示:

这个界面是管理appId的界面,在这里新建一个appId. appId的描述可以随便填,关键的appId需要填写uni.xxxxxxx或com.xxxxx.yyy这样的包名的格式,需要跟我们在uniapp里打包填写的AppId一致

(7) 创建完APPID 后,点击profiles模块,开始创建profile文件了

创建profile文件的时候,选择app store类型(假如想创建测试类型可以问下香蕉云编的客服或者看香蕉云编的教程)。

(8)点击下一步,会要我们选择APPID和选择证书,选择APPID比较直观,不容易选错,但是选择证书很容易选错。所示我们截图看看,选择证书的界面是怎样的,见到这个界面不要点太快,不要选错了:

好了,没什么意外,profile文件也生成成功了。

三、最后,说下上架的的流程,由于上架的流程也比较多,新手一时间可能消化不了,上架可以参考这篇文章:

https://blog.csdn.net/weixin_48914851/article/details/149223552

继续阅读 »

使用uniapp开发ios应用,云打包的时候需要提供证书profile文件(描述文件)和私钥证书p12文件。

然而这两个文件需要使用mac OS系统的电脑来生成,其实使用windows电脑也可以生成这两个文件,包括上架也是可以的。

首先来说生成证书的方法,生成证书首先要有苹果开发者账号,而苹果开发者账号来自己苹果开发者中心。假如你们公司还没有苹果开发者账号,请先参考这篇文章进入苹果开发者官网申请一个账号:

https://juejin.cn/post/7529496810265575458

申请账号应该是最麻烦的,申请完账号后,下面创建证书和上架就容易得多了。

首先来搞证书和证书profile文件

由于我们没有苹果电脑,因此我们使用香蕉云编来协助生成证书:

一、创建证书流程大致是这样:
(1)登录苹果开发者中心页面,进入证书页面,如下图:

(2)然后开始创建证书,创建证书第一步是选择证书的类型,这里固定选择ios distribution ad hoc and app store connect类型,不要选择其他的类型。

(3)点击下一步,需要提供一个csr文件,这时候就需要使用香蕉云编来辅助生成这个csr文件了:

https://www.yunedit.com/createcert

生成后,将这个csr文件下载到本地

然后继续刚才的步骤,选择这个csr文件,就可以生成证书了

(4)将第(3)步生成的证书下载下来,发现是.cer格式的,而不是p12格式,因此我们还需要使用香蕉云编,将这个cer文件转化为p12文件。

(5)重新登录香蕉云编,上传刚才的cer文件,就可以使用生成p12功能,转化为p12格式的私钥证书了。如下图所示:

二、创建profile文件(描述文件)的步骤。

(6)进入到苹果开发者中心,找到identifiers模块,如下图所示:

这个界面是管理appId的界面,在这里新建一个appId. appId的描述可以随便填,关键的appId需要填写uni.xxxxxxx或com.xxxxx.yyy这样的包名的格式,需要跟我们在uniapp里打包填写的AppId一致

(7) 创建完APPID 后,点击profiles模块,开始创建profile文件了

创建profile文件的时候,选择app store类型(假如想创建测试类型可以问下香蕉云编的客服或者看香蕉云编的教程)。

(8)点击下一步,会要我们选择APPID和选择证书,选择APPID比较直观,不容易选错,但是选择证书很容易选错。所示我们截图看看,选择证书的界面是怎样的,见到这个界面不要点太快,不要选错了:

好了,没什么意外,profile文件也生成成功了。

三、最后,说下上架的的流程,由于上架的流程也比较多,新手一时间可能消化不了,上架可以参考这篇文章:

https://blog.csdn.net/weixin_48914851/article/details/149223552

收起阅读 »

Vue3 H5打包后assets static文件夹中有重复图片

uniapp

Vue3 H5打包后assets static文件夹中有重复图片

Vue3 H5打包后assets static文件夹中有重复图片

editor无法被键盘顶起(app端解决方案)

editor

接手的项目碰到editor聚焦不被顶起的问题,在社区找到这个 #editor无法被键盘顶起
根据这个问题排查了一下,目前有以下几种情况:

  1. 在别的页面有输入框发生聚焦后,直接离开页面,editor会一直不被顶起
  2. 在别的页面有输入框发生聚焦后失焦,离开页面,editor第一次聚焦不会顶起

解决办法:
app端:在有editor组件的页面调用以下方法

    // 我的editor组件所在页面往后跳转还有带有input框的页面,所以我将这一部分代码放在onShow里面  
    let webview = this.$scope.$getAppWebview()  
    webview.setSoftinputTemporary({mode:'adjustResize'})
继续阅读 »

接手的项目碰到editor聚焦不被顶起的问题,在社区找到这个 #editor无法被键盘顶起
根据这个问题排查了一下,目前有以下几种情况:

  1. 在别的页面有输入框发生聚焦后,直接离开页面,editor会一直不被顶起
  2. 在别的页面有输入框发生聚焦后失焦,离开页面,editor第一次聚焦不会顶起

解决办法:
app端:在有editor组件的页面调用以下方法

    // 我的editor组件所在页面往后跳转还有带有input框的页面,所以我将这一部分代码放在onShow里面  
    let webview = this.$scope.$getAppWebview()  
    webview.setSoftinputTemporary({mode:'adjustResize'})
收起阅读 »

vue3 uni-popup拿不到ref的看过来

vue3

翻了半天的帖子,看到各种神人说原因,没一个说到点上的。
拿不到Ref的最重要原因是:你没有重启HBuilder和设置uni-popup的type
安装完uni-popup记得重启HBuilder和设置uni-popup的type属性就好了。

翻了半天的帖子,看到各种神人说原因,没一个说到点上的。
拿不到Ref的最重要原因是:你没有重启HBuilder和设置uni-popup的type
安装完uni-popup记得重启HBuilder和设置uni-popup的type属性就好了。

uni-admin后台 日期选择控件显示不全

bug反馈

uni-admin后台 日期选择控件显示不全 这个显眼的bug官方没测试???????

/uni_modules/uni-table/components/uni-th/filter-dropdown.vue

<uni-datetime-picker ref="datetimepicker" :value="dateRange" type="datetimerange" return-type="timestamp" @change="datetimechange" @maskClick="timepickerclose">
<view></view>
</uni-datetime-picker>

搞了半天 加个宽度好了

style="width: 580px;"

继续阅读 »

uni-admin后台 日期选择控件显示不全 这个显眼的bug官方没测试???????

/uni_modules/uni-table/components/uni-th/filter-dropdown.vue

<uni-datetime-picker ref="datetimepicker" :value="dateRange" type="datetimerange" return-type="timestamp" @change="datetimechange" @maskClick="timepickerclose">
<view></view>
</uni-datetime-picker>

搞了半天 加个宽度好了

style="width: 580px;"

收起阅读 »

多客开源圈子交友社区论坛爱好圈子源码,同城信息交流资讯圈子平台(可打包app+小程序+H5)安装教程

圈子系统是一种社交平台或论坛功能模块,允许用户根据兴趣、地域或职业等因素创建和管理社交圈层

圈子系统的功能
用户创建圈子:用户可以根据自己的兴趣或需求创建圈子,并邀请其他用户加入,从而形成特定的社交群体。
内容发布与互动:圈子内的用户可以发布动态、进行评论、点赞和私信等互动操作,增强社交体验。
多种内容形式:支持文字、语音、视频等多种形式的帖子,满足不同用户的需求。
多端支持:圈子系统通常支持PC端、H5端和移动端(如小程序和APP),确保用户在不同设备上都能方便访问。

1.购买服务器并安装宝塔
远程连接服务器有可能会要求输入服务器root密码)——去bt.cn复制安装宝塔命令【CentOS/windows】
2.准备域名
需备案
3.解析域名
控制台——进入服务器找到并复制公网ip——进入域名
解析添加www/客户指定二级域名
4.服务器开端口
控制台——进入服务器——安全组/防火墙-添加规则/端口——开放宝塔端口、8282、80、443
5.进入宝塔后端配置
配置环境php 7.3、MySQL 5.6、Nginx/Apache
添加站点-点击根目录导入后端代码并解压
到站点配置伪静态Thinkphp、绑定运行目录public、申请Let's Encrypt(免费3个月)SSL证书
修改配置文件.env 数据库、授权码
启动IM—到软件商店找到PHP7.3,删除函数pcntl_fork、pcntl_signal
——修改SSL证书路径/duokechat/Applications/YourApp/start_gateway.php
(linux 宝塔的 SSL 证书的目录是在 :/www/server/panel/vhost/ssl/网站域名/fullchain.pem 和 privkey.pem)
——在/duokechat目录点击终端连接(有可能会要求输入服务器root密码)
——输入php start.php start -d启动命令,显示3个绿色,后台打开有客服和语音弹框通知即为启动成功,如需停止输入php start.php stop
咨询客服和更多功能...

继续阅读 »

圈子系统是一种社交平台或论坛功能模块,允许用户根据兴趣、地域或职业等因素创建和管理社交圈层

圈子系统的功能
用户创建圈子:用户可以根据自己的兴趣或需求创建圈子,并邀请其他用户加入,从而形成特定的社交群体。
内容发布与互动:圈子内的用户可以发布动态、进行评论、点赞和私信等互动操作,增强社交体验。
多种内容形式:支持文字、语音、视频等多种形式的帖子,满足不同用户的需求。
多端支持:圈子系统通常支持PC端、H5端和移动端(如小程序和APP),确保用户在不同设备上都能方便访问。

1.购买服务器并安装宝塔
远程连接服务器有可能会要求输入服务器root密码)——去bt.cn复制安装宝塔命令【CentOS/windows】
2.准备域名
需备案
3.解析域名
控制台——进入服务器找到并复制公网ip——进入域名
解析添加www/客户指定二级域名
4.服务器开端口
控制台——进入服务器——安全组/防火墙-添加规则/端口——开放宝塔端口、8282、80、443
5.进入宝塔后端配置
配置环境php 7.3、MySQL 5.6、Nginx/Apache
添加站点-点击根目录导入后端代码并解压
到站点配置伪静态Thinkphp、绑定运行目录public、申请Let's Encrypt(免费3个月)SSL证书
修改配置文件.env 数据库、授权码
启动IM—到软件商店找到PHP7.3,删除函数pcntl_fork、pcntl_signal
——修改SSL证书路径/duokechat/Applications/YourApp/start_gateway.php
(linux 宝塔的 SSL 证书的目录是在 :/www/server/panel/vhost/ssl/网站域名/fullchain.pem 和 privkey.pem)
——在/duokechat目录点击终端连接(有可能会要求输入服务器root密码)
——输入php start.php start -d启动命令,显示3个绿色,后台打开有客服和语音弹框通知即为启动成功,如需停止输入php start.php stop
咨询客服和更多功能...

收起阅读 »

用snapdom替换html2canvas

<script module="capture" lang="renderjs">  
    export default {  
        mounted() {  
            // 动态引入较大类库避免影响页面展示  
            const script = document.createElement('script')  
            // view 层的页面运行在 www 根目录,其相对路径相对于 www 计算  
            // #ifdef APP-PLUS  
            script.src = 'static/js/snapdom.js' // 路径根据实际情况调整  
            // #endif  
            document.head.appendChild(script)  
        },  
        methods: {  
            convertImage(event, ownerInstance) {  
                ownerInstance.callMethod('loading')  
                snapdom.toPng(document.querySelector('.wrapper'), {  
                    scale: 2  
                }).then((res) => {  
                    ownerInstance.callMethod('saveImage', res.src)  
                })  
            }  
        }  
    }  
</script>

res.src是个base64,需要保存本地可以使用image-tools.js的base64ToPath方法再调用uni.saveImageToPhotosAlbum

继续阅读 »
<script module="capture" lang="renderjs">  
    export default {  
        mounted() {  
            // 动态引入较大类库避免影响页面展示  
            const script = document.createElement('script')  
            // view 层的页面运行在 www 根目录,其相对路径相对于 www 计算  
            // #ifdef APP-PLUS  
            script.src = 'static/js/snapdom.js' // 路径根据实际情况调整  
            // #endif  
            document.head.appendChild(script)  
        },  
        methods: {  
            convertImage(event, ownerInstance) {  
                ownerInstance.callMethod('loading')  
                snapdom.toPng(document.querySelector('.wrapper'), {  
                    scale: 2  
                }).then((res) => {  
                    ownerInstance.callMethod('saveImage', res.src)  
                })  
            }  
        }  
    }  
</script>

res.src是个base64,需要保存本地可以使用image-tools.js的base64ToPath方法再调用uni.saveImageToPhotosAlbum

收起阅读 »

GitHub 1.8k stars 的 vue3 组件库 Wot UI 关闭了插件市场下载广告,请自由下载使用

组件 广告

GitHub 1.8k stars 的 vue3 组件库 Wot UI 关闭了插件市场下载广告,欢迎自由下载使用。

插件市场:https://ext.dcloud.net.cn/plugin?id=13889

继续阅读 »

GitHub 1.8k stars 的 vue3 组件库 Wot UI 关闭了插件市场下载广告,欢迎自由下载使用。

插件市场:https://ext.dcloud.net.cn/plugin?id=13889

收起阅读 »

【官方消息uni.webview.js下载地址】gitcode近期进行了改版,原gitcode.net仓库迁移到了gitcode.com

文档 uniapp Webview

gitcode近期进行了改版,原gitcode.net仓库迁移到了gitcode.com,新gitcode地址
uni.webview.js下载地址
后续以官方更新的文档内,uni.webview.js的链接地址为准!

继续阅读 »

gitcode近期进行了改版,原gitcode.net仓库迁移到了gitcode.com,新gitcode地址
uni.webview.js下载地址
后续以官方更新的文档内,uni.webview.js的链接地址为准!

收起阅读 »

现在有没有要开发uniapp的?

外包接单 外包

本人很早之前开发了很多uniapp代码,那会儿比较流行开发小程序和h5,不知道这么多年过去了,现在还有人开发小程序或者自己的网站吗?

现在外包市场怎么样?

本人很早之前开发了很多uniapp代码,那会儿比较流行开发小程序和h5,不知道这么多年过去了,现在还有人开发小程序或者自己的网站吗?

现在外包市场怎么样?

uniapp开发的App实现在windows免费上传ios app到App Store

Appstore上传

首先下载Appuploader,下载地址:https://www.applicationloader.net

下载安装完成后,直接使用你的appleId加密码登陆进去就可以了。

只能用7天,7天过后就收费了。

高阶玩法,7天过期后如果还有使用的需要。
1.使用主账号登陆到苹果官网https://appstoreconnect.apple.com 。

  1. 找到用户和访问。
  2. 在“管理”那里加一个appleid。
  3. 使用这个新的appleid登录进去,接下来就是跟主账号密码一样的操作。
  4. 过期后再来一次,可以再免费体验一次。
  5. Appuploader官方不知道发现这个问题了没有,后面可能会封掉这种情况的。
  6. 反正我用了几年了。
  7. 有缘人看到了可以试一下。
  8. 不要告诉我是谁,请叫我雷锋。
继续阅读 »

首先下载Appuploader,下载地址:https://www.applicationloader.net

下载安装完成后,直接使用你的appleId加密码登陆进去就可以了。

只能用7天,7天过后就收费了。

高阶玩法,7天过期后如果还有使用的需要。
1.使用主账号登陆到苹果官网https://appstoreconnect.apple.com 。

  1. 找到用户和访问。
  2. 在“管理”那里加一个appleid。
  3. 使用这个新的appleid登录进去,接下来就是跟主账号密码一样的操作。
  4. 过期后再来一次,可以再免费体验一次。
  5. Appuploader官方不知道发现这个问题了没有,后面可能会封掉这种情况的。
  6. 反正我用了几年了。
  7. 有缘人看到了可以试一下。
  8. 不要告诉我是谁,请叫我雷锋。
收起阅读 »

【安卓权限说明同步显示】uniapp/uniappx项目选择图片或视频自动同步权限说明解决华为上架审核因权限说明驳回问题

uts插件 分享插件 权限描述 图片选择

很多小伙伴在上架华为应用市场的时候总是遇到选择图片或选择视频等文件需要申请权限告知目的问题被驳回
今天这里一个UTS图片/视频选择器插件就帮大家解决这个问题:图片视频选择器(支持同步告知权限申请目的.已支持鸿蒙,自定义选择器界面样式)
插件直达地址:https://ext.dcloud.net.cn/plugin?id=20793
在UNIAPP支持vue和nvue,在UNIAPPX支持uvue,安卓支持在选择图片或视频文件权限申请的时候自动同步告知权限申请目的,
轻松解决在华为应用市场审核,要求告知权限申请目的或说明的问题。
相册图片视频选择器功能介绍:
1.支持uniapp和uniappx,现在已经兼容了纯血鸿蒙和安卓后续将会兼容IOS
2.支持打开相册选择相片或视频
3.支持多选和单选
4.支持设置多种语言(仅安卓)
5.支持自定义界面主题样式(仅安卓)
6.支持媒体文件类型选择 0: ALL(视频和图片) 1: IMAGE(图片) 2: VIDEO(视频) 3: AUDIO(音频)
7.支持媒体文件预览
8.支持设置开启和关闭原图功能

  1. 支持设置开启和关闭相机拍照功能
    注意:集成完成后需要云打包或自定义基座才能生效,因为这是UTS原生SDK插件。

UNIAPP实现方法如下:

鸿蒙无需申请权限
安卓端首先在项目AndroidManifest.xml里配置示例文件里所需的权限也可直接复制插件示例里的AndroidManifest.xml文件到项目根目录
1.vue页面或nvue页面接口引入如下代码:

import { RHFselcet } from '@/uni_modules/fz-media-selcet';
  1. 在需要调用图片视频选择器的地方引入如下代码:

    let parameter ={  
        MediaType:2,//设置选择类型  0: ALL(全部) 1: IMAGE(图片) 2: VIDEO(视频) 3: AUDIO(音频) 不传默认为1图片  
        Single:2,//设置单选或多选(鸿蒙无需传这个参数), 1为单选,2为多选,不传默认为多选  
        maxNum:6,//设置最大选中数,不传默认为9 仅多选时生效  
        isOriginal:false, //是否开启原图功能,不传默认为false  
        isDisplayCamera:true,//是否显示拍摄按钮,不传默认为true  
    //语言设置, 0:简体中文,1:繁体,2:英语,3:韩语,4:德语,5:法语,6:日语,7:越语,8:西班牙语,9:葡萄牙语,10:阿拉伯语,11:俄语,12:捷克,13:哈萨克斯坦,不传默认为0  
        Language:2,  
        //主题界面样式设置,不传为默认样式  
        theme:{  
        titleBarStyle:{  
        TitleBackgroundColor:'#8E07FD'  
       },  
      bottomNavBarStyle:{  
          PreviewNormalTextColor:'#8E07FD',  
          PreviewSelectTextColor:'#8E07FD',  
          BarBackgroundColor:'#FFFFFF',  
          EditorTextColor:'#8E07FD',  
          OriginalTextColor:'#8E07FD',  
        },  
       selectMainStyle:{  
           NumberStyle:true, //选中样式是否为数字,不传默认显示勾选样式  
           isbtn:true, //完成按钮是否为显示背景,不传为默认不显示按钮背景  
        //如需修改按钮颜色需要在res/values/colors.xml里修改btn_primary和btn_hover的颜色值和按下后的颜色值  
           SelectTextColor:'#ffffff',//选择结果文字颜色  
          // SelectText:'%1$d/%2$d 完成',  
           SelectText:'使用(%1$d)',//选择结果要显示的文字,不传默认显示:已完成  
           StatusBarColor:'#8E07FD',  
           OriginalTextColor:'#8E07FD',  
       }  
        }  
       }  
    
    RHFselcet.getPicture( parameter, (data) => {  
    let arrData = data.mediaArray  
    let jsonData = JSON.stringify(arrData)  
    console.log(jsonData)  
    //回调结果:[{"mimeType":"video/mp4","num":1,"Pathurl":"/storage/emulated/0/DCIM/Camera/lv_0_20241025172529.mp4","height":1920,"fiename":"lv_0_20241025172529.mp4","path":"content://media/external/video/media/427606","Pathid":427606,"duration":16393,"size":20002573,"FolderName":"Camera","dateAddedTime":1729848339,"width":1080},{"mimeType":"video/mp4","num":2,"Pathurl":"/storage/emulated/0/DCIM/Camera/video_20241025_170438.mp4","height":1920,"fiename":"video_20241025_170438.mp4","path":"content://media/external/video/media/427604","Pathid":427604,"duration":16331,"size":35778914,"FolderName":"Camera","dateAddedTime":1729847078,"width":1080}]  
    });

    3.集成后云打包或自定义基座调试既可看到效果

uniappx实现方法如下:

1.uvue页面接口引入如下代码

import { RHFselcet } from '@/uni_modules/fz-media-selcet';

2.在uvue页面里要调用的地方加入如下代码:

let parameter: UTSJSONObject ={  
    MediaType:2,//设置选择类型  0: ALL(图片和视频) 1: IMAGE(图片) 2: VIDEO(视频) 3: AUDIO(音频) 不传默认为1图片  
    Single:2,//设置单选或多选(鸿蒙无需传这个参数), 1为单选,2为多选,不传默认为多选  
    maxNum:6,//设置最大选中数,不传默认为9  
    isOriginal:false, //是否开启原图功能,不传默认为false  
    isDisplayCamera:true,//是否显示拍摄按钮,不传默认为true  
//语言设置(仅安卓), 0:简体中文,1:繁体,2:英语,3:韩语,4:德语,5:法语,6:日语,7:越语,8:西班牙语,9:葡萄牙语,10:阿拉伯语,11:俄语,12:捷克,13:哈萨克斯坦,不传默认为0  
    Language:2,  
    //主题界面样式设置(仅安卓),不传为默认样式  
    theme:{  
    titleBarStyle:{  
    TitleBackgroundColor:'#8E07FD'  
   },  
  bottomNavBarStyle:{  
      PreviewNormalTextColor:'#8E07FD',  
      PreviewSelectTextColor:'#8E07FD',  
      BarBackgroundColor:'#FFFFFF',  
      EditorTextColor:'#8E07FD',  
      OriginalTextColor:'#8E07FD',  
    },  
   selectMainStyle:{  
       NumberStyle:true, //选中样式是否为数字,不传默认显示勾选样式  
       isbtn:true, //完成按钮是否显示背景颜色  
       //如需修改按钮颜色需要在res/values/colors.xml里修改btn_primary和btn_hover的颜色值和按下后的颜色值  
       SelectTextColor:'#ffffff',//选择结果文字颜色  
      // SelectText:'%1$d/%2$d 完成',  
       SelectText:'使用(%1$d)',//选择结果要显示的文字,不传默认显示:已完成  
       StatusBarColor:'#8E07FD',  
       OriginalTextColor:'#8E07FD',  
   }  
    }  
       }  
//打开相册或视频  
   RHFselcet.getPicture( parameter, (data) => {  
    // console.log(data["mediaArray"])  
    let arrData = data["mediaArray"]  
    let jsonData = JSON.stringify(arrData)  
    console.log(jsonData)  
//回调结果:[{"mimeType":"video/mp4","num":1,"Pathurl":"/storage/emulated/0/DCIM/Camera/lv_0_20241025172529.mp4","height":1920,"fiename":"lv_0_20241025172529.mp4","path":"content://media/external/video/media/427606","Pathid":427606,"duration":16393,"size":20002573,"FolderName":"Camera","dateAddedTime":1729848339,"width":1080},{"mimeType":"video/mp4","num":2,"Pathurl":"/storage/emulated/0/DCIM/Camera/video_20241025_170438.mp4","height":1920,"fiename":"video_20241025_170438.mp4","path":"content://media/external/video/media/427604","Pathid":427604,"duration":16331,"size":35778914,"FolderName":"Camera","dateAddedTime":1729847078,"width":1080}]  
    let DatalArray = JSON.parseArray(jsonData)  
    console.log(DatalArray)  
});
继续阅读 »

很多小伙伴在上架华为应用市场的时候总是遇到选择图片或选择视频等文件需要申请权限告知目的问题被驳回
今天这里一个UTS图片/视频选择器插件就帮大家解决这个问题:图片视频选择器(支持同步告知权限申请目的.已支持鸿蒙,自定义选择器界面样式)
插件直达地址:https://ext.dcloud.net.cn/plugin?id=20793
在UNIAPP支持vue和nvue,在UNIAPPX支持uvue,安卓支持在选择图片或视频文件权限申请的时候自动同步告知权限申请目的,
轻松解决在华为应用市场审核,要求告知权限申请目的或说明的问题。
相册图片视频选择器功能介绍:
1.支持uniapp和uniappx,现在已经兼容了纯血鸿蒙和安卓后续将会兼容IOS
2.支持打开相册选择相片或视频
3.支持多选和单选
4.支持设置多种语言(仅安卓)
5.支持自定义界面主题样式(仅安卓)
6.支持媒体文件类型选择 0: ALL(视频和图片) 1: IMAGE(图片) 2: VIDEO(视频) 3: AUDIO(音频)
7.支持媒体文件预览
8.支持设置开启和关闭原图功能

  1. 支持设置开启和关闭相机拍照功能
    注意:集成完成后需要云打包或自定义基座才能生效,因为这是UTS原生SDK插件。

UNIAPP实现方法如下:

鸿蒙无需申请权限
安卓端首先在项目AndroidManifest.xml里配置示例文件里所需的权限也可直接复制插件示例里的AndroidManifest.xml文件到项目根目录
1.vue页面或nvue页面接口引入如下代码:

import { RHFselcet } from '@/uni_modules/fz-media-selcet';
  1. 在需要调用图片视频选择器的地方引入如下代码:

    let parameter ={  
        MediaType:2,//设置选择类型  0: ALL(全部) 1: IMAGE(图片) 2: VIDEO(视频) 3: AUDIO(音频) 不传默认为1图片  
        Single:2,//设置单选或多选(鸿蒙无需传这个参数), 1为单选,2为多选,不传默认为多选  
        maxNum:6,//设置最大选中数,不传默认为9 仅多选时生效  
        isOriginal:false, //是否开启原图功能,不传默认为false  
        isDisplayCamera:true,//是否显示拍摄按钮,不传默认为true  
    //语言设置, 0:简体中文,1:繁体,2:英语,3:韩语,4:德语,5:法语,6:日语,7:越语,8:西班牙语,9:葡萄牙语,10:阿拉伯语,11:俄语,12:捷克,13:哈萨克斯坦,不传默认为0  
        Language:2,  
        //主题界面样式设置,不传为默认样式  
        theme:{  
        titleBarStyle:{  
        TitleBackgroundColor:'#8E07FD'  
       },  
      bottomNavBarStyle:{  
          PreviewNormalTextColor:'#8E07FD',  
          PreviewSelectTextColor:'#8E07FD',  
          BarBackgroundColor:'#FFFFFF',  
          EditorTextColor:'#8E07FD',  
          OriginalTextColor:'#8E07FD',  
        },  
       selectMainStyle:{  
           NumberStyle:true, //选中样式是否为数字,不传默认显示勾选样式  
           isbtn:true, //完成按钮是否为显示背景,不传为默认不显示按钮背景  
        //如需修改按钮颜色需要在res/values/colors.xml里修改btn_primary和btn_hover的颜色值和按下后的颜色值  
           SelectTextColor:'#ffffff',//选择结果文字颜色  
          // SelectText:'%1$d/%2$d 完成',  
           SelectText:'使用(%1$d)',//选择结果要显示的文字,不传默认显示:已完成  
           StatusBarColor:'#8E07FD',  
           OriginalTextColor:'#8E07FD',  
       }  
        }  
       }  
    
    RHFselcet.getPicture( parameter, (data) => {  
    let arrData = data.mediaArray  
    let jsonData = JSON.stringify(arrData)  
    console.log(jsonData)  
    //回调结果:[{"mimeType":"video/mp4","num":1,"Pathurl":"/storage/emulated/0/DCIM/Camera/lv_0_20241025172529.mp4","height":1920,"fiename":"lv_0_20241025172529.mp4","path":"content://media/external/video/media/427606","Pathid":427606,"duration":16393,"size":20002573,"FolderName":"Camera","dateAddedTime":1729848339,"width":1080},{"mimeType":"video/mp4","num":2,"Pathurl":"/storage/emulated/0/DCIM/Camera/video_20241025_170438.mp4","height":1920,"fiename":"video_20241025_170438.mp4","path":"content://media/external/video/media/427604","Pathid":427604,"duration":16331,"size":35778914,"FolderName":"Camera","dateAddedTime":1729847078,"width":1080}]  
    });

    3.集成后云打包或自定义基座调试既可看到效果

uniappx实现方法如下:

1.uvue页面接口引入如下代码

import { RHFselcet } from '@/uni_modules/fz-media-selcet';

2.在uvue页面里要调用的地方加入如下代码:

let parameter: UTSJSONObject ={  
    MediaType:2,//设置选择类型  0: ALL(图片和视频) 1: IMAGE(图片) 2: VIDEO(视频) 3: AUDIO(音频) 不传默认为1图片  
    Single:2,//设置单选或多选(鸿蒙无需传这个参数), 1为单选,2为多选,不传默认为多选  
    maxNum:6,//设置最大选中数,不传默认为9  
    isOriginal:false, //是否开启原图功能,不传默认为false  
    isDisplayCamera:true,//是否显示拍摄按钮,不传默认为true  
//语言设置(仅安卓), 0:简体中文,1:繁体,2:英语,3:韩语,4:德语,5:法语,6:日语,7:越语,8:西班牙语,9:葡萄牙语,10:阿拉伯语,11:俄语,12:捷克,13:哈萨克斯坦,不传默认为0  
    Language:2,  
    //主题界面样式设置(仅安卓),不传为默认样式  
    theme:{  
    titleBarStyle:{  
    TitleBackgroundColor:'#8E07FD'  
   },  
  bottomNavBarStyle:{  
      PreviewNormalTextColor:'#8E07FD',  
      PreviewSelectTextColor:'#8E07FD',  
      BarBackgroundColor:'#FFFFFF',  
      EditorTextColor:'#8E07FD',  
      OriginalTextColor:'#8E07FD',  
    },  
   selectMainStyle:{  
       NumberStyle:true, //选中样式是否为数字,不传默认显示勾选样式  
       isbtn:true, //完成按钮是否显示背景颜色  
       //如需修改按钮颜色需要在res/values/colors.xml里修改btn_primary和btn_hover的颜色值和按下后的颜色值  
       SelectTextColor:'#ffffff',//选择结果文字颜色  
      // SelectText:'%1$d/%2$d 完成',  
       SelectText:'使用(%1$d)',//选择结果要显示的文字,不传默认显示:已完成  
       StatusBarColor:'#8E07FD',  
       OriginalTextColor:'#8E07FD',  
   }  
    }  
       }  
//打开相册或视频  
   RHFselcet.getPicture( parameter, (data) => {  
    // console.log(data["mediaArray"])  
    let arrData = data["mediaArray"]  
    let jsonData = JSON.stringify(arrData)  
    console.log(jsonData)  
//回调结果:[{"mimeType":"video/mp4","num":1,"Pathurl":"/storage/emulated/0/DCIM/Camera/lv_0_20241025172529.mp4","height":1920,"fiename":"lv_0_20241025172529.mp4","path":"content://media/external/video/media/427606","Pathid":427606,"duration":16393,"size":20002573,"FolderName":"Camera","dateAddedTime":1729848339,"width":1080},{"mimeType":"video/mp4","num":2,"Pathurl":"/storage/emulated/0/DCIM/Camera/video_20241025_170438.mp4","height":1920,"fiename":"video_20241025_170438.mp4","path":"content://media/external/video/media/427604","Pathid":427604,"duration":16331,"size":35778914,"FolderName":"Camera","dateAddedTime":1729847078,"width":1080}]  
    let DatalArray = JSON.parseArray(jsonData)  
    console.log(DatalArray)  
});
收起阅读 »