激励视频广告

微信小程序广告流量主操作指引:文档地址
激励视频广告组件是由客户端原生的图片、文本、视频控件组成的,层级最高,会覆盖在普通组件上。

开发者可以调用 wx.createRewardedVideoAd 创建激励视频广告组件。该方法返回的是一个单例,该实例仅对当前页面有效,不允许跨页面使用。

广告创建

激励视频广告组件默认是隐藏的,因此可以提前创建,以提前初始化组件。开发者可以在微信小程序页面的 onLoad 事件回调中创建广告实例,并在该页面的生命周期内重复调用该广告实例。

let rewardedVideoAd = null
Page({
  onLoad() {
    if(wx.createRewardedVideoAd){
      rewardedVideoAd = wx.createRewardedVideoAd({ adUnitId: 'xxxx' })
      rewardedVideoAd.onLoad(() => {
        console.log('onLoad event emit')
      })
      rewardedVideoAd.onError((err) => {
        console.log('onError event emit', err)
      })
      rewardedVideoAd.onClose((res) => {
        console.log('onClose event emit', res)
      })
    }
  }
})

为避免滥用广告资源,目前每个用户每天可观看激励式视频广告的次数有限,建议展示广告按钮前先判断广告是否拉取成功。

显示/隐藏

激励视频广告组件默认是隐藏的,在用户主动触发广告后,开发者需要调用 RewardedVideoAd.show() 进行显示。

rewardedVideoAd.show() 

只有在用户点击激励视频广告组件上的 关闭广告 按钮时,广告才会关闭。开发者不可控制激励视频广告组件的隐藏。

广告拉取成功与失败

激励视频广告组件是自动拉取广告并进行更新的。在组件创建后会拉取一次广告,用户点击 关闭广告 后会去拉取下一条广告。

如果拉取成功,通过 RewardedVideoAd.onLoad() 注册的回调函数会执行,RewardedVideoAd.show() 返回的 Promise 也会是一个 resolved Promise。两者的回调函数中都没有参数传递。

rewardedVideoAd.onLoad(() => {
  console.log('激励视频 广告加载成功')
})

rewardedVideoAd.show()
.then(() => console.log('激励视频 广告显示'))

如果拉取失败,通过 RewardedVideoAd.onError() 注册的回调函数会执行,回调函数的参数是一个包含错误信息的对象。常见异常错误参考文档

rewardedVideoAd.onError(err => {
  console.log(err)
})

RewardedVideoAd.show() 返回的 Promise 也会是一个 rejected Promise。

rewardedVideoAd.show()
.catch(err => console.log(err))

拉取失败,重新拉取

如果组件的某次自动拉取失败,那么之后调用的 show() 将会被 reject。此时可以调用 RewardedVideoAd.load() 手动重新拉取广告。

rewardedVideoAd.show()
.catch(() => {
    rewardedVideoAd.load()
    .then(() => rewardedVideoAd.show())
    .catch(err => {
      console.log('激励视频 广告显示失败')
    })
})

如果组件的自动拉取是成功的,那么调用 load() 方法会直接返回一个 resolved Promise,而不会去拉取广告。

rewardedVideoAd.load()
.then(() => rewardedVideoAd.show())

监听用户关闭广告

只有在用户点击激励视频广告组件上的 关闭广告 按钮时,广告才会关闭。这个事件可以通过 RewardedVideoAd.onClose() 监听。

RewardedVideoAd.onClose() 的回调函数会传入一个参数 res,res.isEnded 描述广告被关闭时的状态。

属性 类型 说明
isEnded boolean 视频是否是在用户完整观看的情况下被关闭的,true 表示用户是在视频播放完以后关闭的视频,false 表示用户在视频播放过程中关闭了视频

开发者需要根据 res.isEnded 判断是否视频是否播放结束、可以向用户下发奖励。

