HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

javaScript事件-----事件类型之触摸与手势事件

一、触摸事件
touchstart:当手指触摸屏幕时触发;即使已经有一个手指放在了屏幕上也会触发。
touchmove:当手指在屏幕上滑动时连续地触发。在这个世界发生期间,调用preventDefault()可以阻止滚动。
touchend:当手指在屏幕上移开时触发。
touchcancel:当系统停止跟踪触摸时触发。关于此事件的确切触发时间,文档中没有明确说明。
上面这几个事件都会冒泡,也都可以取消。虽然这些触摸事件没有在DOM规范中定义,但它们却是以兼容DOM的方式实现的。因此,每个触摸事件的event对象都提供了鼠标事件中常见的属性:bubbles,cancelable,view,clientX,clientY,screenX,screenY,detail,altKey,shiftKey,ctrlKey和metaKey。

除了常见的DOM属性外,触摸世界还包含下列三个用于跟踪触摸的属性。

touches:表示当前跟踪的触摸操作的Touch对象的数组。
targetTouches:特定于事件目标的Touch对象的数组。
changedTouches:表示字上次触摸以来发生了什么改变的Touch对象的数组。
每个Touch对象包含下列属性:

clientX:触摸目标在视口中的x坐标。
clientY:触摸目标在视口中的y坐标。
identifier:标识触摸的唯一ID。
pageX:触摸目标在页面中的x坐标。
pageY:触摸目标在页面中的y坐标。
screenX:触摸目标在屏幕中的x坐标。
screenY:触摸目标在屏幕中的y坐标。
target:触摸的DOM节点目标。
使用这些属性可以跟踪用户对屏幕的触摸操作。

<div id="output"></div>
function handlerTouchEvent(event){  
    //只跟踪一次触摸  
    if(event.touches.length==1 || event.touches.length==0){//书上这里有错  
        var output=document.getElementById("output");  
        switch(event.type){  
            case "touchstart":  
                output.innerHTML="Touch started ( "+event.touches[0].clientX+", "+event.touches[0].clientY+")";  
                break;  
            case "touchend":  
                output.innerHTML+="<br/>Touch ended ("+event.changedTouches[0].clientX+", "+event.changedTouches[0].clientY+")";  
                break;  
            case "touchmove":  
                event.preventDefault(); //阻止滚动  
                output.innerHTML+="<br/>Touch moved ("+event.changedTouches[0].clientX+", "+event.changedTouches[0].clientY+")";  
        }  
    }  
}  

EventUtil.addHandler(document,"touchstart",handlerTouchEvent);  
EventUtil.addHandler(document,"touchend",handlerTouchEvent);  
EventUtil.addHandler(document,"touchmove",handlerTouchEvent);

以上代码会跟踪屏幕上发生的一次触摸操作。为简单起见,只会在有一次活动触摸操作的情况下输出信息。

当touchstart事件发生时,会将触摸的位置信息输出到<div>元素中。

当touchmove事件发生时,会取消其默认行为,阻止滚动(触摸移动的默认行为是滚动页面),然后输出触摸操作的变化信息。

而touched事件则会输出有关触摸操作的最终信息。

注意:在touched事件发生时,touches集合中就没有任何Touch对象了,因为不存在活动的触摸操作;此时,就必须转而使用changedTouches集合。

/当触发touchstart和touchmove事件的时候没有问题,程序能正确的进入 if 然后根据case执行对应的语句,但是当触发touchend事件的时候,event.touches.length已经等于0了,不能再进入if 中,也就不能执行case中的语句,所以触发touchend的时候永远不会执行程序。所以判断条件要加上 event.touches.length==0./

这些事件会在文档的所有元素上面触发,因而可以分别操作页面的不同部分。在触摸屏幕上的元素时,这些事件(包括鼠标事件) 发生的顺序如下:

touchstart
mouseover
mousemove(一次)
mousedown
mouseup
click
touched
桌面版Firefox 6+和Chrome也支持触摸事件。

2、手势事件
当两个手指触摸屏幕时就会产生手势,手势通常会改变显示项的大小,或者旋转显示项。有三个手势事件,如下:

gesturestart:当一个手指已经按在屏幕上而另一个手指又触摸屏幕时触发。
gesturechange:当触摸屏幕的任何一个手指的位置发生变化时触发。
gestureend:当任何一个手指从屏幕上移开时触发。
只有两个手指都触摸到事件的接收容器时才会触发这些事件。

