小程序个人总结最佳实践

一、开发环境

1.成为微信公众平台开发者

成为微信公众平台的开发者,是小程序开发的首要条件。只有成为微信公众平台的开发者,才可以使用公众平台的各种开发接口。如果你已经是开发者,则可以跳过本章。

(1) 进入微信公众平台官网(mp.weixin.qq.com)点击右上角的“立即注册”按钮
(2)选择“小程序”。
(3)请填写未注册过公众平台、开放平台、企业号、未绑定个人号的邮箱。
(4)登录邮箱,查收激活邮件,点击激活链接。
(5)选择主体类型选择,完善主体信息和管理员信息。
(6)完成注册后,在微信公众平台官网首页(mp.weixin.qq.com)的登录入口直接登录。
(7)选择通过微信认证验证主体身份的用户,需先完成微信认证后,才可以补充小程序名称信息,上传小程序头像,填写小程序介绍并选择服务范围。
(8)登录微信公众平台小程序,进入用户身份- 开发者,新增绑定开发者。

  • 个人主体小程序最多可绑定5个开发者,10个体验者。
  • 未认证的组织类型小程序最多可绑定10个开发者,20个体验者。
  • 已认证的小程序最多可绑定20个开发者,40个体验者。
image
2.获取AppID

进入“设置-开发设置”,获取AppID信息。


image
3.下载并安装开发者工具

登录微信小程序官网下载对应的版本:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html

4.登录

开发者工具使用管理员或者绑定的开发者微信号扫码登录。

二、技术选型

目前主流3种开发方式:wepy 、mpvue 、小程序原生开发

开发文档以及介绍:
三者的简单对比
image
个人选择mpvue作为开发方式

原因:原生小程序开发ide太难用;wepy相对于vue开发还有很多不一样的地方;mpvue最吸引人的地方是代码的移植性,一套代码写的好就可以在h5项目和小程序中通用,并且潜力很大。

mpvue主要特性
  • 彻底的组件化开发能力:提高代码
  • 完整的 Vue.js 开发体验
  • 方便的 数据管理方案:方便构建复杂应用
  • 快捷的webpack 构建机制:自定义构建策略、开发阶段 hotReload
  • 支持使用 npm 外部依赖
  • 使用 Vue.js命令行工具 vue-cli 快速初始化项目
  • H5 代码转换编译成小程序目标代码的能力

三、小程序运营功能

1.API实现相关:
onShareAppMessage
  • 小程序如果想对外分享,必须在page里面定义onShareAppMessage函数,来配置页面分享转发相关的信息。
  • 只有定义了此事件处理函数,右上角菜单才会显示 “转发” 按钮
  • 用户点击转发按钮的时候会调用
  • 此事件需要 return 一个 Object,用于自定义转发内容
  • 一个页面可能会有多个分享,可以由插入的参数options来判断具体是由哪个位置进行分享,从而做不同的逻辑判断。
  • return对象的返回函数:


    image
  • 如果定义了该事件,又不想通过页面menu转发,可以通过hideShareMenu来隐藏掉
    注意事项:
  • 转发后不添加imageUrl的话,将截图作为转发的默认图片。
  • from 字段可以通过在转发成功后调取的 success、complete 来进行对 menu 和 button 的不同操作
  • 如果有携带 shareTicket 值,会在 success 回调产生,返回结果在 shareTickets 字段中,是一个数组,可以做一定处理
wx.showShareMenu

一般是用来配置相关的参数,常见的如withShareTicket,用它来获取群信息,群的相关标示。

wx.showShareMenu({  withShareTicket: true})
wx.hideShareMenu

隐藏menu级别的转发功能,但是button中还存在着转发。

如果先设置 showShareMenu ,并且配置了 withShareTicket,再用 hideShareMenu 方法,通过按钮转发,照样能获取 shareTicket,如下:

wx.showShareMenu({  withShareTicket: true})wx.hideShareMenu({})
wx.updateShareMenu

