HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

笔记渲染x5杀掉进程,app退出不行要kill掉

Native.JS 5+sdk X5

小白的笔记
var Intent = plus.android.importClass("android.os.Process");
var pid = Intent.myPid()
console.log("进程id:"+pid)
Intent.killProcess(pid)

逻辑 提示杀掉,让用户重新打开
function 内核判断(){
if(寻找文本(plus.navigator.getUserAgent(),"MQQBrowser")!= -1 ){
console.log ("x5");
}else{
询问框_原生("需要重新打开app","内核加载(可能多次加载)","立即","稍后");
}
}
function 杀掉进程(){
var Intent = plus.android.importClass("android.os.Process");
var pid = Intent.myPid();
console.log("进程id:"+pid);
Intent.killProcess(pid);
}

继续阅读 »

小白的笔记
var Intent = plus.android.importClass("android.os.Process");
var pid = Intent.myPid()
console.log("进程id:"+pid)
Intent.killProcess(pid)

逻辑 提示杀掉,让用户重新打开
function 内核判断(){
if(寻找文本(plus.navigator.getUserAgent(),"MQQBrowser")!= -1 ){
console.log ("x5");
}else{
询问框_原生("需要重新打开app","内核加载(可能多次加载)","立即","稍后");
}
}
function 杀掉进程(){
var Intent = plus.android.importClass("android.os.Process");
var pid = Intent.myPid();
console.log("进程id:"+pid);
Intent.killProcess(pid);
}

收起阅读 »

每日互动(个推)2021届校园招聘开始啦!

招聘


每日互动(个推)2021届校园招聘正式开启!

A股数据智能上市公司
以技术为驱动,用能力论英雄
成长与空间并重,理想与薪资齐飞
健康、阳光、高效、透彻的企业文化下
我们邀你一同点亮数智未来

数据智能第一股,等你这支潜力股

以下是每日互动(个推)
2021届校招具体内容

在“每日”,实现更大的梦想
科技改变每日生活,是我们肩上的责任,更是我们心中的梦想。


未来,还有很多事,我们想与你一起去改变!

【结语】

坐落东方硅谷、筑梦创业天堂
坚持技术创新、落地技术成果
寻找优秀人才、筑梦科技未来
邀你
加入我们,一起创造无限鲸彩!
加入我们,一起改变每日生活!

继续阅读 »


每日互动(个推)2021届校园招聘正式开启!

A股数据智能上市公司
以技术为驱动,用能力论英雄
成长与空间并重,理想与薪资齐飞
健康、阳光、高效、透彻的企业文化下
我们邀你一同点亮数智未来

数据智能第一股,等你这支潜力股

以下是每日互动(个推)
2021届校招具体内容

在“每日”,实现更大的梦想
科技改变每日生活,是我们肩上的责任,更是我们心中的梦想。


未来,还有很多事,我们想与你一起去改变!

【结语】

坐落东方硅谷、筑梦创业天堂
坚持技术创新、落地技术成果
寻找优秀人才、筑梦科技未来
邀你
加入我们,一起创造无限鲸彩!
加入我们,一起改变每日生活!

收起阅读 »

IM即时通讯

chat

官网IM介绍

https://www.pangugle.com/web/im.html

企业版本-项目特点(最大的特点可商用)

  • 私有云部署,可接入自己的用户体系,sdk接入只需5行代码,傻瓜式集成;
  • 断网自动重连,消息补发,如不在线,自动离线消息;
  • 安全可靠(数据加密传输),高速稳定;
  • 拓展性强, 消息支持自定义协议;
  • 后端框架已接入消息队列、任务调度系统、音频转码、视频转码、图片压缩、分布式锁、redis缓存、mysql读写分离;
  • 后端是居于spring boot 开发的框架,非java后端可以通过restful接入用户体系;
  • 只要硬件资源给足, 单机可支持数十万并发;
  • 我们只做im相关的东西,所以我们更专业;