在一个元素上设置事件处理程序,意味着两个手指必须同时位于该元素的范围之内,才能触发手势事件(这个元素就是目标)。

由于这些事件冒泡,所以讲事件处理程序放在文档上也可以处理所有手势事件。

此时,事件的目标就算两个手指都位于其范围内的那个元素。

触摸事件和手势事件关系:

每个手势事件的event对象都包含着标准的鼠标事件属性:bubbles,cancelable,view,clientX,clientY,screenX,screenY,detail,altKey,shiftKey,ctrlKey和metaKey。此外还有两个额外的属性:rotation和scale。

rotation属性:表示手指变化引起的旋转角度,负值表示逆时针旋转,正值表示顺时针旋转(该值从0开始)。
scale属性:表示两个手指间距离的变化情况(例如向内收缩会缩短距离);这个值从1开始,并随距离拉大而增长,随距离缩短而减小。
例子:

function handleGestureEvent(event){  
   var output=document.getElementById("output");  
    switch(event.type){  
         case "gesturestart":  
                output.innerHTML="Gesture started ( "+event.ratation+", scale"+event.scale+")";  
                break;  
            case "gestureend":  
                output.innerHTML+="<br/>Gesture ended ("+event.rotation+", scale"+event.scale+")";  
                break;  
            case "gesturechange":  
                event.preventDefault(); //阻止滚动  
                output.innerHTML+="<br/>Gesture changed ("+event.rotation+",scale "+event.scale+")";  
    }  
}  
EventUtil.addHandler(document,"gesturestart",handleGestureEvent);  
EventUtil.addHandler(document,"gestureend",handleGestureEvent);  
EventUtil.addHandler(document,"gesturechange",handleGestureEvent);
继续阅读 »

一、触摸事件
touchstart:当手指触摸屏幕时触发;即使已经有一个手指放在了屏幕上也会触发。
touchmove:当手指在屏幕上滑动时连续地触发。在这个世界发生期间,调用preventDefault()可以阻止滚动。
touchend:当手指在屏幕上移开时触发。
touchcancel:当系统停止跟踪触摸时触发。关于此事件的确切触发时间,文档中没有明确说明。
上面这几个事件都会冒泡,也都可以取消。虽然这些触摸事件没有在DOM规范中定义,但它们却是以兼容DOM的方式实现的。因此,每个触摸事件的event对象都提供了鼠标事件中常见的属性:bubbles,cancelable,view,clientX,clientY,screenX,screenY,detail,altKey,shiftKey,ctrlKey和metaKey。

除了常见的DOM属性外,触摸世界还包含下列三个用于跟踪触摸的属性。

touches:表示当前跟踪的触摸操作的Touch对象的数组。
targetTouches:特定于事件目标的Touch对象的数组。
changedTouches:表示字上次触摸以来发生了什么改变的Touch对象的数组。
每个Touch对象包含下列属性:

clientX:触摸目标在视口中的x坐标。
clientY:触摸目标在视口中的y坐标。
identifier:标识触摸的唯一ID。
pageX:触摸目标在页面中的x坐标。
pageY:触摸目标在页面中的y坐标。
screenX:触摸目标在屏幕中的x坐标。
screenY:触摸目标在屏幕中的y坐标。
target:触摸的DOM节点目标。
使用这些属性可以跟踪用户对屏幕的触摸操作。

<div id="output"></div>
function handlerTouchEvent(event){  
    //只跟踪一次触摸  
    if(event.touches.length==1 || event.touches.length==0){//书上这里有错  
        var output=document.getElementById("output");  
        switch(event.type){  
            case "touchstart":  
                output.innerHTML="Touch started ( "+event.touches[0].clientX+", "+event.touches[0].clientY+")";  
                break;  
            case "touchend":  
                output.innerHTML+="<br/>Touch ended ("+event.changedTouches[0].clientX+", "+event.changedTouches[0].clientY+")";  
                break;  
            case "touchmove":  
                event.preventDefault(); //阻止滚动  
                output.innerHTML+="<br/>Touch moved ("+event.changedTouches[0].clientX+", "+event.changedTouches[0].clientY+")";  
        }  
    }  
}  

