HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

uni-app 支持发布到360小程序

360小程序

HBuilderX 2.7.6+ alpha 版支持发布到360小程序

  • 默认为H5平台组件,如果需要360平台组件请使用 <se-...></se-...>,例如 <se-video></se-video>
  • <se-...></se-...> 为360平台专有组件,不能跨平台,需要条件编译 mp-360

pages 配置

"globalStyle": {  
    "mp-360": {  
      "navigationStyle": "custom" // 去掉uni-app header,使用360小程序header  
    }  
},
继续阅读 »

HBuilderX 2.7.6+ alpha 版支持发布到360小程序

  • 默认为H5平台组件,如果需要360平台组件请使用 <se-...></se-...>,例如 <se-video></se-video>
  • <se-...></se-...> 为360平台专有组件,不能跨平台,需要条件编译 mp-360

pages 配置

"globalStyle": {  
    "mp-360": {  
      "navigationStyle": "custom" // 去掉uni-app header,使用360小程序header  
    }  
},
收起阅读 »

uniapp指纹识别问题

uniapp

uniapp在指纹识别时输出 '指纹操作已取消' 怎么解决呀?

uniapp在指纹识别时输出 '指纹操作已取消' 怎么解决呀?

uniAPP定制开发、uniapp、小团队开发

5+App开发 uniapp 教程 App打包 移动APP uniapp

公司2009年成立,从业10年来,一直专注于高品质软件开发、微信开发、APP、及网络营销服务。我们以其专业的软件开发经验,重诚信、守承诺的服务宗旨,用心服务每一个客户。我司自创立以来共为全国1000多家企事业单位提供过完善的软件开发服务并获得了良好的口碑。
我们拥有私营企业、 政府机关、国企央企、组织机构、协会学会、不同行业领域客户完善的软件开发解决方案,因为我们专业的解决方案、优质的服务理念,长城汽车、石药集团、乐城集团、河北建设厅、河北老年大学等众多企事业单位选择了我们。 我们是一个充满朝气的团队,一个用真心,用技术,用创意感动每一位客户的团队,这是我们努力的目标。 创造造一个全新的网络品牌形象。
我们的愿景:最受客户信任的互联网企业 领行将以诚实守信的操守、共同发展的理念,长远的眼光建立公司的品牌。
我们的使命:提升企业形象获得最大的价值 以高品质的服务、稳健的技术、向用户提供丰富、可靠的互联网产品 持续关注新的互联网走向、积极探索新的用户需求、不断为用户提供创新的业务 为企业搭建优秀的网络平台、捕捉有效的客户信息、促进企业经济的快速发展
我们的价值观:诚信、专注、尽责、创新 以诚为本,追求专注。承担责任,不断创新。
158-3211-5099

继续阅读 »

公司2009年成立,从业10年来,一直专注于高品质软件开发、微信开发、APP、及网络营销服务。我们以其专业的软件开发经验,重诚信、守承诺的服务宗旨,用心服务每一个客户。我司自创立以来共为全国1000多家企事业单位提供过完善的软件开发服务并获得了良好的口碑。
我们拥有私营企业、 政府机关、国企央企、组织机构、协会学会、不同行业领域客户完善的软件开发解决方案,因为我们专业的解决方案、优质的服务理念,长城汽车、石药集团、乐城集团、河北建设厅、河北老年大学等众多企事业单位选择了我们。 我们是一个充满朝气的团队,一个用真心,用技术,用创意感动每一位客户的团队,这是我们努力的目标。 创造造一个全新的网络品牌形象。
我们的愿景:最受客户信任的互联网企业 领行将以诚实守信的操守、共同发展的理念,长远的眼光建立公司的品牌。
我们的使命:提升企业形象获得最大的价值 以高品质的服务、稳健的技术、向用户提供丰富、可靠的互联网产品 持续关注新的互联网走向、积极探索新的用户需求、不断为用户提供创新的业务 为企业搭建优秀的网络平台、捕捉有效的客户信息、促进企业经济的快速发展
我们的价值观:诚信、专注、尽责、创新 以诚为本,追求专注。承担责任,不断创新。
158-3211-5099

收起阅读 »

uni.pageScrollTo指定scrollTop值执行后滚动条位置未有响应

uni.pageScrollTo({
duration:0,//过渡时间必须为0,uniapp bug,否则运行到手机会报错
scrollTop: 600,//滚动到目标位置
success:function(){
console,log('成功了')
}
})
打印结果:成功了
结果:滚动条位置并没有改变