企业版本-功能说明

  • 登陆(单点登陆)、注册、退出账号、更新昵称、上传头像(可接入自己的用户体系)
  • 单聊、群聊、在线客服、群组管理、好友管理、扫一扫、扫码加好友、扫码加群
  • 消息支持【文字、图片、表情、语音(对讲)、名片】,消息离线
  • 消息还支持撤回、删除、转发,查看图册
  • 群组支持全员禁言、单个禁言、拉人、踢人、添加管理员、移除管理员
  • 群名称修改(群主)

为什么使用我们IM

  • 我们价格优惠,APP端才三位数,比起云服务,每个月基础使用都要上千费用,如果用户再多,费用都能上万,甚至更多!
  • 我们直接给源码,并且不加密,方便您二开!
  • 支持所有后端语言!非Java可心通过restful 直接接入!
  • 服务端支持sdk接入,不侵入您的代码!
  • 服务端支持接入自己的用户体系!
  • 开放性设计,可拓展性强,可定制自己的消息体!
  • 一次编码,支持多端,真正省成本!
继续阅读 »

官网IM介绍

https://www.pangugle.com/web/im.html

企业版本-项目特点(最大的特点可商用)

  • 私有云部署,可接入自己的用户体系,sdk接入只需5行代码,傻瓜式集成;
  • 断网自动重连,消息补发,如不在线,自动离线消息;
  • 安全可靠(数据加密传输),高速稳定;
  • 拓展性强, 消息支持自定义协议;
  • 后端框架已接入消息队列、任务调度系统、音频转码、视频转码、图片压缩、分布式锁、redis缓存、mysql读写分离;
  • 后端是居于spring boot 开发的框架,非java后端可以通过restful接入用户体系;
  • 只要硬件资源给足, 单机可支持数十万并发;
  • 我们只做im相关的东西,所以我们更专业;

企业版本-功能说明

  • 登陆(单点登陆)、注册、退出账号、更新昵称、上传头像(可接入自己的用户体系)
  • 单聊、群聊、在线客服、群组管理、好友管理、扫一扫、扫码加好友、扫码加群
  • 消息支持【文字、图片、表情、语音(对讲)、名片】,消息离线
  • 消息还支持撤回、删除、转发,查看图册
  • 群组支持全员禁言、单个禁言、拉人、踢人、添加管理员、移除管理员
  • 群名称修改(群主)

为什么使用我们IM

  • 我们价格优惠,APP端才三位数,比起云服务,每个月基础使用都要上千费用,如果用户再多,费用都能上万,甚至更多!
  • 我们直接给源码,并且不加密,方便您二开!
  • 支持所有后端语言!非Java可心通过restful 直接接入!
  • 服务端支持sdk接入,不侵入您的代码!
  • 服务端支持接入自己的用户体系!
  • 开放性设计,可拓展性强,可定制自己的消息体!
  • 一次编码,支持多端,真正省成本!
收起阅读 »

HBuilderX自定义主题:vscode Light+

主题

vscode Light+ 主题

{  
    "workbench.colorCustomizations":{  
        "[Default]":{  
            "console.background":"#ffffff",  
            "editor.background":"#ffffff",  
            "editorGroup.border":"#e7e7e7",  
            "editorGroupHeader.tabsBackground":"#FFF",  
            "editorSuggestWidget.background":"#F3f3f3",  
            "editorSuggestWidget.selectedBackground":"#d6ebff",  
            "extensionButton.prominentBackground":"#ececec",  
            "extensionButton.prominentHoverBackground":"#f3f3f3",  
            "imageview.background":"#fff",  
            "imageview.foreground":"#fff",  
            "input.background":"#f3f3f3",  
            "inputList.hoverBackground":"#d6ebff",  
            "inputOption.activeBorder":"#eee",  
            "inputValidation.infoBackground":"#f3f3f3",  
            "list.activeSelectionBackground":"#0074e8",  
            "list.highlightForeground":"#FFF",  
            "list.hoverBackground":"#E8e8e8",  
            "minimap.handle.background":"#c9c9c9",  
            "outlineBackground":"#ffffff",  
            "settings.dropdownBackground":"#ffffff",  
            "settings.dropdownBorder":"#ffffff",  
            "settings.textInputBackground":"#ffffff",  
            "settings.textInputBorder":"#eeeeee",  
            "sideBar.background":"#F3f3f3",  
            "statusBar.background":"#007acc",  
            "statusBar.foreground":"#FFFFFF",  
            "tab.border":"#ececec",  
            "tab.hoverBackground":"#ececec",  
            "tab.inactiveBackground":"#ececec",  
            "tab.inactiveForeground":"#000",  
            "tab.unfocusedActiveForeground":"#ececec",  
            "terminal.background":"#ffffff",  
            "titleBar.activeBackground":"#DDDDDD",  
            "toolBar.background":"#ececec",  
            "toolBar.border":"#ececec",  
            "toolBar.hoverBackground":"#F3f3f3"  
        }  
    }  
}

