前言: 工作需要,开发了一个小程序插件,首次接触,踩了蛮多坑,吃一堑长一智,记录一下,官方文档已经很全,没必要都搬过来,本文主要记录本人踩的坑点,以及开发过程中的注意点

写在前面:

  1. 小程序插件的开放范围:企业、媒体、政府及其他组织主体,即不对个人账户开发
  2. 小程序插件有服务类目限制,具体见: 插件服务类目
  3. 只要使用到 支付功能页,一定一定要在后台开通插件的支付能力! 即使支付走的是第三方,也一定要开通(饱含血泪的提醒)
  4. 开通微信支付,需要选择服务商模式,并填写服务商商户号
  5. 插件的本地缓存和插件使用者小程序的本地缓存有壁,即彼此隔离,插件使用者设置的本地缓存在插件中无法调用,反之亦然
  6. 插件所有者小程序,指的是和插件同AppID的小程序,例如: " 一路向北 " 这个小程序里开发了 "一路为你导航" 这个插件,那无论这个插件被谁引用,插件所有者小程序始终是"一路向北"
  7. 一些 API 不允许插件调用(这些函数不存在于 wx 对象下),所以在开发前,最好测一下要用的接口是否在wx对象下
  8. 插件的请求域名列表与小程序相互独立

正文开始~

1、插件开发接入流程: 官方接入流程

大体上分5步,如下:

在这一部分的注意点:

  • 在开始开发插件之前要先开通插件,不然会导致插件无法上传,调用开发版插件需要上传插件才能获取到插件测试ID
  • 插件的服务器域名和挂载插件的小程序是不共用的,所以需要单独设置

正式开发啦~

2、开发插件

  • 创建插件项目 
    开发模式选择插件,宿主AppID和插件AppID一致,不适用云服务,点击确定,成功创建插件项目

    创建成功的项目中,包含三大目录:
        a、plugin :插件代码目录。
        b、miniprogram :用于插件调试、预览和审核的小程序。(不是插件所有者小程序)
        c、doc :用于放置插件开发文档。在提审前要提交README.md文件到后小程序后台,作为开发文档

在开发工具中,开发模式要选为插件模式,在miniprogram目录下的app.json中, 配置如下,provider就是插件提供者,就是插件的AppID

  •  插件配置文件
    向使用者小程序开放的所有自定义组件、页面和 js 接口都必须在插件配置文件 plugin.json 列出
  • 自定义组件
    插件可以定义若干个自定义组件,这些自定义组件都可以在插件内相互引用。但提供给使用者小程序使用的自定义组件必须在配置文件的 publicComponents 段中列出
  • 页面
    插件可以定义若干个插件页面,可以从本插件的自定义组件、其他页面中跳转,或从使用者小程序中跳转。所有页面必须在配置文件的 pages 段中列出

    插件执行页面跳转的时候,可以使用 navigator 组件。当插件跳转到自身页面时, url 应设置为这样的形式:plugin-private://PLUGIN_APPID/PATH/TO/PAGE 。需要跳转到其他插件时,也可以这样设置 url 。

    自基础库版本 2.2.2 开始,在插件自身的页面中,插件还可以调用 wx.navigateTo 来进行页面跳转, url 格式与使用 navigator 组件时相仿。

    <navigator url="plugin-private://wxidxxxxxxxxxxxxxx/pages/hello-page">Go to pages/hello-page!
    </navigator>
  • 预览,发布与上传
    插件和小程序的预览、上传一致,插件没有体验版本,线上的插件会存在多个版本,插件使用者可以决定使用哪个版本
  • 在开发版小程序中使用开发版的插件
    首先在开发工具中点击右上角的上传按钮,将插件项目上传,上传成功的消息中有个插件开发ID,将这个ID复制下来,在需要使用这个开发版插件的开发版小程序中,将version设置为: "version": "dev-[开发版 ID]"

    注意:
           a、当重新上传了插件,旧的开发版ID就会失效
           b、同一个插件不同的开发者上传的开发版本互不影响,可同时有效

  •  插件开发文档
     插件开发文档会展示在插件详情页,供其他开发者在浏览插件和使用插件时进行阅读和参考
    插件开发文档就是项目目录doc中的README.md文件,文档中若要使用图片,则图片需要放置在doc目录下不能使用网络图片,
    在开发工具中右键README.md文件选择上传,就可以在小程序后台看到上传的文件,在小程序后台可以预览和发布文件

3、插件功能页( 插件所有者小程序 中的一个特殊页面)

因为有些API在插件中是不能使用的,比如获取用户信息、支付等,微信提供了插件功能页来实现这个功能,目前有5个功能页,分别是:

  • 用户信息功能页
  • 支付功能页(接口:wx.requestPluginPayment)
  • 收获地址功能页 (接口: wx.chooseAddress)
  • 发票功能页 (接口: wx.chooseInvoice)
  • 发票抬头功能页(接口: wx.chooseInvoiceTitle)

注意点:
    a、如果插件未开通,functional-page-navigator 点击后会无响应
    b、要使用插件功能页,需要先激活功能页特性,配置对应的功能页函数,再使用 functional-page-navigator 组件跳转到插件功能页,从而实现对应的功能。
    c、在基础库版本2.22.1起,除用户信息功能页外,其他四个功能页都可以通过直接调用对应的接口实现功能.