解决办法:
加个setTimeout
var timer = setTimeout(() =>{
uni.pageScrollTo({
duration:0,//过渡时间必须为0,uniapp bug,否则运行到手机会报错
scrollTop: 600,//滚动到目标位置
success:function(){
console,log('成功了')
}
})
clearTimeout(timer)
},100)

继续阅读 »

uni.pageScrollTo({
duration:0,//过渡时间必须为0,uniapp bug,否则运行到手机会报错
scrollTop: 600,//滚动到目标位置
success:function(){
console,log('成功了')
}
})
打印结果:成功了
结果:滚动条位置并没有改变

解决办法:
加个setTimeout
var timer = setTimeout(() =>{
uni.pageScrollTo({
duration:0,//过渡时间必须为0,uniapp bug,否则运行到手机会报错
scrollTop: 600,//滚动到目标位置
success:function(){
console,log('成功了')
}
})
clearTimeout(timer)
},100)

收起阅读 »

工具插件开发 - 文字对齐工具 《文字操作》

插件开发 插件

今天刚看到 HBuilder 发布了可以做插件的消息,想到 JetBrains 中用到的插件 String Manipulation,可以实现对标点的对齐,删除空行等功能。
所以大体上写了个初版,实现以下功能。 有时间再慢慢完善吧

Github: https://github.com/KyleBing/string-manipulation

继续阅读 »

今天刚看到 HBuilder 发布了可以做插件的消息,想到 JetBrains 中用到的插件 String Manipulation,可以实现对标点的对齐,删除空行等功能。
所以大体上写了个初版,实现以下功能。 有时间再慢慢完善吧

Github: https://github.com/KyleBing/string-manipulation

收起阅读 »

坐标天津,招聘优秀前端、uni-app开发人员

Vue uniapp 招聘

坐标天津,招聘优秀前端、uni-app开发人员
有意向者发送简历至496367142@qq.com

坐标天津,招聘优秀前端、uni-app开发人员
有意向者发送简历至496367142@qq.com

ios端地图组件咋这么坑爹

  1. 动态插入markers报错TypeError: JSON.stringify cannot serialize cyclic structures.
  2. controltap controls点击事件, ios端与小程序端取值不同, controlId iOS 端取e.detail.controlId,小程序端 e.controlId
  3. ios端地图组件用id类名设置样式不起作用

其他还有好多属性不兼容

继续阅读 »
  1. 动态插入markers报错TypeError: JSON.stringify cannot serialize cyclic structures.
  2. controltap controls点击事件, ios端与小程序端取值不同, controlId iOS 端取e.detail.controlId,小程序端 e.controlId
  3. ios端地图组件用id类名设置样式不起作用

其他还有好多属性不兼容

收起阅读 »

IM聊天教程:发送图片/视频/语音/表情

IM 即时通信 聊天 WEBSOCKET

经常有朋友问起,如何在IM即时通讯中实现发送图片、视频、语音和表情?

为此,小编特意写了一个vue版本的Demo,实现了图片视频文件和表情的的发送,参考这个Demo源代码,相信你就可以轻松的用Uniapp和小程序完成类似的功能。

演示Demo

源码地址:https://ext.dcloud.net.cn/plugin?id=5177

一、图片/视频/语音发送

对于语音、视频和图片的发送,您如果有注意的话,在使用QQ或者微信的时候,当有朋友发送图片和视频给您时,收到后,需要等一会儿才能显示出来。就是因为在发送的时候,只发送了文件的路径,您收到后,需要加载才能显示出来。因为当前主流的IM包括微信,QQ等对于图片和视频的发送,通常的做法都是:

  1. 上传文件到文件服务器
  2. 推送文件路径
  3. 收到文件路径
  4. 加载文件

并不会通过网络直接传送源文件,因为对于大文件的传输,会影响消息的即时性。

对于文件的上传,您可以选择直接上传到您自己的服务器,也可以选择上传到各种云服务的对象存储服务,也就是OSS上。

参考源码:

DemoService.prototype.sendFileMessage = function (type,content) {  
    let uploadResult = restapi.uploadFile(content);  
    let message = new Message(type, uploadResult.url);  
    uploadResult.promise.then(() => {  
        this.publish(message);  
    },() =>  {  
        var error = new Message(MessageType.TEXT, "文件上传失败.");  
        this.messages.unshift(error)  
    });  
    return uploadResult.promise;  
};