继续阅读 »

vscode Light+ 主题

{  
    "workbench.colorCustomizations":{  
        "[Default]":{  
            "console.background":"#ffffff",  
            "editor.background":"#ffffff",  
            "editorGroup.border":"#e7e7e7",  
            "editorGroupHeader.tabsBackground":"#FFF",  
            "editorSuggestWidget.background":"#F3f3f3",  
            "editorSuggestWidget.selectedBackground":"#d6ebff",  
            "extensionButton.prominentBackground":"#ececec",  
            "extensionButton.prominentHoverBackground":"#f3f3f3",  
            "imageview.background":"#fff",  
            "imageview.foreground":"#fff",  
            "input.background":"#f3f3f3",  
            "inputList.hoverBackground":"#d6ebff",  
            "inputOption.activeBorder":"#eee",  
            "inputValidation.infoBackground":"#f3f3f3",  
            "list.activeSelectionBackground":"#0074e8",  
            "list.highlightForeground":"#FFF",  
            "list.hoverBackground":"#E8e8e8",  
            "minimap.handle.background":"#c9c9c9",  
            "outlineBackground":"#ffffff",  
            "settings.dropdownBackground":"#ffffff",  
            "settings.dropdownBorder":"#ffffff",  
            "settings.textInputBackground":"#ffffff",  
            "settings.textInputBorder":"#eeeeee",  
            "sideBar.background":"#F3f3f3",  
            "statusBar.background":"#007acc",  
            "statusBar.foreground":"#FFFFFF",  
            "tab.border":"#ececec",  
            "tab.hoverBackground":"#ececec",  
            "tab.inactiveBackground":"#ececec",  
            "tab.inactiveForeground":"#000",  
            "tab.unfocusedActiveForeground":"#ececec",  
            "terminal.background":"#ffffff",  
            "titleBar.activeBackground":"#DDDDDD",  
            "toolBar.background":"#ececec",  
            "toolBar.border":"#ececec",  
            "toolBar.hoverBackground":"#F3f3f3"  
        }  
    }  
}

收起阅读 »

【分享】分享一下h5+App如何获取系统复制粘贴的值

粘贴板 复制

代码如下:

if (plus.os.name == 'iOS') {  
            var UIPasteboard = plus.ios.importClass("UIPasteboard");  
            var generalPasteboard = UIPasteboard.generalPasteboard();  
            var value = generalPasteboard.valueForPasteboardType("public.utf8-plain-text");  
            // value就是粘贴板的值  
            alert(value);  
        } else if (plus.os.name == 'Android') {  
            var Context = plus.android.importClass("android.content.Context");  
            var main = plus.android.runtimeMainActivity();  
            var clip = main.getSystemService(Context.CLIPBOARD_SERVICE);  
            var value = plus.android.invoke(clip, "getText");  
            // value就是粘贴板的值  
            alert(value);  
        }
继续阅读 »

代码如下:

if (plus.os.name == 'iOS') {  
            var UIPasteboard = plus.ios.importClass("UIPasteboard");  
            var generalPasteboard = UIPasteboard.generalPasteboard();  
            var value = generalPasteboard.valueForPasteboardType("public.utf8-plain-text");  
            // value就是粘贴板的值  
            alert(value);  
        } else if (plus.os.name == 'Android') {  
            var Context = plus.android.importClass("android.content.Context");  
            var main = plus.android.runtimeMainActivity();  
            var clip = main.getSystemService(Context.CLIPBOARD_SERVICE);  
            var value = plus.android.invoke(clip, "getText");  
            // value就是粘贴板的值  
            alert(value);  
        }
收起阅读 »

Video 组件原来支持播放本地M3U8

video

app端Video组件,看论坛一直以为不能放本地M3U8,经过测试原来不需要任何插件可以直接播放本地M3U8,一直都被论坛误导了.

app端Video组件,看论坛一直以为不能放本地M3U8,经过测试原来不需要任何插件可以直接播放本地M3U8,一直都被论坛误导了.

ios端微信支付

微信支付
                                                                                                         **IOS微信支付**  

(一)微信开放平台
申请微信支付权限(300元)注意一定要注意审核是否通过
填写 Bundle ID就是android包名(不一定非要和APP一样,因为我发现我们app store 上的APP Bundle ID和微信开放平台上不一样 但是还好用 有知道的请告知)
Universal Links 必须填写(苹果的要求) https://demo.dcloud.net.cn/ulink/ 这个地址写死就完事了

(二)manifest清单文件
1.Payment勾选 ios
2.IOS平台通用链接 https://demo.dcloud.net.cn/ulink/

(三)测试
1.必须云打包 自定义基座和标准基座 都会走error毁掉
2.打包需要苹果开发者平台添加UDID
3.获取UDID,三方平台 fir 蒲公英都可以获取
4.将.ipa文件提交到三方平台 下载测试

        HBuilder版本号:2.8.8.20200820  
        邮箱:97272442@qq.com  

      ** 下次写ios怎么上线到App store**  
继续阅读 »
                                                                                                         **IOS微信支付**  

(一)微信开放平台
申请微信支付权限(300元)注意一定要注意审核是否通过
填写 Bundle ID就是android包名(不一定非要和APP一样,因为我发现我们app store 上的APP Bundle ID和微信开放平台上不一样 但是还好用 有知道的请告知)
Universal Links 必须填写(苹果的要求) https://demo.dcloud.net.cn/ulink/ 这个地址写死就完事了

(二)manifest清单文件
1.Payment勾选 ios
2.IOS平台通用链接 https://demo.dcloud.net.cn/ulink/

(三)测试
1.必须云打包 自定义基座和标准基座 都会走error毁掉
2.打包需要苹果开发者平台添加UDID
3.获取UDID,三方平台 fir 蒲公英都可以获取
4.将.ipa文件提交到三方平台 下载测试

        HBuilder版本号:2.8.8.20200820  
        邮箱:97272442@qq.com  

      ** 下次写ios怎么上线到App store**  
收起阅读 »

UniApp H5 浏览器下载图片 兼容iOS、Android

下载 h5 uniapp

由于官方的api下载事件uni.downloadFile下载的是临时文件,需要配合uni.saveFile使用,但是uni.saveFile不支持H5,另外uni.saveImageToPhotosAlbum保存图片到系统相册也不支持H5,所以采用以下方式解决。

安装依赖,这里使用FileSaver,并且支持修改文件名称

npm i file-saver -S

页面代码

import FileSaver from 'file-saver'  
···  
download(){  
  let imgUrl = 'http://www.test.com/img/xxxx.jpg' //网络图片地址  
  FileSaver.saveAs(imgUrl, '图片名称.jpg');  
}

如果图片不同源产生跨域,需要配置代理proxy

项目根目录新建vue.config.js代码如下:

module.exports = {  
  devServer:{  
    proxy:{  
      '/file_url': {    //将www.exaple.com印射为/apis  
        target: 'http://www.test.com',  // 接口域名  
        secure: false,  // 如果是https接口,需要配置这个参数  
        changeOrigin: true,  //是否跨域  
        pathRewrite: {  
            '^/file_url': ''   //需要rewrite的,  
        }                
      }  
    }  
  }  
}