d、功能页函数需要放在插件所有者小程序的根目录下,与app.json同级
         

f、功能页的跳转目前不支持在开发者工具中调试,要在真机上测试(切记!切记!切记!)

  •  激活功能页特性

    要在插件中调用插件功能页,需要先激活插件所有者小程序的功能页特性。具体来说,在插件所有者小程序的 app.json 文件中添加 functionalPages 定义段,并令其值为 true ,旧式写法将被移除,未来会直接不可编译,这里就不展示旧式写法了

{"functionalPages": {"independent": true}
}

ps:学习成长过程的简单记录,如有不恰当之处,欢迎交流!

小程序插件接入、开发与注意事项相关推荐

  1. 小程序插件的开发到引入,这一篇文章就够了

    一.小程序插件功能介绍 1.如何理解插件 插件,英文名可称作"Plug-in.Plugin.add-in.addin.add-on.addon或extension",是一个依附于主 ...

  2. 如何利用小程序+插件快速开发app?

    当前软件开发中运用到的插件技术主要有以下两种类型: 1.组件对象的模型插件.该技术又被简称为COM,利用该模型可以直接定义程序接口,而不需了解插件功能的整个实现过程,同时也能达到不同插件间通信的目的- ...

  3. 小程序插件——开发者开发神器

    2019年3月13日,微信小程序发布了插件功能.开发人员可以为其他小程序开发插件,就像开发小程序一样.同时,小程序制作开发人员可以直接使用插件在小程序中为用户服务而不重复开发. 今天就和大家分享6款非 ...

  4. 微信小程序插件怎么开发

    小程序开发教程由小程序资讯提供 近期,微信小程序发布了重大功能更新,支持插件的使用和开发.消息一出,小程序开发者蜂拥而至,开始专研插件开发,不久后会有一批优质服务的插件上线是可以预见的.从开发者的角度 ...

  5. 超详细淘宝小程序的接入开发步骤

    本文是向大家介绍的关于工作中遇到的如何对接淘宝小程序开发的步骤,它能够帮助大家省略在和淘宝侧对接沟通过程中的一些繁琐问题,便捷大家直接快速开展工作~~ 一.步骤演示 1.首先我们打开淘宝开放平台,进入 ...

  6. 如何开发引入小程序插件

    一般来讲各个小程序开放平台对于插件开发的开放范围有一定的限制,例如微信小程序平台开放了22个行业相关的插件开发,其中对医疗服务.金融业.文娱.社交等行业还有进一步的特殊限制. 在了解小程序插件的开发规 ...

  7. 从原理到应用,一文带你了解小程序插件能力

    3 月 13 日,小程序插件功能上线:8 月 底,在时隔半年后,为进一步推广插件功能,微信在开发者社区上线了插件版块. 小程序插件是可以被开发者添加到小程序内直接使用的,能为用户提供具体服务的功能组件 ...

  8. 从原理到应用,一文带你了解微信小程序插件能力

    3月13日,微信小程序插件功能上线:8月底,在时隔半年后,为进一步推广插件功能,微信在开发者社区上线了插件版块. 小程序插件是可以被开发者添加到小程序内直接使用的,能为用户提供具体服务的功能组件-- ...

  9. 「初探」小程序插件功能

    「初探」小程序插件功能 3月13日,小程序发布了新功能-- 小程序插件.即,在小程序基础库 1.9.6 版本上,允许开发者开发插件,同时将插件提供给其它小程序使用.微信小程序在构建自己生态的征程上,又 ...

最新文章

  1. EXP/EXPDP, IMP/IMPDP应用
  2. 质数c语言欧拉筛选,Python|欧拉筛法求质数
  3. Linux-编辑器vim与nano的使用
  4. vhd 镜像 备份Linux,差分VHD 系统秒备份、秒还原教程 完胜GHOST
  5. 语义化版本(semantic versioning)机制里的一些范围标识符
  6. 2020 CCPC网络赛 赛后感
  7. Freemarker的基本语法及入门基础
  8. Waymo在美国推出自动驾驶汽车共享服务
  9. 网络安全 Security+(SY0-601)学习笔记
  10. 《Arduino实战》——2.5 小结
  11. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_7_File类创建删除功能的方法...
  12. WIN10下速腾聚创RS-Ruby lite80线激光雷达ip地址和端口号port修改
  13. 易简约个人产品中心网站源码html模板
  14. 重磅!Science发表西湖大学周强实验室关于“新冠”的最新研究成果
  15. 苹果IOS使用教程如何使用PPTP达到给手机换IP
  16. java实验2总结心得,java实验的心得体会
  17. wavedrom使用教程
  18. 傲视天地 页游 一键端 自玩
  19. Matlab函数bwmorph简介 图像处理
  20. 奋斗路上的安全边际,程序员保险配置指南

热门文章

  1. “打印机故障”,我的解决方案
  2. 熊猫烧香的病毒制作源码
  3. word 目录中标题样式与正文标题对应
  4. 高通平台开发环境搭建、编译、烧录(android5.1以上系统)
  5. 论文编辑工具下载与安装(winedit + miktex)
  6. python Pipelines(管道)
  7. linux_安装启动talnet相关问题
  8. c语言51单片机数字时钟设计,51单片机数字时钟功能需求及设计实现(带闹钟)...
  9. Navicat premium15安装
  10. 禁止公司内网电脑安装QQ电脑管家和360安全卫士