更新shareMenu信息需要用update操作哦,这里需要注意下,一般都是会更新withShareTicket属性。

wx.getShareInfo

在拿到了shareTicket信息后,可以由此API获取转发详细信息

wx.getShareInfo({    shareTicket: res.shareTickets[0],    success: ...    fail: ...})

相关回调的参数

{    errMsg: "getShareInfo:ok",     iv: "gRHeFU+Nhr36RmladCXnRQ==",     encryptedData: "IQ/RwZLeQFUGuxv0bBfOrL/KLnXO+bxcyCBru5lB92FkHIg8ae…7TnHwU+rqgerFKvpvS5JbFyh+9liUqyb2bk6/LETYQ+h/FQ=="}

由iv和encryptedData进行解密,可以拿到openGId的值。为当前群对当前小程序的唯一值。额外还可以拿到群名称等更多的开放数据。

button转发

页面内需要转发时,需要给button组件设置open-type="share",并在触发的地方判断来源。

获取分享链接流程

在小程序中,获取openGId主要有两种途径,也一般围绕着两种途径做分享相关的开发:

  • 当用户打开withShareTicket的卡片时,可以在onLauch或者getShareInfo中获取加密信息,并且传给服务端获得openGId。

  • 当用户分享成功后,会在回调里收到一个shareTicket,然后通过getShareInfo来获得加密信息,获得openGId。

2.小程序 分享 个人:

实现路径清晰,获取openGId需要服务端支持。

  • 小程序测试版不能分享
  • 小程序账号必须和app微信分享账号绑定
3.小程序 分享 朋友圈:

小程序无法直接分享到朋友圈,是没有api接口的!!!

间接的方法是分享二维码到朋友圈

  1. 通过微信api申请小程序二维码
    获取小程序二维码接口文档

  2. 下载二维码到服务器并返回url

  3. 小程序接收url并从服务器下载图片

    wx.downloadFile

  4. 小程序将下载好的图片保存至用户相册

    wx.saveImageToPhotosAlbum

4.app 分享 小程序:

实现路径清晰
《微信官方文档》

