HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

5+ API plus.sqlite.executeSql() 支持执行多条sql语句

HTML5+ SQLite Android

说明

因为Android原生数据库不支持以分号分割的多条sql语句,所以当执行多条语句时,只会执行第一条sql语句。
而在iOS平台原生数据库则支持。
为解决部分用户的需求,兼容平台差异性。

HBuilderX2.5.3+版本 plus.sqlite.executeSql() 将兼容支持以数组形式传入的多条数组

具体API参考如下:

    void plus.sqlite.executeSql(options);  

参数:

options参数为json类型,包含以下属性:

  • name: ( String ) 必选 数据库名称
  • sql: ( String|Array ) 必选 需要执行的SQL语句或数组
  • success: ( SQLiteSuccessCallback ) 可选 执行SQL语句成功回调函数
  • fail: ( SQLiteFailCallback ) 可选 执行SQL语句失败回调函数

示例:

function executeSQL(){  
    plus.sqlite.executeSql({  
        name: 'first',  
        sql: ['create table if not exists table_A("where" CHAR(110),"location" CHAR(100),"age" INT(11))','create table if not exists table_B("where" CHAR(110),"location" CHAR(100),"age" INT(11));'],  
        success: function(e){  
            console.log('executeSql success!');  
            plus.sqlite.executeSql({  
                name: 'first',  
                sql: ["insert into table_B values('北京','安乐林:',11)","insert into table_B values('天津','风火轮',22);"],  
                success: function(e){  
                    console.log('executeSql success!');  
                },  
                fail: function(e){  
                    console.log('executeSql failed: '+JSON.stringify(e));  
                }  
            });  
        },  
        fail: function(e){  
            console.log('executeSql failed: '+JSON.stringify(e));  
        }  
    });  
}  

具体规范可参考:https://www.html5plus.org/doc/zh_cn/sqlite.html#plus.sqlite.executeSql

继续阅读 »

说明

因为Android原生数据库不支持以分号分割的多条sql语句,所以当执行多条语句时,只会执行第一条sql语句。
而在iOS平台原生数据库则支持。
为解决部分用户的需求,兼容平台差异性。

HBuilderX2.5.3+版本 plus.sqlite.executeSql() 将兼容支持以数组形式传入的多条数组

具体API参考如下:

    void plus.sqlite.executeSql(options);  

参数:

options参数为json类型,包含以下属性:

  • name: ( String ) 必选 数据库名称
  • sql: ( String|Array ) 必选 需要执行的SQL语句或数组
  • success: ( SQLiteSuccessCallback ) 可选 执行SQL语句成功回调函数
  • fail: ( SQLiteFailCallback ) 可选 执行SQL语句失败回调函数

示例:

function executeSQL(){  
    plus.sqlite.executeSql({  
        name: 'first',  
        sql: ['create table if not exists table_A("where" CHAR(110),"location" CHAR(100),"age" INT(11))','create table if not exists table_B("where" CHAR(110),"location" CHAR(100),"age" INT(11));'],  
        success: function(e){  
            console.log('executeSql success!');  
            plus.sqlite.executeSql({  
                name: 'first',  
                sql: ["insert into table_B values('北京','安乐林:',11)","insert into table_B values('天津','风火轮',22);"],  
                success: function(e){  
                    console.log('executeSql success!');  
                },  
                fail: function(e){  
                    console.log('executeSql failed: '+JSON.stringify(e));  
                }  
            });  
        },  
        fail: function(e){  
            console.log('executeSql failed: '+JSON.stringify(e));  
        }  
    });  
}  

具体规范可参考:https://www.html5plus.org/doc/zh_cn/sqlite.html#plus.sqlite.executeSql

收起阅读 »

touch时间不触发

<cover-view class="video-touch-view" v-if="isVideoFullScreen" :style="{width:${fullControlsWidth}px,height:${fullControlsHeigt}px}"
@touchstart="videoTouchStart" @touchmove="videoTouchMove" @touchend="videoTouchEnd"></cover-view>

在nvue页面里的视频播放器覆盖层,把HBuilderX升级到2.5.1.20200103后touch事件在安卓手机上都不触发了,但是ios是可以的,而且升级之前安卓也是正常的。自从升级了之后一大推坑,各种问题,郁闷死了

继续阅读 »

<cover-view class="video-touch-view" v-if="isVideoFullScreen" :style="{width:${fullControlsWidth}px,height:${fullControlsHeigt}px}"
@touchstart="videoTouchStart" @touchmove="videoTouchMove" @touchend="videoTouchEnd"></cover-view>

在nvue页面里的视频播放器覆盖层,把HBuilderX升级到2.5.1.20200103后touch事件在安卓手机上都不触发了,但是ios是可以的,而且升级之前安卓也是正常的。自从升级了之后一大推坑,各种问题,郁闷死了

