小程序深坑

  1. 合法域名必须备案,本地测试可选择不效验合法域名,同时在hosts中映射127.0.0.1 xxxx.com,然后刷新DNS ipconfig /flushdns
  2. wx.getUserInfo 用户拒绝后不回调fail
  3. 本地资源无法通过 WXSS 获取
    background-image:可以使用网络图片,或者 base64,或者使用标签
  4. 事件

    事件是视图层到逻辑层的通讯方式。
    事件可以将用户的行为反馈到逻辑层进行处理。
    事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。
    事件对象可以携带额外信息,如 id, dataset, touches。
  5. 事件绑定
    测试中发现catch:XX触发不如catchXX灵敏。
    “`
    事件绑定的写法同组件的属性,以 key、value 的形式。

    key 以bind或catch开头,然后跟上事件的类型,如bindtap、catchtouchstart。
    自基础库版本 1.5.0 起,bind和catch后可以紧跟一个冒号,其含义不变,
    如bind:tap、catch:touchstart。
    value 是一个字符串,需要在对应的 Page 中定义同名的函数。不然当触发事件的时候会报错。

    bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡。
    “`

  6. dataset

    在组件中可以定义数据,这些数据将会通过事件传递给 SERVICE。
    书写方式: 以data-开头,多个单词由连字符-链接,不能有大写(大写会自动转成小写)
    如data-element-type,最终在 event.currentTarget.dataset 中会将连字符转成驼峰elementType
  7. app.json 中的pages数组中的第一个路径为小程序打开的页面
  8. 每个页面的json文件可以单独配置页面信息,包括导航栏样式、标题等。app.json中的设置为全局设置,优先级小于页面json。
  9. 授权
    1. 如果用户未接受或拒绝过此权限,会弹窗询问用户,用户点击同意后方可调用接口;
    2. 如果用户已授权,可以直接调用接口;
    3. 如果用户已拒绝授权,则短期内不会出现弹窗,而是直接进入接口 fail 回调。请开发者兼容用户拒绝授权的场景。
  10. 页面全局变量可在page之外const声明。
  11. 播放音频,开发者工具与移动端格式不一样,直接移动端测试就好。
  12. 音频路径全局变量可访问,data里面访问不到。innerAudioContext音频src需要提前设置,play无参数。
  13. wx.createAudioContext(audioId, this)升级wx.createInnerAudioContext()无法绑定audio组件
  14. wx.saveFile(OBJECT)
    1. saveFile 会把临时文件移动,因此调用成功后传入的 tempFilePath 将不可用
    2. 本地文件存储的大小限制为 10M,包括缓存
  15. wx.openLocation(OBJECT)
    1. 经纬度参数为Float型,函数默认为字符串
  16. wx.createMapContext(mapId, this)
    1. translateMarker 要先设置markers,有具体点才会成功调用
    2. autoRotate与rotate设置后无反应,安卓和开发者工具不旋转
    3. autoRotate设为false,才会触发rotate旋转。设为true时无反应。
    4. 旋转方向为顺时针。
    5. getScale 获取的缩放级别跟手机有关,同样的视野范围不同手机获取的级别可能不一样。
  17. wx.onAccelerometerChange(CALLBACK)
    1. 调用接口后会自动开始监听
    2. 若从别的页面进入此页面,放在onReady里面监听的话,返回上一页面,监听不会停止。所以不需要监听时需要在onUnload函数里停止监听。
  18. wx.onNetworkStatusChange(CALLBACK)
    1. 安卓测试后状态改变会调用三次,原因不明。
  19. wx.makePhoneCall(OBJECT)
    1. 安卓会触发onHide,跳到电话拨打界面,ios不明。
  20. wx.onBluetoothAdapterStateChange(CALLBACK)
    1. 可用状态满足两个条件才会触发
      1. 蓝牙已成功初始化。
      2. 蓝牙availablefalse变为true状态。
    2. 是否搜寻状态触发
      1. discoveringfalse变为true
  21. wx.startBluetoothDevicesDiscovery(OBJECT)
    1. 开始搜寻后触发onBluetoothAdapterStateChange,状态discovering变为true后,再调用getBluetoothAdapterState状态discoveringfalse原因不明
  22. wx.setScreenBrightness(OBJECT)
    1. 设置亮度后仅在小程序内部有效,退出小程序或切换至别的应用,亮度跟系统设置有关,此效果所有小程序共用,即小程序A设置亮度后小程序B也会有同样的效果。
  23. getScreenBrightness
    1. 接口若安卓系统设置中开启了自动调节亮度功能,则屏幕亮度会根据光线自动调整,该接口仅能获取自动调节亮度之前的值,而非实时的亮度值。测试发现屏幕亮度不受自动调节亮度影响。
  24. wx.startWifi(OBJECT)
    1. 安卓显示调用成功,实际上未能打开wifi。stopWifi也一样。
  25. Canvas
    1. 所有在<canvas/> 中的画图必须用 JavaScript 完成:
  26. wx.request
    1. POST提交时需要设置header: { 'content-type': 'application/x-www-form-urlencoded' },,默认为json后台容易获取不到值。
  27. openid具有唯一性,但在同一个开发者的小程序与公众号及其他平台的openid不一致。无法判断是否为同一用户。unionid则在同一开发者的所有平台都具有唯一性。
    比如,某开发者同时拥有公众号A与小程序B,用户在A的openid为O1,而在B的openid则为O2,无法判断二者为同一用户。
    unionId同样具有唯一性,区别在于用户在A、B的unionid都一致,可以用来判断用户唯一性。unionid属于敏感信息,需要解密后才能获得。
  28. 微信用户信息解密。(待补充)
  29. 获取小程序二维码
    1. 只有发布的小程序才能成功生成二维码,未发布的小程序只能通过分享小程序。
    2. 生成二维码时可以传递自定义scene值,用户扫描分享的二维码后可在onload事件中获取场景值,实现获取扫码来源。
    3. 二维码次数有限制,
    4. 接口B 无path,有page。此参数必须是已经发布的小程序存在的页面(否则报错),根路径前不要填加’/’,不能携带参数(参数请放在scene字段里),默认跳主页面

猜你喜欢

转载自blog.csdn.net/vadonmo/article/details/79666973