rewardedVideoAd.onClose(res => {
    // 用户点击了【关闭广告】按钮
    if (res && res.isEnded) {
      // 正常播放结束,可以下发游戏奖励
    } else {
      // 播放中途退出,不下发游戏奖励
    }
})

注意事项

多次调用 RewardedVideoAd.onLoad()、RewardedVideoAd.onError()、RewardedVideoAd.onClose() 等方法监听广告事件会产生多次事件回调,建议在创建广告后监听一次即可,或者先取消原有的监听事件再重新监听。

Banner 广告

微信小程序广告流量主操作指引:文档地址
开发者可以使用 ad 组件创建 Banner 广告组件,Banner 广告组件在创建后会自动拉取广告数据并显示。

广告尺寸设置

Banner 广告不允许直接设置样式属性,默认宽度为100%(width: 100%),高度会自动等比例计算,因此开发者可以设置广告外层组件的宽度调整广告的尺寸。 广告外层组件的宽度不允许小于300px,当宽度小于300px时,Banner 广告的宽度会强制调整为300px。

/* 外层组件的宽度可设置成100%或具体数值 */
.adContainer {
  width: 100%;
}
<view class="adContainer">
  <ad unit-id="xxxx"></ad>
</view>

广告事件监听

Banner 广告在创建后会自动拉取广告。开发者可以通过 ad 组件的 onloadonerror 事件监听广告拉取成功或失败,可以通过 onclose 事件监听广告被关闭。

<view class="adContainer">
  <ad unit-id="xxxx" bindload="adLoad" binderror="adError" bindclose="adClose"></ad>
</view>
Page({
  adLoad() {
    console.log('Banner 广告加载成功')
  },
  adError(err) {
    console.log('Banner 广告加载失败', err)
  },
  adClose() {
    console.log('Banner 广告关闭')
  }
})

广告定时刷新

开发者可以在创建 Banner 广告时传入 ad-intervals 参数实现广告的定时刷新,ad-intervals 参数为数字类型,单位为秒。注意:自动刷新的间隔不能低于30秒,因此 ad-intervals 的参数值必须大于或等于30。

<view class="adContainer">
  <ad unit-id="xxxx" ad-intervals="30"></ad>
</view>

数据分析接口

开发者通过数据分析接口,可获取到微信小程序的各项数据指标,便于进行数据存储和整理。数据分析详细功能介绍及指标解释参见数据分析文档

相关接口

  • 概况
  • 访问趋势
    • 日趋势
    • 周趋势
    • 月趋势
  • 访问分布
  • 访问留存
    • 日留存
    • 周留存
    • 月留存
  • 访问页面
  • 用户画像
  • 自定义数据上报

视频号活动

从基础库 2.21.0 开始支持

如果微信小程序与视频号的主体相同,或者是关联主体,就可以通过 wx.openChannelsEvent 跳转到视频号发起的活动。

主体判断逻辑

如果微信小程序与视频号的主体相同,那么可以直接调用相关接口。 如果微信小程序与视频号的主体不同,需要同时满足以下 3 个条件才能调用相关接口:

  1. 微信小程序绑定了微信开放平台账号
  2. 微信小程序与微信开放平台账号的关系为同主体或关联主体
  3. 微信开放平台账号的主体与关联主体列表中包含视频号的主体 关联主体申请流程可以参考:https://kf.qq.com/faq/190726e6JFja190726qMJBn6.html

参数获取

finderUserName 表示视频号 ID,要获取视频号 ID,需要登录视频号助手,在首页可以查看自己的视频号 ID。

eventId 是唯一标识某一个活动的 ID,要获取活动的 eventId,需要登录视频号助手,在「内容管理」-「活动管理」模块可以复制自己发起的每个活动对应的 eventId。

视频号直播

若微信小程序与视频号的主体相同或为关联主体,可以跳转到视频号直播间或在微信小程序内发起视频号直播预约。

主体判断

主体信息查询