云服务的OSS具有更好的稳定性和高可用性,上传的速度也有保证,另外也可以和CDN配合,所以我们建议用GoEasy配合OSS服务来实现图片和视频的发送。

在本文的源码里,选择了使用阿里云的OSS作为文件上传服务器,您也可以切换为您自己实现的文件上传服务器,或者选择其他云服务的OSS,原理都是一样的。

二、发送表情

表情的发送也是非常简单的,只是对于一些第一次实现表情发送的同学来说,需要一个思路而已。

细心点的朋友,肯定有发现,当我们在QQ上聊天的时候,我们输入一个反斜杠+“cy”, 就像这样:/cy ,QQ就会立即显示为一个呲牙的表情,就像下图一样:

表情

哈哈哈,相信你已经心里已经明白了十之八九了,对吧?

没错,表情在发送的过程中其实就是发一个像“/cy”这样定义好的的字符串,在对方收到后“翻译”成表情而已。

那为什么不直接发图片,而要进行这么复杂的“翻译”呢?

因为字符串比图片更小,发送的速度更快,用户体验更好。一个系统中的用户成千上万,用字符串可以节约大量的带宽,节约系统资源。

原理讲明白了,我们就开始干活儿吧:

第一步、定义表情

定义一个key value的对象,key作为表情标签,value则为每个表情标签对应的图片:

let expressions = {  
    "[risus]": './images/risus.png',  
    "[kiss]": './images/kiss.png',  
    "[cry]": './images/cry.png',  
    "[die]": './images/die.png',  
    "[anger]": './images/anger.png',  
}

然后画一个表情选择的界面:

表情列表

第二步、选择表情

为每个图片的onclick事件中传入这个表情的字符串标签,当用户点击的时候,将表情的标签写入输入框,就成为了一个普通的字符串。在发送的时候,发送的其实就是这个表情的标签,也就是一个字符串。

<div class="goeasy-expression">  
            <div :class="[appearanceClass, 'goeasy-appearance']" @click="show = true">{{text}}</div>  
            <div class="expression-container" v-show="show">  
                <div class="expression-icon-content">  
                    <div class="expression-icon__item"  
                         v-for="expression in list"  
                         :key="expression.id"  
                         @click="selectExpression(expression)">  
                        <img :src="expressions[expression.tag]">  
                    </div>  

                </div>  
                <div class="close-expression" @click="show = false"></div>  
            </div>  
        </div>

第三步、收到表情和展示表情

当对方收到一个字符串后,跟第一步定义的key-value列表去匹配,如果能找到对应的表情,就在页面上展示对应的表情图片,如果找不到,就是一个普通的文本信息。

原理讲清楚了后,具体实现是不是很简单了?

参考我们提供的Demo源代码,相信你很快就能掌握实现方法。

Demo源码:https://gitee.com/goeasy-io/GoEasyDemo-vue-AudioPictureVideo

GoEasy系列教程:

继续阅读 »

经常有朋友问起,如何在IM即时通讯中实现发送图片、视频、语音和表情?

为此,小编特意写了一个vue版本的Demo,实现了图片视频文件和表情的的发送,参考这个Demo源代码,相信你就可以轻松的用Uniapp和小程序完成类似的功能。

演示Demo

源码地址:https://ext.dcloud.net.cn/plugin?id=5177

一、图片/视频/语音发送

对于语音、视频和图片的发送,您如果有注意的话,在使用QQ或者微信的时候,当有朋友发送图片和视频给您时,收到后,需要等一会儿才能显示出来。就是因为在发送的时候,只发送了文件的路径,您收到后,需要加载才能显示出来。因为当前主流的IM包括微信,QQ等对于图片和视频的发送,通常的做法都是:

  1. 上传文件到文件服务器
  2. 推送文件路径
  3. 收到文件路径
  4. 加载文件

并不会通过网络直接传送源文件,因为对于大文件的传输,会影响消息的即时性。

对于文件的上传,您可以选择直接上传到您自己的服务器,也可以选择上传到各种云服务的对象存储服务,也就是OSS上。

参考源码:

DemoService.prototype.sendFileMessage = function (type,content) {  
    let uploadResult = restapi.uploadFile(content);  
    let message = new Message(type, uploadResult.url);  
    uploadResult.promise.then(() => {  
        this.publish(message);  
    },() =>  {  
        var error = new Message(MessageType.TEXT, "文件上传失败.");  
        this.messages.unshift(error)  
    });  
    return uploadResult.promise;  
};