EventUtil.addHandler(document,"touchstart",handlerTouchEvent);  
EventUtil.addHandler(document,"touchend",handlerTouchEvent);  
EventUtil.addHandler(document,"touchmove",handlerTouchEvent);

以上代码会跟踪屏幕上发生的一次触摸操作。为简单起见,只会在有一次活动触摸操作的情况下输出信息。

当touchstart事件发生时,会将触摸的位置信息输出到<div>元素中。

当touchmove事件发生时,会取消其默认行为,阻止滚动(触摸移动的默认行为是滚动页面),然后输出触摸操作的变化信息。

而touched事件则会输出有关触摸操作的最终信息。

注意:在touched事件发生时,touches集合中就没有任何Touch对象了,因为不存在活动的触摸操作;此时,就必须转而使用changedTouches集合。

/当触发touchstart和touchmove事件的时候没有问题,程序能正确的进入 if 然后根据case执行对应的语句,但是当触发touchend事件的时候,event.touches.length已经等于0了,不能再进入if 中,也就不能执行case中的语句,所以触发touchend的时候永远不会执行程序。所以判断条件要加上 event.touches.length==0./

这些事件会在文档的所有元素上面触发,因而可以分别操作页面的不同部分。在触摸屏幕上的元素时,这些事件(包括鼠标事件) 发生的顺序如下:

touchstart
mouseover
mousemove(一次)
mousedown
mouseup
click
touched
桌面版Firefox 6+和Chrome也支持触摸事件。

2、手势事件
当两个手指触摸屏幕时就会产生手势,手势通常会改变显示项的大小,或者旋转显示项。有三个手势事件,如下:

gesturestart:当一个手指已经按在屏幕上而另一个手指又触摸屏幕时触发。
gesturechange:当触摸屏幕的任何一个手指的位置发生变化时触发。
gestureend:当任何一个手指从屏幕上移开时触发。
只有两个手指都触摸到事件的接收容器时才会触发这些事件。

在一个元素上设置事件处理程序,意味着两个手指必须同时位于该元素的范围之内,才能触发手势事件(这个元素就是目标)。

由于这些事件冒泡,所以讲事件处理程序放在文档上也可以处理所有手势事件。

此时,事件的目标就算两个手指都位于其范围内的那个元素。

触摸事件和手势事件关系:

每个手势事件的event对象都包含着标准的鼠标事件属性:bubbles,cancelable,view,clientX,clientY,screenX,screenY,detail,altKey,shiftKey,ctrlKey和metaKey。此外还有两个额外的属性:rotation和scale。

rotation属性:表示手指变化引起的旋转角度,负值表示逆时针旋转,正值表示顺时针旋转(该值从0开始)。
scale属性:表示两个手指间距离的变化情况(例如向内收缩会缩短距离);这个值从1开始,并随距离拉大而增长,随距离缩短而减小。
例子:

function handleGestureEvent(event){  
   var output=document.getElementById("output");  
    switch(event.type){  
         case "gesturestart":  
                output.innerHTML="Gesture started ( "+event.ratation+", scale"+event.scale+")";  
                break;  
            case "gestureend":  
                output.innerHTML+="<br/>Gesture ended ("+event.rotation+", scale"+event.scale+")";  
                break;  
            case "gesturechange":  
                event.preventDefault(); //阻止滚动  
                output.innerHTML+="<br/>Gesture changed ("+event.rotation+",scale "+event.scale+")";  
    }  
}  
EventUtil.addHandler(document,"gesturestart",handleGestureEvent);  
EventUtil.addHandler(document,"gestureend",handleGestureEvent);  
EventUtil.addHandler(document,"gesturechange",handleGestureEvent);
收起阅读 »

使用uni.$emit()和uni.$on() 进行页面间通讯

自定义事件 uniapp
自 HBuilderX 2.0.0 起支持 uni.$emit、 uni.$on 、 uni.$once 、uni.$off ,可以方便的进行页面的通讯 ,触发的事件都是 App 全局级别的,跨任意组件,页面,nvue,vue 等。事件详情

具体如何使用呢?我们假设一个场景,进入app,是未登陆状态,需要在我的页面点击登陆,进入登陆页面进行登陆。登陆成功之后,返回到我的页面,实时显示登陆后的用户信息。

监听事件
首先,在我的页面监听事件。