微信小程序主体信息可通过微信小程序资料页-开发团队进行查询,视频号主体信息可通过视频号首页-认证进行查询。

视频号id需通过视频号助手获取。

主体判断逻辑

若微信小程序与视频号的主体相同,则可以调用相关接口。 若微信小程序与视频号的主体不同,需同时满足以下3个条件则可以调用相关接口:

  1. 微信小程序绑定了微信开放平台账号
  2. 微信小程序与微信开放平台账号的关系为同主体或关联主体
  3. 微信开放平台账号的主体与关联主体列表中包含视频号的主体 关联主体申请流程可以参考:https://kf.qq.com/faq/190726e6JFja190726qMJBn6.html

获取视频号直播信息

开发者可以通过wx.getChannelsLiveInfo接口获取视频号直播id、直播状态、直播主题、视频号头像昵称等直播信息,具体使用方法如下:

从基础库 2.15.0 开始支持

开发者传入视频号id(finderUserName参数),可获取当前或最近一次直播的直播信息,具体如下:

  • status=2,直播中:返回的feedId与nonceId为当前直播id,description为当前直播主题
  • status=3,直播已结束:返回的feedId与nonceId为最近一次直播id,description为最近一次直播主题

从基础库 2.29.0 开始支持

开发者上传视频号id(finderUserName参数)和起止时间(startTime和endTime参数),获取指定时间段内的全部直播信息。其中正在直播或最近一场的直播信息会直接在出参中返回,其余直播信息会在otherInfos中以列表形式返回。

使用方法

微信小程序跳转视频号直播间

从基础库 2.15.0 开始支持

  1. 开发者首先通过wx.getChannelsLiveInfo传入视频号id用于获取视频号直播信息,包括直播id(feedId与nonceId两个参数)与直播状态。

  2. 获取直播信息后,开发者可以通过wx.openChannelsLive打开视频号直播。若当前未在直播,则会跳转到最近一场直播的结束页。该接口使用限制如下:

  • 需要用户触发跳转,若用户未点击微信小程序页面任意位置,则开发者将无法调用此接口。
  • 需要用户确认跳转,在跳转至视频号直播前,将统一增加弹窗,询问是否跳转,用户确认后才可以跳转视频号直播。

微信小程序内嵌视频号直播

从基础库 2.29.0 开始支持

  1. 开发者首先通过wx.getChannelsLiveInfo传入视频号id和起止时间(startTime和endTime参数),用于获取指定时间段的视频号直播信息,包括直播id(feedId)、直播状态和直播回放状态。

  2. 获取直播信息后,开发者可以通过channel-live在微信小程序中展示直播封面,用户点击后可无弹窗直接跳转至视频号直播。不同的直播状态,跳转至视频号的承接页页有所不同,具体如下:

  • 直播未开始:上一场直播的结束页
  • 直播中:直播页面
  • 直播已结束(无回放):直播结束页
  • 直播已结束(有回放):直播回放页

微信小程序内发起预约视频号直播

从基础库 2.19.0 开始支持

  1. 开发者首先通过wx.getChannelsLiveNoticeInfo传入视频号id用于获取视频号直播预告id(noticeId),若当前没有可预约的直播预告,将返回失败。

  2. 获取直播预告信息后,开发者可以通过wx.reserveChannelsLive唤起预约弹窗,用户可以进行预约操作。成功唤起弹窗即为接口调用成功,通过state可以获取用户具体操作行为:

  • state = 1,正在直播中,用户点击“取消”拒绝前往直播
  • state = 2,正在直播中,用户点击“允许”前往直播
  • state = 3,预告已取消
  • state = 4,直播已结束
  • state = 5,用户此前未预约,在弹窗中未预约直播直接收起弹窗
  • state = 6,用户此前未预约,在弹窗中预约了直播
  • state = 7,用户此前已预约,在弹窗中取消了预约
  • state = 8,用户此前已预约,直接收起弹窗
  • state = 9,弹窗唤起前用户直接取消
  • state = 10,直播预约已过期