配置代理后,'/file_url' = 'http://www.test.com',需要替换图片地址前缀,页面代码:

import FileSaver from 'file-saver'  
···  
download(){  
  let imgUrl = 'http://www.test.com/img/xxxx.jpg' //网络图片地址  
  FileSaver.saveAs('/file_url'+'/img/xxxx.jpg', '图片名称.jpg');  
}

效果如下:

继续阅读 »

由于官方的api下载事件uni.downloadFile下载的是临时文件,需要配合uni.saveFile使用,但是uni.saveFile不支持H5,另外uni.saveImageToPhotosAlbum保存图片到系统相册也不支持H5,所以采用以下方式解决。

安装依赖,这里使用FileSaver,并且支持修改文件名称

npm i file-saver -S

页面代码

import FileSaver from 'file-saver'  
···  
download(){  
  let imgUrl = 'http://www.test.com/img/xxxx.jpg' //网络图片地址  
  FileSaver.saveAs(imgUrl, '图片名称.jpg');  
}

如果图片不同源产生跨域,需要配置代理proxy

项目根目录新建vue.config.js代码如下:

module.exports = {  
  devServer:{  
    proxy:{  
      '/file_url': {    //将www.exaple.com印射为/apis  
        target: 'http://www.test.com',  // 接口域名  
        secure: false,  // 如果是https接口,需要配置这个参数  
        changeOrigin: true,  //是否跨域  
        pathRewrite: {  
            '^/file_url': ''   //需要rewrite的,  
        }                
      }  
    }  
  }  
}

配置代理后,'/file_url' = 'http://www.test.com',需要替换图片地址前缀,页面代码:

import FileSaver from 'file-saver'  
···  
download(){  
  let imgUrl = 'http://www.test.com/img/xxxx.jpg' //网络图片地址  
  FileSaver.saveAs('/file_url'+'/img/xxxx.jpg', '图片名称.jpg');  
}

效果如下:

收起阅读 »

uniapp使用uni.request请求报错{"errMsg":"request:fail abort statusCode:-1"}的解决办法

问题呈现

在uniapp中,使用uni.request()向服务端接口发起请求后,返回值为:{"errMsg":"request:fail abort statusCode:-1"},因此,导致了后面的业务代码报错

前提

检查了uni.request()根据服务端接口需要的配置(如:url、data、header、method等)都没有问题

问题出现的可能原因

在以上前提下还出现这种问题,最有可能的原因:手机没有连网,或者看着连上了网但实际网络不可用,可以在手机浏览器中随便输入点文字搜一下测试看看,能不能搜到新内容。

仔细查看,这个{"errMsg":"request:fail abort statusCode:-1"}返回值,其实并不是服务端返回来的,因为请求都完全没有到服务端

解决办法

在执行uni.request()向服务端请求前,使用uni.getNetworkType()和uni.onNetworkStatusChange()对网络进行监听,如果监听到当前设备是处于无网络的状态时,就不执行uni.request()请求,而是弹出一个弹框或者消息提示,提醒用户:“当前设备断网了,请检查网络后重试”

注:以上是根据我本人实际遇到这个问题后的解决办法,也是在这个坑里吃了不少苦,分享出来,希望给大家提供参考,若解决了你的问题,不要钱,请点一下赞!因为分享经验需要去组织语言、编辑文字,这个过程其实是需要花精力花时间的,因此,创作不易,分享不易!

继续阅读 »

问题呈现

在uniapp中,使用uni.request()向服务端接口发起请求后,返回值为:{"errMsg":"request:fail abort statusCode:-1"},因此,导致了后面的业务代码报错

前提

检查了uni.request()根据服务端接口需要的配置(如:url、data、header、method等)都没有问题

问题出现的可能原因

在以上前提下还出现这种问题,最有可能的原因:手机没有连网,或者看着连上了网但实际网络不可用,可以在手机浏览器中随便输入点文字搜一下测试看看,能不能搜到新内容。

仔细查看,这个{"errMsg":"request:fail abort statusCode:-1"}返回值,其实并不是服务端返回来的,因为请求都完全没有到服务端