// 我的页面    
onLoad(){    
    // 监听事件    
    uni.$on('login',(usnerinfo)=>{    
        this.usnerinfo = usnerinfo;    
    })    
},    
onUnload() {    
    // 移除监听事件    
        uni.$off('login');    
    },

因为事件监听是全局的,所以使用 uni.$on ,需要使用 uni.$off 移除全局的事件监听,避免重复监听。

触发事件
进入登陆页面,触发事件

// 登陆页面    
uni.$emit('login', {    
                avatarUrl: 'https://img-cdn-qiniu.dcloud.net.cn/uploads/nav_menu/10.jpg',    
                token: 'user123456',    
                userName: 'unier',    
                login: true    
            });

使用 uni.$emit 触发事件后,对应的 uni.$on 就会监听到事件触发,在回调中去执行相关的逻辑。

更多使用场景
以上只是一个简单的场景应用。而我们开发中会遇到很多页面间通讯场景,如:

vue 与 nvue,nvue 与 vue 间的通讯
tabbar 页面之间的通讯
父页面与多级子页面间的通讯
基本上述场景均可以实现,本质上就是一个页面通知另一个面我发生了变化,你需要处理一下。绝大部分页面的通讯都可以使用 uni.$emit、 uni.$on 、 uni.$once 、uni.$off 四个事件完成。

Tips

如果页面没有打开,将不能 注册监听事件 uni.$on 和 uni.$once 。
一次性的事件,直接使用 uni.$once 监听,不需要移除。
附件为 demo

继续阅读 »

自定义事件 uniapp
自 HBuilderX 2.0.0 起支持 uni.$emit、 uni.$on 、 uni.$once 、uni.$off ,可以方便的进行页面的通讯 ,触发的事件都是 App 全局级别的,跨任意组件,页面,nvue,vue 等。事件详情

具体如何使用呢?我们假设一个场景,进入app,是未登陆状态,需要在我的页面点击登陆,进入登陆页面进行登陆。登陆成功之后,返回到我的页面,实时显示登陆后的用户信息。

监听事件
首先,在我的页面监听事件。

// 我的页面    
onLoad(){    
    // 监听事件    
    uni.$on('login',(usnerinfo)=>{    
        this.usnerinfo = usnerinfo;    
    })    
},    
onUnload() {    
    // 移除监听事件    
        uni.$off('login');    
    },

因为事件监听是全局的,所以使用 uni.$on ,需要使用 uni.$off 移除全局的事件监听,避免重复监听。

触发事件
进入登陆页面,触发事件

// 登陆页面    
uni.$emit('login', {    
                avatarUrl: 'https://img-cdn-qiniu.dcloud.net.cn/uploads/nav_menu/10.jpg',    
                token: 'user123456',    
                userName: 'unier',    
                login: true    
            });

使用 uni.$emit 触发事件后,对应的 uni.$on 就会监听到事件触发,在回调中去执行相关的逻辑。

更多使用场景
以上只是一个简单的场景应用。而我们开发中会遇到很多页面间通讯场景,如:

vue 与 nvue,nvue 与 vue 间的通讯
tabbar 页面之间的通讯
父页面与多级子页面间的通讯
基本上述场景均可以实现,本质上就是一个页面通知另一个面我发生了变化,你需要处理一下。绝大部分页面的通讯都可以使用 uni.$emit、 uni.$on 、 uni.$once 、uni.$off 四个事件完成。

Tips

如果页面没有打开,将不能 注册监听事件 uni.$on 和 uni.$once 。
一次性的事件,直接使用 uni.$once 监听,不需要移除。
附件为 demo

收起阅读 »

android原生插件调起uniapp

原生插件

如果需要插件在完成功能后调起主程序,仅需调用下列代码:

    Intent intent = new Intent(Intent.ACTION_MAIN);  
    ComponentName cn =new ComponentName("主程序包名","io.dcloud.PandoraEntry");  
    intent.setComponent(cn);  
    startActivity(intent);  

io.dcloud.PandoraEntry 是官方固定的。

继续阅读 »

如果需要插件在完成功能后调起主程序,仅需调用下列代码:

    Intent intent = new Intent(Intent.ACTION_MAIN);  
    ComponentName cn =new ComponentName("主程序包名","io.dcloud.PandoraEntry");  
    intent.setComponent(cn);  
    startActivity(intent);  

io.dcloud.PandoraEntry 是官方固定的。

收起阅读 »

