Skip to content

Latest commit

 

History

History
252 lines (161 loc) · 7.29 KB

MicroApp_03.md

File metadata and controls

252 lines (161 loc) · 7.29 KB

小程序专有名词

AppId

微信公众号具备一个开发者ID,在公众号登录后,开发——基本配置——公众号开发信息处可以看到。

小程序有一个小程序ID,在小程序登录后,设置——开发设置——开发者ID处可以看到。

小程序开发时需要设置appId,调用各种接口名时需要用到,例如使用微信号授权登录。

AppSecret

小程序密钥,登录公众平台小程序,可以生成密钥。

和appId类似,小程序密钥可以令第三方拥有一些微信原生能力。

需要说明的问题

1、登录流程

	登录需要前端、后台、微信服务器三方交互。

2、授权

	调用一些原生能力需要用户进行授权,需要处理用户拒绝授权的情况。
	拒绝授权可以提示信息,发起重新授权的请求。

    eg:
        wx.authorize({
            scope:"scope.camera",//请求授权摄像头
            success:function(){

            },
            fail:function(){

            }
        });

	Tips:注意,获取用户信息的scope.userInfo在新版本中不具备直接获取的能力
		注意,wx.authorize如果被拒绝,将默认进入fail,
		wx.openSetting()可以显示被用户拒绝的权限,让用户打开。
        
3、调用原生能力
	小程序可以进行调取原生能力。
	先创建相机的上下文对象,再进行调取摄像头功能。
	
	eg:
        var ctx = wx.createCameraContext();
        ctx.takePhoto({
          quality: 'high',
          success: (res) => {
            this.setData({
              src: res.tempImagePath
            })
          }
        })
	Tips:录制视频,需要scope.camera;
		录音,需要scope.record;

4
	

调取摄像头

调取摄像头很特别。

摄像头拍摄的界面,需要单独的一个页面进行。
使用camera标签来标识摄像头拍摄到的图像的位置,在camera中无法插入其他的wxml元素。
限制可以插入cover-view标签来显示基本的文字。
slot不可使用。

	同时,拍照完成后,camera会继续采景。
也就是说:
	1、进入到这个页面时,调取wx.createCamera创建摄像头对象,向用户申请授权摄像头的使用。
	2、若被用户拒绝,需要提示用户,重新发起请求。
	3、camera的拍摄按钮,独立于摄像头视野的范围之外
	4、拍摄成功后,需要跳转到一个独立的页面展示拍摄到的图片。

常用API

1、触发原生能力方式
	后续的更新中,微信将会逐渐废弃一些直接调用原生能力的方法,而推荐使用button实现。
    button加上open-type,后接需要调取的原生能力,然后绑定bind+原生能力名,
	回调函数即为返回值。
	
	(1)wx.getUserInfo()
		获取用户信息,请求授权
		<button open-type="getUserInfo" bindgetuserinfo="handler">打开授权</button>

		...
        handler: function(e){
            if (e.detail.authSetting["scope.userInfo"]){//如果授权了个人信息,就会为true
                
            }
        }
		...
        
	(2)wx.openSetting()
		打开授权界面,提示用户自己去授权
		<button open-type="openSetting" bindopensetting="handler">打开授权</button>

	
        handler: function(e){
            if (e.detail.authSetting["scope.camera"]){//如果有授权,就会为true
                this.setData({
                    showFlag: true
                })
            }  
        }
2、工具
	(1)重定向
   		关闭当前页面的跳转,不会进堆栈:
            wx.redirectTo({
                url:"", //page的url
                success:(res)=>{

                },
                fail:(res)=>{

                }
            })
		保留当前页面的跳转,会进堆栈:
        	wx.navigateTo({
                url:"", //page的url
                success:(res)=>{

                },
                fail:(res)=>{

                }
            })
		返回上一个页面
        	wx.navigateBack({
                delta:"", //返回的页面数,是个number,设置太大会返回到首页
                success:(res)=>{

                },
                fail:(res)=>{

                }
            })
        
        Tips:redirectTo和navigateTo可以配合使用,有些页面不需要用户再返回就可以考虑不进入堆栈。

	(2)界面工具
		模态框
            wx.showModal({
                title:"",
                content:"",
                showCancel:true, 
                success:function(){
                    
                },
                fail:function(){
                    
                }
            })
		提示框
            wx.showToast({
				title:""
            });

            wx.hideToast()
		
		加载提示
            wx.showLoading({
                title:"",
                mask:false,		//是否显示透明蒙层,防止触摸穿透
                success:function(){}
            })
			wx.hideLoading()

        Tips:界面工具,showToast的层级在video等原生组件层级之上。
            若直接以标签形式写入<toast>内容</toast>wx:if
            但是这个toast标签的层级将会在video等原生组件的层级之下,注意。

        Tips:目前发现的可以标签化的方法有俩,
            一是<toast icon="success">提示的内容</toast>iconicontype
            二是<loading>提示的内容</loading>
            两者都可以用wx:if控制显示隐藏,但是都会比原生组件层级要低。

    (3)组件

        ①、<scroll-view scroll-y> </scroll-view>

            Tips:scroll-view将建立起一个可以滑动的视图。
                注意,直接css控制overflow:auto,页面也可以滑动,但是会有卡顿现象,
                换scroll-view将大大改善。

            

            Tips:常用的事件有
                bindscrolltolower:滚动到底部或最右的时候,触发;
                    可设置lower-threshold,规定在距离底部多远处触发事件,
                    eg:lower-threshold="100"

                bindscrolltoupper:滚动到顶部或最左的时候,触发;
                    可设置lower-threshold,规定在距离底部多远处触发事件,
                    eg:upper-threshold="100"

                bindscroll:滚动即触发。function里面带一个event对象。
                    event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}
            
            Tips:关于滚动,scroll-view的竖向滚动,要求scroll-view本身带有height属性,100%就行。

        ②、<cover-view></cover-view>
            Tips:cover-view的层级在原生组件之上,即可覆盖map、video、camera。
            Tips:cover-view里面只支持放cover-view、cover-image和button。其他标签不支持。

        ③、<button></button>
            Tips:button的边框有点问题。
            Tips:button本体设置border:none,outline:none;
                除此之外!还要给button:after,设置border:none,即可完全去除边框。
            Tips:加入open-type属性,可令按钮拥有访问原生能力的权限。