使用规范

  1. wx.getChannelsLiveInfo与wx.getChannelsLiveNoticeInfo会调用到微信后台系统资源,为了保护系统,开发者请遵守《接口调用频率规范》对接口做适度的频率限制,不能无节制地调用。
  2. 平台将坚决打击诱导跳转视频号直播、诱导预约视频号直播等行为,使用此功能时请严格遵守《微信小程序平台运营规范》

注意事项

  1. 该接口在开发版与体验版中均可调用。开发者在调试过程中,可以在视频号选择可见范围进行开播,方便测试。
  2. 若微信小程序与视频号主体信息不一致,会返回100008错误码。
  3. wx.getChannelsLiveInfo与wx.getChannelsLiveNoticeInfo回调函数不继承用户点击事件,无法在wx.getChannelsLiveInfo的success回调中再调用wx.openChannelsLive。
  4. 开发者工具暂未支持此能力,请先使用真机调试。

微信小程序打开视频号视频

为满足不同开发者的诉求,微信小程序提供2种打开视频号视频的方式:

  1. 跳转打开视频号视频:无主体限制

  2. 内嵌视频号视频:

  • 从基础库版本2.25.1至2.31.1,微信小程序需与视频号视频相同主体或关联主体
  • 从基础库版本2.31.1开始,非个人主体微信小程序可内嵌非同主体/关联主体视频号视频

获取参数

finderUserName

代表视频号ID,获取视频号ID需要登录视频号助手,在首页可以查看自己的视频号ID。

feedId

代表视频号视频的唯一标识,获取视频的feedId需要登录视频号助手,在「动态管理」模块可以复制自己发表的每个视频对应的feedId。

feed-token

从基础库 2.31.1 开始支持

代表非同主体视频号视频的标识,非个人主体微信小程序可以通过channel-video组件,在微信小程序中内嵌非同主体视频号的视频。

获取feed-token步骤如下:

  1. 登陆MP平台,在「设置-基本设置-隐私与安全」找到「获取视频号视频ID权限」,并将开关打开

  2. 移动端找到想要内嵌的视频号视频,并复制该视频的feed-token,图示如下:

使用该能力时,开发者需要注意:

  1. 时间限制:打开开关后24小时内生效,失效后移动端将不展示「在微信小程序中引用该视频」的入口,如要继续获取,则需要再次打开开关;

  2. 生效范围:开关打开状态仅对当前操作者生效。即上述步骤1和步骤2需为同一操作者,若开发者A在MP平台中打开「获取视频号视频ID权限」开关,仅有A能够在移动端能够复制视频号视频的feed-token,同微信小程序的其他开发者移动端不展示「在微信小程序中引用该视频」入口

使用方法

跳转打开视频号视频

从基础库 2.19.2 开始支持

微信小程序可以通过wx.openChannelsActivity接口跳转到指定视频号的视频页观看视频,无主体要求。

内嵌视频号视频

从基础库 2.25.1 开始支持

微信小程序可以通过channel-video组件在微信小程序中内嵌视频号视频,且支持无弹窗跳转打开视频号对应视频,使用该组件时需注意:

  1. 组件调用无资质要求
  2. 暂不支持纯图片视频号内容
  3. 基础库2.31.1之前,仅可引用和微信小程序同主体或关联主体的视频号视频,从基础库2.31.1开始,支持非个人主体微信小程序内嵌非同主体或关联主体的视频号视频

主体判断

主体信息查询

微信小程序主体信息可通过微信小程序资料页-开发团队进行查询,视频号主体信息可通过视频号首页-认证进行查询。

主体判断逻辑

