原理介绍

基础流程

先考虑最简单的情况, 只有一个页面, 页面内容显示当前时间, 和简单文本

  • 由我们给出一个或多个推广链接, eg. http://open.weixin.qq.com/connect/oauth2/authorize?appid=....
  • 点击推广链接后会进入微信的授权页面, 授权有2种:
    • 隐式授权: 看见一白页闪过
    • 显示授权: 需要点授权按钮(当最近已经点过, 将不会出现按钮, 而是一个提示)
  • 授权之后, 我们根据微信的api获取用户用户信息,

  • 生成2个重要的参数state, openid, 和配置的可选参数smt_**
  • 重定向到活动首页并在queryString中附加上一步的参数
  • 网页制作方接收到首页请求, 处理自己的业务逻辑, 响应200, 输出页面内容(A)
  • 用户在微信里看见页面, 下载资源(css, js, img...)
  • wx.min.js 开始运行, 读取queryString上state, open参数
    • 读取失败则静默返回
    • 成功读取到则保存到sessionStrage, 并根据这2个参数异步初始化jsskd(当域名错误时会初始化失败), 设置默认的分享配置
  • 根据开发者的调用, 设置自定义的分享配置, 可以设置多次, 生效的会是最后一次

  • 用户点分享, 将一个与推广链接有略微不同的地址分享出去
  • 其他人看见此分享, 重复第一步

A 步骤复杂化

当首页业务逻辑复杂, 需要做站内跳转(甚至是多次跳转)的情况,

请将我们的参数一并复制过来, wx.min.js第一次运行成功的依赖条件是正确域名, state, openid

多页面的情况

假设首页是index.html, 页面上有个链接到a2.html

由于在index.html中 wx.min.js 已经成功运行了一次, 所以在sessionStrage中已经保存了 state, openid

页面a2.html中的wx.min.js, 将会从sessionStrage里读取state,openid, 不再要求url中有参数

开发建议

以下要求并不强制

活动首页地址

首页地址是一个类似文件的地址 eg. /a/b/c/index.php

这样做的好处是能避开一些开发框架在底层的一次跳转(/a/b/c -> /a/b/c/)

页面开发

推荐使用SPA的模式进行开发(这也是微信推荐的), 用户体验更好

媒体

由于手机的网络稳定性很差, 尽量避开使用音乐媒体

results matching ""

    No results matching ""