求职web前端开发远程技术顾问

求职

个人简介

本人有六年前端开发工作经验,是 uView UI 开源项目组成员。拥有良好的团队合作精神和扎实的开发能力。能手写响应式,弹性布局框架。熟练CSS动画 和 JavaScript 常用开发模式。现在一家公司公司担任前端组负责人,主要负责公司 游戏平台官网、云手机、云游戏、分销系统、节日活动的开发。

在工作之余会在网络上分享 技术文章 和 插件,目前CSDN博客访问量50w+,jQuery插件访问50w+,uniApp插件下载5w+。

所获荣誉

  1. uView UI 项目 获得 开源中国 2020最有价值开源项目
  2. 个人CSDN博客 获得 中国开发者社区CSDN 博客之星
  3. 猜成语游戏 获得 Dcloud(数字天堂-北京) 2021插件大赛二等奖
  4. uView UI 2 项目 获得 开源中国 2021最受欢迎的开源项目

专业技能

  • 掌握技能:CSS3,ES6,Vue.js,小程序,Node.js,egg.js,express,koa,Gulp.js。
  • 掌握框架:uni-app,apiCloud,Element UI,Vant UI,Color UI,uView UI。

服务和收费

服务 收费
开发技术问题解答 1000/月
开发技术问题解答、代码调优技术指导 2000/月
开发技术问题解答、代码调优技术指导、功能演示示例 3000/月

> 联系人:河浪、聊天QQ:1846492969、联系邮箱:helang.love@qq.com

继续阅读 »

个人简介

本人有六年前端开发工作经验,是 uView UI 开源项目组成员。拥有良好的团队合作精神和扎实的开发能力。能手写响应式,弹性布局框架。熟练CSS动画 和 JavaScript 常用开发模式。现在一家公司公司担任前端组负责人,主要负责公司 游戏平台官网、云手机、云游戏、分销系统、节日活动的开发。

在工作之余会在网络上分享 技术文章 和 插件,目前CSDN博客访问量50w+,jQuery插件访问50w+,uniApp插件下载5w+。

所获荣誉

  1. uView UI 项目 获得 开源中国 2020最有价值开源项目
  2. 个人CSDN博客 获得 中国开发者社区CSDN 博客之星
  3. 猜成语游戏 获得 Dcloud(数字天堂-北京) 2021插件大赛二等奖
  4. uView UI 2 项目 获得 开源中国 2021最受欢迎的开源项目

专业技能

  • 掌握技能:CSS3,ES6,Vue.js,小程序,Node.js,egg.js,express,koa,Gulp.js。
  • 掌握框架:uni-app,apiCloud,Element UI,Vant UI,Color UI,uView UI。

服务和收费

服务 收费
开发技术问题解答 1000/月
开发技术问题解答、代码调优技术指导 2000/月
开发技术问题解答、代码调优技术指导、功能演示示例 3000/月

> 联系人:河浪、聊天QQ:1846492969、联系邮箱:helang.love@qq.com

收起阅读 »

Please enable JavaScript to continue.解决方案

出现这个问题的原因 uniapp打包成h5,调用接口返回 “本站点必须要开启JavaScript才能运行”这篇文章的最佳回复是一个重点。
服务器识别content-type没有变成json。而是html模式。

找到的解决方案都有:

  • 删除mainfest.json里面的H5配置
  • 增加header头部
  • 打包的时候路径不填
  • 等等...

我的解决方案是

  • 后端:PHP
  • 框架:thinkPHP6

修改index.php 也就是入口文件,在最开始添加跨域

header('Access-Control-Allow-Origin:*'); // *代表允许任何网址请求  
header('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE'); // 允许请求的类型  
header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies  
header('Access-Control-Allow-Headers: Content-Type,Content-Length,Accept-Encoding,X-Requested-with, Origin,cheers-Token');

然后删除composer.lock 还有 vendor文件夹。
最后重新composer install 一遍。
问题解决。
我的问题是本地composer下载的包跟线上的不一致。导致我本地可以打包后上线不行。另外还有跨域问题。我是在代码里面解决的。也可以直接在nginx里面解决

继续阅读 »

出现这个问题的原因 uniapp打包成h5,调用接口返回 “本站点必须要开启JavaScript才能运行”这篇文章的最佳回复是一个重点。
服务器识别content-type没有变成json。而是html模式。