若微信小程序与视频号的主体相同,则可以调用相关接口。 若微信小程序与视频号的主体不同,需同时满足以下3个条件则可以调用相关接口:

  1. 微信小程序绑定了微信开放平台账号
  2. 微信小程序与微信开放平台账号的关系为同主体或关联主体
  3. 微信开放平台账号的主体与关联主体列表中包含视频号的主体 关联主体申请流程可以参考:https://kf.qq.com/faq/190726e6JFja190726qMJBn6.html

视频号主页

从基础库 2.21.2 开始支持

从2023年12月20日起,通过wx.openChannelsUserProfile跳转到视频号主页将不再受主体限制,使用此功能时请注意遵守运营规范。

如果微信小程序与视频号的主体相同或为关联主体,可以通过 wx.openChannelsUserProfile 跳转到视频号主页。

## 主体判断逻辑

如果微信小程序与视频号的主体相同,则可以调用相关接口。 如果微信小程序与视频号的主体不同,需同时满足以下3个条件则可以调用相关接口: 1. 微信小程序绑定了微信开放平台账号 2. 微信小程序与微信开放平台账号的关系为同主体或关联主体 3. 微信开放平台账号的主体与关联主体列表中包含视频号的主体 关联主体申请流程可以参考:https://kf.qq.com/faq/190726e6JFja190726qMJBn6.html

参数获取

finderUserName表示视频号ID,获取视频号ID需要登录视频号助手,在首页可以查看自己的视频号ID。

微信小程序账号迁移

当需要废弃原微信小程序A,用目标微信小程序B承接服务时,微信小程序账号迁移可以高效率、低成本地将微信小程序A的用户迁移至微信小程序B中。完成账号迁移后,微信小程序A等同于注销,不能继续运营或提供相关功能及服务;用户通过任何方式访问微信小程序A时,会自动打开微信小程序B。

注意,微信小程序账号迁移和微信小程序主体变更为两种不同的能力,开发者可根据自己的实际诉求灵活选用这两种能力,具体区别如下:

  • 微信小程序账号迁移:是在两个账号间进行的,微信小程序appid发生改变,主体可能相同也可为绑定在同一开放平台账号下的关联主体,迁移完成后,原微信小程序将会被系统注销,无法恢复或使用;
  • 微信小程序主体变更:是在同一个账号里面进行的,微信小程序appid不变,运营权限、主体信息将发生变化,微信小程序不会被注销

申请流程

开发者可以在MP平台 中的「设置 -> 基本设置 -> 账号信息 -> 原始ID -> 账号迁移」中发起微信小程序账号迁移申请。

准入条件

微信小程序账号为封号状态,海外主体账号,小游戏等暂不支持准入。

迁移限制

  1. 一个目标微信小程序最多能被5个微信小程序迁移,已完成迁移的目标微信小程序,6个月内暂不支持再次发起账号迁移;
  2. 原微信小程序和目标微信小程序主体必须为绑定在同一开放平台账号下的相同主体或关联主体

申请迁移流程

同意“微信小程序账号迁移协议” -> 选择目标微信小程序 -> 当前微信小程序管理员确认 -> 目标微信小程序管理员确认 -> 账号迁移冻结期(7天) -> 账号迁移完成 注意:在账号迁移冻结期内,开发者可撤销账号迁移流程;若未撤销流程,账号迁移一经完成,则不可撤销。

能力表现

用户无感知场景

相关场景值

  1. 扫码相关: 一维码(1025、1032)、二维码(1011、1013)、微信小程序码(1047、1049)、一物一码(1124、1126)

  2. 外跳相关: scheme/URL Link(1065、1194)、openSDK(1069)

C端表现

无迁移提示,直接拉起微信小程序B

用户有感知场景

相关场景值

除用户无感知场景值外的所有场景值