收起阅读 »

uni-app原生打包启动 高德APP规划点到点路线

AMAP

android原生插件,创建module

public class AmapWXModule extends WXSDKEngine.DestroyableModule {  

    @JSMethod(uiThread = true)  
    public void startNaviGao(JSONObject options) {  
        if (mWXSDKInstance.getContext() instanceof Activity) {  
            StringBuffer stringBuffer = new StringBuffer("amapuri://route/plan/");  
            String sid = options.getString("sid");  
            String slat = options.getString("slat");  
            String slon = options.getString("slon");  
            String sname = options.getString("sname");  
            String did = options.getString("did");  
            String dlat = options.getString("dlat");  
            String dlon = options.getString("dlon");  
            String dname = options.getString("dname");  
            String dev = options.getString("dev");  
            String t = options.getString("t");  
            stringBuffer.append("?sid=").append(sid)  
                    .append("&slat=").append(slat)  
                    .append("&slon=").append(slon)  
                    .append("&sname=").append(sname)  
                    .append("&did=").append(did)  
                    .append("&dlat=").append(dlat)  
                    .append("&dlon=").append(dlon)  
                    .append("&dname=").append(dname)  
                    .append("&dev=").append(dev)  
                    .append("&t=").append(t);  
            Intent intent = new Intent("android.intent.action.VIEW", android.net.Uri.parse(stringBuffer.toString()));  
            intent.setPackage("com.autonavi.minimap");  
            mWXSDKInstance.getContext().startActivity(intent);  
        }  
    }  
    @Override  
    public void destroy() {  

    }  
}

dcloud_uniplugins.json添加插件

{  
          "type": "module",  
          "name": "Amap",  
          "class": "com.demo.AmapWXModule"  
        }

uniapp使用

const modal = uni.requireNativePlugin('modal');  
const amap = uni.requireNativePlugin('Amap');  
methods: {  
    AppAmap()  
    {  
        amap.startNaviGao({sid:'A',slat:'36.7025585',slon:'116.8766784700',sname:'开始'  
        ,did:'B',dlat:'36.6494152900',dlon:'117.1224975600',dname:'结束',dev:'1',t:'0'});  
    },  
}

android原生项目app下的build.gradle中添加新增的 module
// 添加uni-app插件
implementation project(':amaplib')

继续阅读 »

android原生插件,创建module

public class AmapWXModule extends WXSDKEngine.DestroyableModule {  

    @JSMethod(uiThread = true)  
    public void startNaviGao(JSONObject options) {  
        if (mWXSDKInstance.getContext() instanceof Activity) {  
            StringBuffer stringBuffer = new StringBuffer("amapuri://route/plan/");  
            String sid = options.getString("sid");  
            String slat = options.getString("slat");  
            String slon = options.getString("slon");  
            String sname = options.getString("sname");  
            String did = options.getString("did");  
            String dlat = options.getString("dlat");  
            String dlon = options.getString("dlon");  
            String dname = options.getString("dname");  
            String dev = options.getString("dev");  
            String t = options.getString("t");  
            stringBuffer.append("?sid=").append(sid)  
                    .append("&slat=").append(slat)  
                    .append("&slon=").append(slon)  
                    .append("&sname=").append(sname)  
                    .append("&did=").append(did)  
                    .append("&dlat=").append(dlat)  
                    .append("&dlon=").append(dlon)  
                    .append("&dname=").append(dname)  
                    .append("&dev=").append(dev)  
                    .append("&t=").append(t);  
            Intent intent = new Intent("android.intent.action.VIEW", android.net.Uri.parse(stringBuffer.toString()));  
            intent.setPackage("com.autonavi.minimap");  
            mWXSDKInstance.getContext().startActivity(intent);  
        }  
    }  
    @Override  
    public void destroy() {  

    }  
}

dcloud_uniplugins.json添加插件

{  
          "type": "module",  
          "name": "Amap",  
          "class": "com.demo.AmapWXModule"  
        }

uniapp使用

const modal = uni.requireNativePlugin('modal');  
const amap = uni.requireNativePlugin('Amap');  
methods: {  
    AppAmap()  
    {  
        amap.startNaviGao({sid:'A',slat:'36.7025585',slon:'116.8766784700',sname:'开始'  
        ,did:'B',dlat:'36.6494152900',dlon:'117.1224975600',dname:'结束',dev:'1',t:'0'});  
    },  
}

android原生项目app下的build.gradle中添加新增的 module
// 添加uni-app插件
implementation project(':amaplib')

收起阅读 »

iOS离线打包:uni-AD广告联盟配置