找到的解决方案都有:

  • 删除mainfest.json里面的H5配置
  • 增加header头部
  • 打包的时候路径不填
  • 等等...

我的解决方案是

  • 后端:PHP
  • 框架:thinkPHP6

修改index.php 也就是入口文件,在最开始添加跨域

header('Access-Control-Allow-Origin:*'); // *代表允许任何网址请求  
header('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE'); // 允许请求的类型  
header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies  
header('Access-Control-Allow-Headers: Content-Type,Content-Length,Accept-Encoding,X-Requested-with, Origin,cheers-Token');

然后删除composer.lock 还有 vendor文件夹。
最后重新composer install 一遍。
问题解决。
我的问题是本地composer下载的包跟线上的不一致。导致我本地可以打包后上线不行。另外还有跨域问题。我是在代码里面解决的。也可以直接在nginx里面解决

收起阅读 »

热更新 scss报错

scss

使用scss的时候,热更新样式代码,微信开发者工具报错:Cannot set property '_scopeId' of undefined

后卸载sass/scss,然后重新安装就可以了

使用scss的时候,热更新样式代码,微信开发者工具报错:Cannot set property '_scopeId' of undefined

后卸载sass/scss,然后重新安装就可以了

uni-app 实现 adnorid 来电自动接听或挂掉

uni-app 实现 adnorid 来电自动接听或挂掉
有偿提供代码
附件是视频,实现的是来电自动接听,可以看下,是否符合需求
QQ:543610866

uni-app 实现 adnorid 来电自动接听或挂掉
有偿提供代码
附件是视频,实现的是来电自动接听,可以看下,是否符合需求
QQ:543610866

神奇的XMLHttpRequest,在H5+下,安卓平台XMLHttpRequest能垮域!

XMLHttpRequest

最近想用XMLHttpRequest直接上传文件。
new plus.net.XMLHttpRequest() 写成了new.XMLHttpRequest();
XMLHttpRequest.send(file对象);
在安卓上竟然垮域能正常工作。
IOS上不能工作。
查找问题时才发现不是plus.net.XMLHttpRequest对象。

如果用plus.net.XMLHttpRequest,XMLHttpRequest.send(file对象)发送不了文件数据。

继续阅读 »

最近想用XMLHttpRequest直接上传文件。
new plus.net.XMLHttpRequest() 写成了new.XMLHttpRequest();
XMLHttpRequest.send(file对象);
在安卓上竟然垮域能正常工作。
IOS上不能工作。
查找问题时才发现不是plus.net.XMLHttpRequest对象。

如果用plus.net.XMLHttpRequest,XMLHttpRequest.send(file对象)发送不了文件数据。

收起阅读 »

uni push 推送的快速接入

unipush

推送的消息常用的主要分为2种:

1、通知消息:通知发送后会直接在手机通知栏(状态栏)展示一条消息
2、透传消息:即是自定义消息,Unipush只负责将消息送达到客户端,而客户端接收到消息后需要自己处理消息的展示方式或后续动作
在下面的第二篇文章中详细介绍了推送消息的几种类型

遇到的坑1:

今天遇到了在小米手机上出现了角标不停的增加每次+1,从1加到3然后4 5

参考文章:

个推小助手的文章就很全面,看下面文章就能搞定推送啦!

uni-push 2.0 快速接入指南
https://ask.dcloud.net.cn/article/40283
Unipush后台推送使用指南
https://ask.dcloud.net.cn/article/39333

继续阅读 »

推送的消息常用的主要分为2种:

1、通知消息:通知发送后会直接在手机通知栏(状态栏)展示一条消息
2、透传消息:即是自定义消息,Unipush只负责将消息送达到客户端,而客户端接收到消息后需要自己处理消息的展示方式或后续动作
在下面的第二篇文章中详细介绍了推送消息的几种类型

遇到的坑1:

今天遇到了在小米手机上出现了角标不停的增加每次+1,从1加到3然后4 5

参考文章:

个推小助手的文章就很全面,看下面文章就能搞定推送啦!

uni-push 2.0 快速接入指南
https://ask.dcloud.net.cn/article/40283
Unipush后台推送使用指南
https://ask.dcloud.net.cn/article/39333

收起阅读 »

推荐自由职业一些实用的网站【持续更新ING】