解决办法

在执行uni.request()向服务端请求前,使用uni.getNetworkType()和uni.onNetworkStatusChange()对网络进行监听,如果监听到当前设备是处于无网络的状态时,就不执行uni.request()请求,而是弹出一个弹框或者消息提示,提醒用户:“当前设备断网了,请检查网络后重试”

注:以上是根据我本人实际遇到这个问题后的解决办法,也是在这个坑里吃了不少苦,分享出来,希望给大家提供参考,若解决了你的问题,不要钱,请点一下赞!因为分享经验需要去组织语言、编辑文字,这个过程其实是需要花精力花时间的,因此,创作不易,分享不易!

收起阅读 »

HBuilderX 跳转到指定的行和列

HBuilderX

HBuilderX 2.8.10起,支持跳转到指定的行列

HBuilderX内,跳转到指定行列

支持通过命令行打开指定文件,并跳转到指定的行和列。

/Applications/HBuilderX-Alpha.app/Contents/MacOS/HBuilderX /Users/hx/filename.md:2:10

注意:文件,需要是绝对路径

继续阅读 »

HBuilderX 2.8.10起,支持跳转到指定的行列

HBuilderX内,跳转到指定行列

支持通过命令行打开指定文件,并跳转到指定的行和列。

/Applications/HBuilderX-Alpha.app/Contents/MacOS/HBuilderX /Users/hx/filename.md:2:10

注意:文件,需要是绝对路径

收起阅读 »

uniapp中动态修改伪类元素的样式

data(){ ceshiColor: "#f60" } 中定义了一个变量,让后在要改变的标签中动态添加样式 :style="{ '--color': ceshiColor }" ,最后在样式表中 .ceshi::after{ display: block;content: "我是测试数据", color: var(--color) }

继续阅读 »

data(){ ceshiColor: "#f60" } 中定义了一个变量,让后在要改变的标签中动态添加样式 :style="{ '--color': ceshiColor }" ,最后在样式表中 .ceshi::after{ display: block;content: "我是测试数据", color: var(--color) }

收起阅读 »

苹果iOS上架App Store审核,由于相册权限原因被拒解决方案

Appstore 苹果审核 相册 上架

在配置文件里写上隐私描述就行了(为什么要用到相册功能):

            /* ios打包配置 */  
            "ios" : {  
                "capabilities" : {  
                    "entitlements" : {  
                        "com.apple.developer.associated-domains" : [ "applinks:1appapi.kcfy001.com" ]  
                    }  
                },  
                "privacyDescription" : {  
                    "NSPhotoLibraryUsageDescription" : "读取相册图片以用于用户晒单评论分享",  
                    "NSPhotoLibraryAddUsageDescription" : "保存晒单或详情图片到相册以用于分享商品",  
                    "NSCameraUsageDescription" : "拍照以用于用户晒单评论分享",  
                    "NSLocationWhenInUseUsageDescription" : "获取当前位置用于创建新的收货地址"  
                }  
            },

有想要代上架的朋友的可以加我QQ交流一下,专业代上架合作,QQ:1481983952

继续阅读 »

在配置文件里写上隐私描述就行了(为什么要用到相册功能):

            /* ios打包配置 */  
            "ios" : {  
                "capabilities" : {  
                    "entitlements" : {  
                        "com.apple.developer.associated-domains" : [ "applinks:1appapi.kcfy001.com" ]  
                    }  
                },  
                "privacyDescription" : {  
                    "NSPhotoLibraryUsageDescription" : "读取相册图片以用于用户晒单评论分享",  
                    "NSPhotoLibraryAddUsageDescription" : "保存晒单或详情图片到相册以用于分享商品",  
                    "NSCameraUsageDescription" : "拍照以用于用户晒单评论分享",  
                    "NSLocationWhenInUseUsageDescription" : "获取当前位置用于创建新的收货地址"  
                }  
            },

有想要代上架的朋友的可以加我QQ交流一下,专业代上架合作,QQ:1481983952

收起阅读 »