C端表现

  1. 微信小程序A未被添加至「我的微信小程序」 从客户端8.0.32版本开始,用户打开微信小程序A,将直接拉起微信小程序B,并展示迁移半屏提示,用户点击「我知道了」后,后续该用户访问微信小程序A将自动拉起微信小程序B,不再出现提示,且微信小程序A的「最近使用」记录会被删除。
  1. 微信小程序A已被添加至「我的微信小程序」 从客户端8.0.32版本开始,用户打开微信小程序A,将直接拉起微信小程序B,并展示迁移半屏提示,用户点击「我知道了」后,将「我的微信小程序」中的微信小程序A替换为微信小程序B;同时,后续该用户访问微信小程序A将自动拉起微信小程序B,不再出现提示,且微信小程序A的「最近使用」记录会被删除。

低版本客户端

低于8.0.32的客户端版本,不区分用户有感知和用户无感知场景,在任意场景下,用户打开微信小程序A,都将拉起H5页面展示迁移提示,用户点击「前往打开」后,将跳转打开微信小程序B。 若微信小程序A被添加至「我的微信小程序」,则打开微信小程序B后,页面出现Toast提示“已将当前微信小程序替换到「我的微信小程序」”。

调试流程

通过微信小程序账号迁移的方式打开的微信小程序,场景值均为1248。微信小程序发生账号迁移后,平台将默认拉起微信小程序B的首页,开发者若有打开特定页面的诉求,可根据启动参数自行调试。

启动参数继承

微信小程序B可以通过以下2种方式,继承微信小程序A的appid、path、query和scene,对应字段分别为migrateSourceAppIdmigrateSourcePathmigrateSourceQuerymigrateSourceScene

  1. 调用App.onLaunch读取res.query参数
  2. 调用wx.getLaunchOptionsSync读取query参数

除appid、path、query和scene外的其他全部启动参数(extraData等)均会以原有方式继承

其他注意事项

  1. 当用户第一次命中微信小程序迁移时,若网络环境较差,客户端无法拿到迁移信息或微信小程序B无法正常Launch,此时会拉起微信小程序A。若业务有较大调整,建议开发者在微信小程序A中做好兼容逻辑;
  2. 微信小程序账号迁移仅针对正式版微信小程序生效,对于体验版和开发版不生效;
  3. 暂不支持将原微信小程序的管理员、项目成员和体验成员自动迁移至目标微信小程序,如有需要,开发者需自行添加。

NFC 标签打开微信小程序

安卓微信客户端 8.0.14 开始支持,iOS 现网版本均已覆盖。

基于微信小程序 URL Scheme,在现有短信、邮件、网页等场景外,微信还支持通过 NFC 卡片快捷拉起微信小程序页面的能力。可用于智能设备的快速配网、快捷控制等场景。

该能力不受 URL Scheme 30 天有效期限制,且允许多个用户访问。

NFC 标签格式

要实现直接打开微信小程序,NFC 标签需要按照以下格式写入:

NFC 标签必须是 NFC Data Exchange Format (NDEF) 类型,标签中需要包含两条 Record :

  • URI Record
    • Type Name Format (TNF): 0x01 (Well-Known)
    • Type: U
    • Payload: 微信小程序 URL Scheme
  • Android Application Record, AAR
    • Type Name Format (TNF): 0x04 (NFC Forum external type)
    • Type: android.com:pkg
    • Payload: 微信安卓包名 com.tencent.mm

短信打开微信小程序

开发者可通过以下3种方式实现短信打开微信小程序:

通过URL Scheme实现

通过服务端接口或在微信小程序管理后台生成URL Scheme后,自行开发中转H5页面。

将带有中转H5链接的短信内容通过开发者自有的短信发送能力或服务商的短信服务进行投放,实现短信打开微信小程序。

通过URL Link实现

通过服务端接口生成URL Link。

直接将带有URL Link的短信内容通过开发者自有的短信发送能力或服务商的短信服务进行投放,实现短信打开微信小程序。

通过云开发静态网站实现

可以参考「云开发」-「静态网站」-「短信跳微信小程序」。