广告联盟 开屏广告 广告 离线打包配置广告 离线配置广告

> 此文档将不再维护,请移步新文档:https://nativesupport.dcloud.net.cn

uni-AD广告联盟配置

此功能需要 HBuilderX 2.5.4-20200108-alpha 之后发布的离线包才能用。

添加360广告相关配置

注: Linker Flags、framework添加方法参考该文档

  1. 依次添加下列Linker Flags: -lUniAD,-lUniAd-360
  2. 添加下列framework:"libz.tbd","QHADSDK.framework","CoreLocation.framework", "CoreTelephony.framework", "WebKit.framework", "Security.framework", "SystemConfiguration.framework", "AdSupport.framework"
  3. 把离线包里Bundles文件夹里的 QHADVideoPlayer.bundle 引入到工程中

添加广点通广告相关配置

注: Linker Flags、framework添加方法参考该文档

  1. 依次添加下列Linker Flags: -lUniAD, -lUniAd-Gdt , -lGDTMobSDK
  2. 添加下列framework:"AdSupport.framework",
    "CoreLocation.framework",
    "QuartzCore.framework",
    "SystemConfiguration.framework",
    "CoreTelephony.framework",
    "Security.framework",
    "StoreKit.framework",
    "AVFoundation.framework",
    "WebKit.framework",
    "libz.tbd",
    "libxml2.tbd"

添加穿山甲广告相关配置

注: Linker Flags、framework添加方法参考该文档

  1. 依次添加下列Linker Flags: -lUniAD, -lUniAd-Csj, -lSDWebImage
  2. 添加下列framework:"BUAdSDK.framework","BUFoundation.framework","StoreKit.framework", "MobileCoreServices.framework", "WebKit.framework", "MediaPlayer.framework", "CoreMedia.framework", "CoreLocation.framework",
    "AVFoundation.framework",
    "CoreTelephony.framework",
    "SystemConfiguration.framework",
    "AdSupport.framework",
    "CoreMotion.framework",
    "Accelerate.framework",
    "libresolv.9.tbd",
    "libc++.tbd",
    "libz.tbd",
    "libsqlite3.tbd"
    3.把离线包里Bundles文件夹里的 BUAdSDK.bundle 引入到工程中

注意:如果是uni项目 必须配置上libUniADWeex.a 这个库

uni-AD广告联盟开通指南
uni-AD广告联盟使用指南

继续阅读 »

> 此文档将不再维护,请移步新文档:https://nativesupport.dcloud.net.cn

uni-AD广告联盟配置

此功能需要 HBuilderX 2.5.4-20200108-alpha 之后发布的离线包才能用。

添加360广告相关配置

注: Linker Flags、framework添加方法参考该文档

  1. 依次添加下列Linker Flags: -lUniAD,-lUniAd-360
  2. 添加下列framework:"libz.tbd","QHADSDK.framework","CoreLocation.framework", "CoreTelephony.framework", "WebKit.framework", "Security.framework", "SystemConfiguration.framework", "AdSupport.framework"
  3. 把离线包里Bundles文件夹里的 QHADVideoPlayer.bundle 引入到工程中

添加广点通广告相关配置

注: Linker Flags、framework添加方法参考该文档

  1. 依次添加下列Linker Flags: -lUniAD, -lUniAd-Gdt , -lGDTMobSDK
  2. 添加下列framework:"AdSupport.framework",
    "CoreLocation.framework",
    "QuartzCore.framework",
    "SystemConfiguration.framework",
    "CoreTelephony.framework",
    "Security.framework",
    "StoreKit.framework",
    "AVFoundation.framework",
    "WebKit.framework",
    "libz.tbd",
    "libxml2.tbd"

添加穿山甲广告相关配置

注: Linker Flags、framework添加方法参考该文档

  1. 依次添加下列Linker Flags: -lUniAD, -lUniAd-Csj, -lSDWebImage
  2. 添加下列framework:"BUAdSDK.framework","BUFoundation.framework","StoreKit.framework", "MobileCoreServices.framework", "WebKit.framework", "MediaPlayer.framework", "CoreMedia.framework", "CoreLocation.framework",
    "AVFoundation.framework",
    "CoreTelephony.framework",
    "SystemConfiguration.framework",
    "AdSupport.framework",
    "CoreMotion.framework",
    "Accelerate.framework",
    "libresolv.9.tbd",
    "libc++.tbd",
    "libz.tbd",
    "libsqlite3.tbd"
    3.把离线包里Bundles文件夹里的 BUAdSDK.bundle 引入到工程中

注意:如果是uni项目 必须配置上libUniADWeex.a 这个库

uni-AD广告联盟开通指南
uni-AD广告联盟使用指南

