开发公司微信小程序开发实战9_3 小程序URL Scheme

开发公司为了微信小程序的推广,开发公司微信提供了多种小程序入口方式,开发公司比如在公众号中可以将开发公司已经关联过的小程序的开发公司页面放置到自定义菜单中,开发公司用户单击后就可以打开开发公司小程序的相关页面;开发公司或者是给用户发送公众开发公司号模板消息,开发公司用户点击收到的模板消开发公司息进入小程序。开发公司不过这些方式都需要微信客户端的支持,有些情况下您可能希望在微信客户端之外的APP中打开小程序,比如您可能通过短信或者邮件给用户发送营销通知,并希望用户在短信或邮件APP中打开小程序,以快速获取用户流量,完成引流、导购等目的。对于这种诉求,微信也给予了支持,下面介绍如何生成URL 以及通过URL Scheme打开小程序的方法。

9.3.1生成小程序URL Scheme码

小程序URL Scheme码,用于短信、邮件、外部网页、微信内等方式拉起小程序的。通过服务端接口urlscheme.generate可以为小程序的任意页面生成小程序URL Scheme码。生成的URL Scheme如下所示:
weixin://dl/business/?t= *TICKET*
接口地址
api.weixin.qq.com/wxa/generatescheme?access_token=[xxx]

请求参数:

  • access_toke:接口调用凭证
  • jump_wxa:跳转到的目标小程序信息。
  • is_expire:生成的URL Scheme码类型,到期失效:true,永久有效:false。
  • expire_time:URL Scheme码的失效时间,为Unix时间戳。生成的URL Scheme码在该时间前有效。最长有效期为1年。
  • path:通过URL Scheme码进入的小程序页面路径,必须是已经发布的小程序存在的页面,不可携带query。path为空时会跳转小程序主页。
  • query:通过URL Scheme码进入小程序时的query,最大1024个字符,只支持数字,大小写英文以及部分特殊字符.

返回值

返回小程序URL Scheme码

示例代码

type WxJumpWxa  struct {   Path  string     `json:"path"`//通过scheme码进入的小程序页面路径   Query string     `json:"query"` //通过scheme码进入小程序时的query}type WxUrlSchemeReq struct {   Jump_wxa      WxJumpWxa `json:"jump_wxa"`//跳转到的目标小程序信息   Is_expire     bool      `json:"is_expire"` //到期失效:true,永久有效:false   Expire_type    int64         `json:"expire_type"`//失效时间:0,失效间隔天数:1   Expire_time    int64         `json:"expire_time"`//到期失效的 scheme 码的失效时间,为 Unix 时间戳   Expire_interval    int64     `json:"expire_interval"`//到期失效的 scheme 码的失效间隔天数}type WxUrlSchemeRet struct {   ErrCode       int64         `json:"errcode"`   ErrMsg        string        `json:"errmsg"`   Openlink      string        `json:"openlink"`}//生成页面Scheme码func HandlerUrlScheme(w http.ResponseWriter, r *http.Request) {   //page路径必须为已发布的小程序页面路径   page := r.FormValue("page");   //通过scheme码进入小程序时的query   query := r.FormValue("query");   var req  WxUrlSchemeReq   req.Is_expire = true   req.Expire_type = 0   req.Expire_time = time.Now().AddDate(0, 0, 30).Unix()   req.Jump_wxa.Path = page   req.Jump_wxa.Query = query   paramstr, _ := json.Marshal(req)   fmt.Println(string(paramstr))   wx_addr := "https://api.weixin.qq.com/wxa/generatescheme"   wx_addr += "?access_token=" + GetWxToken()   fmt.Println(wx_addr)   res, err := http.Post(wx_addr, "charset=UTF-8", bytes.NewBuffer(paramstr))   if err != nil {      fmt.Println(err)      http.Error(w, "微信请求错误", http.StatusInternalServerError)      return   }   raw, err := ioutil.ReadAll(res.Body)   res.Body.Close()   if err != nil {      fmt.Println(err)      http.Error(w, "微信返回错误", http.StatusInternalServerError)      return   }   fmt.Println(string(raw))   var ret WxUrlSchemeRet   err = json.Unmarshal(raw, &ret)   if err != nil {      fmt.Println(err)      http.Error(w, "微信返回错误", http.StatusInternalServerError)      return   }   w.Write([]byte(ret.Openlink))}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61

9.3.2小程序URL Scheme码的使用

urlscheme.generate生成的URL Scheme如下所示:
weixin://dl/business/?t= *TICKET*
IOS系统支持识别URL Scheme,可在短信等应用场景中直接通过URL Scheme跳转小程序。Android系统不支持直接识别URL Scheme,用户无法通过URL Scheme正常打开小程序。开发者需要使用H5页面中转,再跳转到URL Scheme来打开小程序,跳转连接的格式如下所示:
location.href = 'weixin://dl/business/?t= *TICKET*'
但是当我们短信或邮件中打开跳转链接时,是无法确定用户所使用的的手机设备是IOS还是Android,因此我们从实际的业务触发,都需要一个H5页面进行中转处理。
说明:

  • 通过URL Scheme打开小程序的场景值为 1065。
  • 微信内的网页如需打开小程序请使用微信开放标签-小程序跳转按钮,无公众号也可以直接使用小程序身份开发网页并免鉴权跳转小程序。符合开放范围的小程序可以下发支持打开小程序的短信。
  • 只能生成已发布的小程序的URL Scheme。
  • 通过URL Scheme跳转到微信时,会触发系统弹框询问,若用户选择不跳转,则无法打开小程序。请开发者妥善处理用户选择不跳转的场景。
网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发