云服务的OSS具有更好的稳定性和高可用性,上传的速度也有保证,另外也可以和CDN配合,所以我们建议用GoEasy配合OSS服务来实现图片和视频的发送。

在本文的源码里,选择了使用阿里云的OSS作为文件上传服务器,您也可以切换为您自己实现的文件上传服务器,或者选择其他云服务的OSS,原理都是一样的。

二、发送表情

表情的发送也是非常简单的,只是对于一些第一次实现表情发送的同学来说,需要一个思路而已。

细心点的朋友,肯定有发现,当我们在QQ上聊天的时候,我们输入一个反斜杠+“cy”, 就像这样:/cy ,QQ就会立即显示为一个呲牙的表情,就像下图一样:

表情

哈哈哈,相信你已经心里已经明白了十之八九了,对吧?

没错,表情在发送的过程中其实就是发一个像“/cy”这样定义好的的字符串,在对方收到后“翻译”成表情而已。

那为什么不直接发图片,而要进行这么复杂的“翻译”呢?

因为字符串比图片更小,发送的速度更快,用户体验更好。一个系统中的用户成千上万,用字符串可以节约大量的带宽,节约系统资源。

原理讲明白了,我们就开始干活儿吧:

第一步、定义表情

定义一个key value的对象,key作为表情标签,value则为每个表情标签对应的图片:

let expressions = {  
    "[risus]": './images/risus.png',  
    "[kiss]": './images/kiss.png',  
    "[cry]": './images/cry.png',  
    "[die]": './images/die.png',  
    "[anger]": './images/anger.png',  
}

然后画一个表情选择的界面:

表情列表

第二步、选择表情

为每个图片的onclick事件中传入这个表情的字符串标签,当用户点击的时候,将表情的标签写入输入框,就成为了一个普通的字符串。在发送的时候,发送的其实就是这个表情的标签,也就是一个字符串。

<div class="goeasy-expression">  
            <div :class="[appearanceClass, 'goeasy-appearance']" @click="show = true">{{text}}</div>  
            <div class="expression-container" v-show="show">  
                <div class="expression-icon-content">  
                    <div class="expression-icon__item"  
                         v-for="expression in list"  
                         :key="expression.id"  
                         @click="selectExpression(expression)">  
                        <img :src="expressions[expression.tag]">  
                    </div>  

                </div>  
                <div class="close-expression" @click="show = false"></div>  
            </div>  
        </div>

第三步、收到表情和展示表情

当对方收到一个字符串后,跟第一步定义的key-value列表去匹配,如果能找到对应的表情,就在页面上展示对应的表情图片,如果找不到,就是一个普通的文本信息。

原理讲清楚了后,具体实现是不是很简单了?

参考我们提供的Demo源代码,相信你很快就能掌握实现方法。

Demo源码:https://gitee.com/goeasy-io/GoEasyDemo-vue-AudioPictureVideo

GoEasy系列教程:

收起阅读 »

V3 部分样式 异常

v3

V3下

我主要发现了

  1. uni-icons 的图标为 undefined
  2. uni-icons被父元素的样式所影响

对于第一个问题;我没去深究原因;直接改用了 iconfont,便有图标了

对于第二个问题

这主要是我写的样式 采用 <text>标签赋值,或许这样权重太高,样式穿透了。我用 class 样式后,页面就正常了

原写法(该写法V3 下样式异常)

总结下 还是对语法要求 高了些

  • 我把应用的首页改为了Nvue 页面,好像在现在这个版本,fast 启动模式 有效了。

  • 在上个版本,andriod 下 还会有一个 taskcenter error

示例代码

继续阅读 »

V3下

我主要发现了

  1. uni-icons 的图标为 undefined
  2. uni-icons被父元素的样式所影响

对于第一个问题;我没去深究原因;直接改用了 iconfont,便有图标了

对于第二个问题

这主要是我写的样式 采用 <text>标签赋值,或许这样权重太高,样式穿透了。我用 class 样式后,页面就正常了

原写法(该写法V3 下样式异常)

总结下 还是对语法要求 高了些

  • 我把应用的首页改为了Nvue 页面,好像在现在这个版本,fast 启动模式 有效了。

  • 在上个版本,andriod 下 还会有一个 taskcenter error

示例代码

收起阅读 »

个人接单插件开发(只接原生插件)。

插件开发

个人接单插件开发(只接原生插件,iOS、Android 双端)。如有需要的可以联系 QQ。176142998

个人接单插件开发(只接原生插件,iOS、Android 双端)。如有需要的可以联系 QQ。176142998