5.app和小程序互相跳转:
  • 1、App主动发起小程序卡片分享到微信,微信点击打开小程序,这时的小程序可以打开App
  • 2、App主动发起打开小程序,这时的小程序可以打开App
    App主动打开小程序(微信官网):
    小程序返回App(微信官网
6.公众号和小程序互相跳转:

可以跳转,但是必须把公众号和小程序关联

  • 可关联已有的小程序或快速创建小程序。已关联的小程序可被使用在自定义菜单和模版消息等场景中。
  • 公众号可关联同主体的10个小程序及不同主体的3个小程序。同一个小程序可关联最多50个公众号。
  • 公众号跳小程序 :比如说 “丰巢快递柜” 公众号关联的小程序:丰巢寄快递。
  • 小程序跳公众号 :打开“丰巢寄快递”,点击右上角的菜单选项,然后点击”关于丰巢寄快递“,就可以看见关联的公众号了。
7.h5和小程序互相跳转:

可以相互跳转。

  • 小程序跳H5


    image

    web-view 组件是一个可以用来承载网页的容器,会自动铺满整个小程序页面。但个人类型与海外类型的小程序暂不支持使用。

注:基础库 1.6.4 开始支持,低版本需做兼容处理。

wx.miniProgram.navigateTo({url: '/path/to/page'})
8.小程序和小程序互相跳转:

可以相互跳转。


image
  • 低版本需要做兼容处理。
  • 相互跳转的小程序必须是同一公众号下关联的。
9.小程序 获取用户隐私信息(手机号等):

可以获取

  • 1.getPhoneNumber这个组件通过button来实现(别的标签无效)。将button中的open-type=“getPhoneNumber”,并且绑定bindgetphonenumber事件获取回调。
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>
  • 2.在使用这个组件之前必须先调用login接口,如果没有调用login点击button时会提示先调用login。
App({
    onLaunch: function () {
        wx.login({
            success: function (res) {
                if (res.code) {
                    //发起网络请求
                    console.log(res.code)
                } else {
                    console.log('获取用户登录态失败!' + res.errMsg)
                }
            }
        });
    }
})
  • 3.通过bindgetphonenumber绑定的事件来获取回调。
    回调的参数有三个,
    errMsg:用户点击取消或授权的信息回调。
    iv:加密算法的初始向量(如果用户没有同意授权则为undefined)。
    encryptedData: 用户信息的加密数据(如果用户没有同意授权同样返回undefined)


    image
getPhoneNumber: function(e) { 
    console.log(e.detail.errMsg) 
    console.log(e.detail.iv) 
    console.log(e.detail.encryptedData) 
    if (e.detail.errMsg == 'getPhoneNumber:fail user deny'){
      wx.showModal({
          title: '提示',
          showCancel: false,
          content: '未授权',
          success: function (res) { }
      })
    } else {
      wx.showModal({
          title: '提示',
          showCancel: false,
          content: '同意授权',
          success: function (res) { }
      })
    }
  }
  • 4.最后我们需要根据自己的业务逻辑来进行处理
    如果用户不同意授权的话可能我们会有一个让他手动输入的界面,如果不是强制获取手机号的话可以直接跳转页面进行下一步。(用户不同意授权errMsg返回‘getPhoneNumber:fail user deny’)
  • 5.用户同意授权
    我们可以根据login时获取到的code来通过后台以及微信处理拿到session_key,最后通过app_id,session_key,iv,encryptedData(用户同意授权errMsg返回‘getPhoneNumber:ok’)
  • 6.解密
    解密的方法可以去微信官方开发文档查看,有很详细说明。
    加密数据解密算法(官方文档)
10.小程序 获取微信id

可以获取,单必须由服务端去做

  • 在18年4月25日小程序做了一次更新,小程序授权不再支持直接弹框获取用户信息授权了


    image
  • 小程序调用wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
  • 开发者服务器以code换取 用户唯一标识openid 和 会话密钥session_key。
  • 之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。
11.小程序向公众号导流

在小程序中,可以利用一些引导性文案指引用户点击进入客服会话页面,然后客服自动回复一条公众号图文消息,而图文消息则有引导关注公众号获取更多服务的指引文案。(经典用法,但是小心被封)


image
12.小程序和微信卡劵能力结合

比较小众的玩法:用户可以从小程序中快速领取会员卡和优惠券,也可以从卡包中的会员卡直达小程序。

增加接入途径:从卡包直接进入(发卡需要注册并认证)


image

四、小程序审核上架

  • 小程序的审核风格跟苹果的APP STORE风格很像,一样是邮件沟通,一样的审核严格,一样会有一些让人哭笑不得的拒绝理由。

  • 类目不完善或者是类目选择不当
    这是目前最容易出现的坑。小程序服务类目所对应的页面中的核心内容必须与该类目一致,并且跳转不要超过2次。
    例如,不能选择的类目是工具类,小程序里却搞起了电商。千万不能搞一些挂羊头卖狗肉的小程序,这是肯定要禁止的。

  • 审核前一定要仔细看区分,可以了解下竞品发的是什么类目。
    下面这张类目表可以收藏一下,标红的部分代表要相关证照才能通的类别。


    image.jpg
  • “功能不完善/功能不完整”
    这个有时候是审核人员不会用,误以为你的小程序没开发完整,如果你确定没问题的话可以多提交一次试试。

  • 产品的某个功能有bug

  • 小程序简介没有介绍小程序功能
    很多人刚开始开发的时候,随便填写了一下简介,开发结束后忘记补充完整就直接提交了。将简介补充完整,重新上传就可以了。
    这种低级失误还是少犯才好,来回折腾很浪费时间的。

  • 含有声音视频类目,请补充对应类目
    音频和视频文件不好管理,容易出现风险,所以微信官方审核特别严格。一定要慎之又慎!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容