收起阅读 »

长期承接uniapp前端,后端;H5,小程序,APP

外包 uniapp


现已完整开发过多个uniAPP项目,有开发需求的敬请咨询,不限地区。

有意可加微信:c938402248

1.Mx.Me (社交类APP) (苹果市场)国外服务器,国内登录可能会有些卡顿





2.U鉴 (商城+鉴定类APP) (苹果市场/安卓市场:小米 华为 oppo 百度 魅族)

3.慕若芊 (商城微商代理系统) (苹果市场)

4.鱼伯 (生鲜配送app)

继续阅读 »


现已完整开发过多个uniAPP项目,有开发需求的敬请咨询,不限地区。

有意可加微信:c938402248

1.Mx.Me (社交类APP) (苹果市场)国外服务器,国内登录可能会有些卡顿





2.U鉴 (商城+鉴定类APP) (苹果市场/安卓市场:小米 华为 oppo 百度 魅族)

3.慕若芊 (商城微商代理系统) (苹果市场)

4.鱼伯 (生鲜配送app)

收起阅读 »

v3加油哦,问题一抹多

v3

v3加油哦,问题一抹多,估计v4或v5出来了,才能用v3,

v3加油哦,问题一抹多,估计v4或v5出来了,才能用v3,

v3模式requestFullScreen无效

v3

v3模式requestFullScreen无效

v3模式requestFullScreen无效

在小程序中使无缝使用 Mock.js,拦 截请求,返回自定的数据。

小程序 request

Build Status
Coverage Status
npm
NPM
npm
type-coverage

介绍

better-mock fork 自 Mock.js,使用方法和 Mock.js 一致,用于 javascript mock 数据生成,它可以拦截 XHRfetch 请求,并返回自定义的数据类型。并且还支持主流小程序(微信、支付宝、头条、百度)。http://lavyun.github.io/better-mock

缘起

Mock.js 是一个很好的库,国内使用者众多,虽然该库几乎已经停止维护了,但是还是有很多使用者在提 issue 和 PR,这些问题都得不到有效的解决。而且在当前时代下,Mock.js 的构建工具、代码质量都显得很陈旧,所以 better-mock 将会在 Mock.js 的基础上进行迭代,持续修复 Mock.js 的众多issue,支持更多的新特性。

特性

  • 100% 兼容 Mock.js
  • 使用 typescript 进行重构,更好的代码提示。
  • 更加现代化的构建打包方案。
  • 更加完善的单元测试。
  • 支持对 fetch 的拦截。
  • 支持主流小程序(微信、支付宝、头条、百度)。

安装

npm install better-mock

使用

使用 better-mock 代替 mockjs

const Mock = require('better-mock')  
Mock.mock({  
  'list|1-10': [{  
    'id|+1': 1  
  }]  
})

更多

文档介绍
更新日志

继续阅读 »

Build Status
Coverage Status
npm
NPM
npm
type-coverage

介绍

better-mock fork 自 Mock.js,使用方法和 Mock.js 一致,用于 javascript mock 数据生成,它可以拦截 XHRfetch 请求,并返回自定义的数据类型。并且还支持主流小程序(微信、支付宝、头条、百度)。http://lavyun.github.io/better-mock

缘起

Mock.js 是一个很好的库,国内使用者众多,虽然该库几乎已经停止维护了,但是还是有很多使用者在提 issue 和 PR,这些问题都得不到有效的解决。而且在当前时代下,Mock.js 的构建工具、代码质量都显得很陈旧,所以 better-mock 将会在 Mock.js 的基础上进行迭代,持续修复 Mock.js 的众多issue,支持更多的新特性。

特性

  • 100% 兼容 Mock.js
  • 使用 typescript 进行重构,更好的代码提示。
  • 更加现代化的构建打包方案。
  • 更加完善的单元测试。
  • 支持对 fetch 的拦截。
  • 支持主流小程序(微信、支付宝、头条、百度)。

安装

npm install better-mock

使用

使用 better-mock 代替 mockjs

const Mock = require('better-mock')  
Mock.mock({  
  'list|1-10': [{  
    'id|+1': 1  
  }]  
})

更多

文档介绍
更新日志

收起阅读 »

用了HTML5+蓝牙Bluetooth本地打包后,蓝牙模块不能使用

用HTML5+蓝牙Bluetooth模块测试没有问题,用eclipse本地打包后蓝牙模块完全不能用,按照官方给的文档,jar包也拷了,权限也配置了,不知道到底是什么原因?

用HTML5+蓝牙Bluetooth模块测试没有问题,用eclipse本地打包后蓝牙模块完全不能用,按照官方给的文档,jar包也拷了,权限也配置了,不知道到底是什么原因?