编程开发
​ ​https://www.runoob.com/​​ 菜鸟教程

​ ​https://www.cainiaojc.com/​​ 菜鸟

​ ​https://laravelacademy.org/​​  Laravel 学院

图片素材
​ ​https://lottiefiles.com/featured​​  动画动图

​ ​https://www.pexels.com/zh-cn/​​  免费素材

​ ​https://www.58pic.com/​​  千图

​ ​https://pixabay.com/zh/​​

图像处理
​ ​https://shortpixel.com/online-image-compression​​ 图片压缩

​ ​https://www.canva.com/​​  CANVA

​ ​https://www.fotor.com.cn/​​  Fotor

​ ​https://www.gaoding.com/​​ 搞定设计

​ ​https://pixlr.com/cn/​​  图像编辑器,动画设计

​ ​https://www.uupoop.com/​​ 在线PS

​ ​https://pc.meitu.com/​​  美图秀秀

接活平台
​ ​ http://proginn.com​​   程序员客栈

​ ​ http://www.findcto.com​​   findcto

 ​ ​http://www.kuaima.co/ ​​  快码众包

​ ​ https://mart.coding.net​​   coding码市

​ ​https://yuanqq.cn/​​ 猿圈圈

 ​ ​http://apk00.com/ ​​  猿团 

​ ​ http://linktion.cn ​​  英选

​ ​ https://zb.oschina.net/ ​​  oschina众包 

 ​ ​http://light.starwall.org/​​    LIGHT平台

 ​ ​http://geekmayi.com/ ​​  码易众包平台 

 ​ ​http://www.xyuanzhuo.com/ ​​   小圆桌

技术论坛
​ ​http://w2solo.com/    独立开发者社区​​
https://ask.dcloud.net.cn/ Dcloud社区

欢迎在评论区推荐和补充!

继续阅读 »

编程开发
​ ​https://www.runoob.com/​​ 菜鸟教程

​ ​https://www.cainiaojc.com/​​ 菜鸟

​ ​https://laravelacademy.org/​​  Laravel 学院

图片素材
​ ​https://lottiefiles.com/featured​​  动画动图

​ ​https://www.pexels.com/zh-cn/​​  免费素材

​ ​https://www.58pic.com/​​  千图

​ ​https://pixabay.com/zh/​​

图像处理
​ ​https://shortpixel.com/online-image-compression​​ 图片压缩

​ ​https://www.canva.com/​​  CANVA

​ ​https://www.fotor.com.cn/​​  Fotor

​ ​https://www.gaoding.com/​​ 搞定设计

​ ​https://pixlr.com/cn/​​  图像编辑器,动画设计

​ ​https://www.uupoop.com/​​ 在线PS

​ ​https://pc.meitu.com/​​  美图秀秀

接活平台
​ ​ http://proginn.com​​   程序员客栈

​ ​ http://www.findcto.com​​   findcto

 ​ ​http://www.kuaima.co/ ​​  快码众包

​ ​ https://mart.coding.net​​   coding码市

​ ​https://yuanqq.cn/​​ 猿圈圈

 ​ ​http://apk00.com/ ​​  猿团 

​ ​ http://linktion.cn ​​  英选

​ ​ https://zb.oschina.net/ ​​  oschina众包 

 ​ ​http://light.starwall.org/​​    LIGHT平台

 ​ ​http://geekmayi.com/ ​​  码易众包平台 

 ​ ​http://www.xyuanzhuo.com/ ​​   小圆桌

技术论坛
​ ​http://w2solo.com/    独立开发者社区​​
https://ask.dcloud.net.cn/ Dcloud社区

欢迎在评论区推荐和补充!

收起阅读 »

vivo上架支付问题

vivo

vivo上架,交友应用支付必须用原生支付,二维码支付会导致被驳回。
也就是说必须使用支付宝或者微信支付。
参考资料
https://zhuanlan.zhihu.com/p/468183376
https://zhuanlan.zhihu.com/p/468184137
https://zhuanlan.zhihu.com/p/468184812

继续阅读 »

vivo上架,交友应用支付必须用原生支付,二维码支付会导致被驳回。
也就是说必须使用支付宝或者微信支付。
参考资料
https://zhuanlan.zhihu.com/p/468183376
https://zhuanlan.zhihu.com/p/468184137
https://zhuanlan.zhihu.com/p/468184812

收起阅读 »