codecamp
QQ小程序 社交能力

社交分享

为满足开发者对社交传播的诉求,我们提供了分享小程序到QQ好友、QQ群聊和QQ空间的能力。

同时,为了进一步提升分享效率,平台也提供了特定场景下快速分享的能力。

分享面板&最近联系人列表 快速分享能力 设置多种分享消息模板

1. 分享面板&最近联系人列表

在分享面板中,可以分享给QQ好友、QQ空间,同时会显示用户的最近联系人列表,方便用户快速传播。

有以下两种调用方式:

  • qq.showShareMenu
  • 小程序/小游戏内调用分享组件

1.2 小程序/小游戏内调用分享组件

1.2.1 小程序

通过设置button组件的share属性,可以在小程序内调用上述分享面板,且开发者可以自由组合分享渠道,进一步提升分享效率。

分享面板内显示内容设置,具体见button文档。

1.2.2 小游戏

可以通过qq.shareAppMessage,调用分享面板。

2. 快速分享能力

2.1 快速分享面板

在多人参与的场景中,有时用户不满足于仅分享到单个QQ会话。在当前能力下,用户操作路径较长,点击分享到QQ--选择好友--发送--返回再点击按钮。

QQ提供了一次调用、多次发送的快速分享面板,可大大降低用户操作成本,助力优秀内容的快速传播。

快速分享能力

2.1.1 小程序

button组件的 share-mode 需要设置元素值'recentContacts'(>=基础库1.15.0)

2.1.2 小游戏

qq.shareAppMessage,设置shareAppType=qqFastShareList

2.2 直接分享到原会话

当用户从某会话中打开小程序,我们预期用户有一定可能性会把小程序分享回原聊天会话。

平台提供了直接分享到原会话能力,帮助开发者减轻用户分享心理门槛。

直接分享到原会话

2.2.1 生效场景

群加号面板-一起玩-某个小程序/小游戏 群右上角-群友爱玩-某个小程序/小游戏 分享到群内的小程序消息(>=QQ版本8.2.0) 2.2.2 小程序

button组件的 share-mode 需要设置元素值'quickToDialog'(>=基础库1.15.0)

2.2.3 小游戏

qq.shareAppMessage,设置shareAppType=qqFastShare

3. 一键发空间说说

1.从外部App分享

已有App的开发者可以通过接入QQ互联SDK,让用户可以将App分享文字、图片、视频、网页、小程序等内容分享给QQ好友、QQ群聊和QQ空间,开发者仅需在QQ互联中将已有的App和小程序关联后即可实现。 互联sdk小程序分享文档:IOS、Android

TIP

在下列场景接收小程序类型分享,将按照开发者设定的分享参数转成网页类型分享:

  • Mobile QQ ≥ 8.1.0
    - PC QQ
    - macOS QQ
    - iPad
    - AndroidPad

2.通过二维码打开

为满足开发者通过二维码扫描打开指定小程序,并且跳转到指定页面的诉求,我们提供了 url 跳转小程序的能力,开发者按照下述规则生成 url ,再生成 url 对应的二维码即可使用。

url规则: https://m.q.qq.com/a/p/{APPID}

参数

属性 类型 默认值 必填 说明
s string 需要跳转到的指定页面路径,如果需要传入参数,可以拼在路径之后,此参数需要进行url encode

示例: https://m.q.qq.com/a/p/1108291530?s=pages%2Fgame-list%2Fgame-list%3Fmode%3Dwanba

warning 注意

  1. s参数必须进行encode
  2. QQ低版本的场景会展示为默认页,不需要额外做兼容逻辑
  3. url 生效版本如下:
    • Android QQ Version ≥ 8.05
    • iOS QQ Version ≥ 8.03

3. 外部APP打开小程序

已有App的开发者可以通过接入QQ互联SDK,在相同主体前提下,通过APP打开QQ小程序。

互联SDK下载地址:Android、iOS

消息触达

基于QQ的通知渠道,我们为开发者提供了可以高效触达用户的消息能力,以便实现服务的闭环并提供更佳的体验。

为满足不同场景下的消息触达,平台提供了两种下发消息的能力,模板消息 & 订阅消息。

模板消息:无需用户感知,即可获取消息下发权限。下发权限有时限,适合需要对用户行为进行及时反馈的场景。

订阅消息:需用户主动订阅后,才可获取消息下发权限。下发权限长期有效,适合中长期运营。

推送位置:QQ主界面下拉-右上角信封-小程序通知。(如果存在订阅消息/模板消息的未读通知,游戏icon和信封会有红点显示)

模板消息

使用简介

  • 功能简介:QQ每日推送符合条件的用户信息(7天内登陆过游戏且没收到过服务消息的用户),小游戏/小程序开发商可针对这部分用户推送消息卡片,卡片模板由平台提供,开发商只需更换icon及文案。
  • 价值:可推送小游戏/小程序内最新活动/版本信息/回流活动等,有效触达用户,获取更多小程序、小游戏曝光。
  • 模板消息下发条件:当用户有使用QQ小程序/小游戏时,平台后台将会为当前用户在当前小程序生成一个下发消息的凭证,即formid,并通过开发者提供的回调地址,将formid返回给开发者。同个appid下,单个用户7天内最多触发1个formid,即,同个appid 7天内,给1个用户最多下发1条消息。
  • 数据统计:可通过场景值 = 1014,计算订阅消息来源用户数据。

使用说明

步骤一:从开发者管理端,获取模板 ID

步骤二:页面的 form 组件,属性 report-submit 为 true 时,可以声明为需要发送模板消息,此时点击按钮提交表单可以获取 formId,用于发送模板消息。或者当用户完成 支付行为,可以获取 prepay_id 用于发送模板消息。

步骤三:调用接口下发模板消息

小程序

详见 sendTemplateMessage

小游戏

在小游戏里,由于没有类似小程序的表单组件,因此采用一套新方案来实现类似模板消息能力。

  1. 在开发者管理端,配置回调地址(填写的URL需要正确响应QQ发送的Token验证,填写说明请阅读 消息推送服务器配置指南)

  1. 当有用户使用QQ小游戏时,小游戏服务后台可接收1次QQ服务器通知的formid。同个appid下,单个用户7天内最多触发1个formid。

  1. 通过formid,调用sendTemplateMessage验证模板消息可以成功下发后,再进行全量推广。

下发条件说明

  1. 支付 当用户在小程序内完成过支付行为,可允许开发者向用户在7天内推送有限条数的模板消息(1次支付可下发1条,多次支付下发条数独立,互相不影响)
  2. 提交表单 当用户在小程序内发生过提交表单行为且该表单声明为要发模板消息的,开发者需要向用户提供服务时,可允许开发者向用户在7天内推送有限条数的模板消息(1次提交表单可下发1条,多次提交下发条数独立,相互不影响)

审核说明

  1. 标题 标题不能存在相同 标题意思不能存在过度相似 标题必须以“提醒”或“通知”结尾 标题不能带特殊符号、个性化字词等没有行业通用性的内容 标题必须能体现具体服务场景 标题不能涉及营销相关内容,包括不限于:消费优惠类、购物返利类、商品更新类、优惠券类、代金券类、红包类、会员卡类、积分类、活动类等营销倾向通知
  2. 关键词 同一标题下,关键词不能存在相同 同一标题下,关键词不能存在过度相似 关键词不能带特殊符号、个性化字词等没有行业通用性的内容 关键词内容示例必须与关键词对应匹配 关键词不能太过宽泛,需要具有限制性,例如:“内容”这个就太宽泛,不能审核通过
  3. 违规说明 除不能违反运营规范外,还不能违反以下规则,包括但不限于: 不允许恶意诱导用户进行触发操作,以达到可向用户下发模板目的 不允许恶意骚扰,下发对用户造成骚扰的模板 不允许恶意营销,下发营销目的模板
  4. 处罚说明 根据违规情况给予相应梯度的处罚,一般处罚规则如下: 第一次违规,删除违规模板以示警告, 第二次违规,封禁接口7天, 第三次违规,封禁接口30天, 第四次违规,永久封禁接口 处罚结果及原因以站内信形式告知

温馨提示

  1. 用户分层 我们建议小程序/小游戏在发送通知时进行用户分层,针对不同的用户群体推送不同内容的信息,如对流失用户推出回流礼包,对新注册用户推出新手礼包,对老用户进行版本和活动通知等。
  2. 推送内容建议 为优化用户体验,推送文案可以设计得诙谐有趣。

优秀案例——《欢乐水杯》

  1. 推送策略 (1)体力召回 推送时间:用户体力满时 面向用户:新用户 (2)版本更新、福利发放等 推送时间:晚上6点(经测试,该时间推送效果最好) 面向用户:新用户

  1. 推送时间 游戏测试了早上9点、中午12点、晚上6点三个推送时间段,发现晚上6点推送效果最好。

  1. 数据表现 游戏将新用户分为两组:一组在用户登录当天发送模板消息,另一组不发送。经试验,接收到模板消息的新用户比未接收到的新用户次留高2%。

  1. 文案示例 (1)内容更新:水杯更新猫猫皮肤啦!多款萌猫水杯等你来撸! (2)玩法提示:只要墨水够,画线可以分开画噢! (3)福利预告: 猫咪老师杯会在第143关出现噢! (4)关卡预告:第173关有不用提示就过关的高手吗?

订阅消息

功能介绍

  1. 功能简介:开发者在小游戏/小程序内向用户发起订阅小游戏/小程序消息的授权弹窗,用户点击“允许”后,小游戏/小程序开发者每天可以给用户发送一条订阅消息。
  2. 价值:与模板消息不同,订阅消息一旦开通长期有效。开发商可以通过该能力实现老用户召回、活动通知等能力,进行长线的用户关系维护,从而提高用户活跃和留存。
  3. 订阅消息下发条件:用户自主订阅。订阅后,一位用户1天内最多收到1次订阅消息。
  4. 数据统计:可通过场景值 = 2085,计算订阅消息来源用户数据。 (备注:授权文案不可修改,授权时机可自行决定)

使用说明

步骤一:获取模板 ID

在开发者管理端,手动配置获取模板 ID:

步骤二:引导用户授权下发订阅消息

向用户发起主动订阅小程序授权请求。调用后会立刻弹窗询问用户是否同意主动订阅小程序。

如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。(授权体系详见相关文档)

  1. 小程序端授权接口
  2. 小游戏端授权接口

步骤三:调用消息下发接口

  1. 小程序端消息订阅接口
  2. 小游戏端消息订阅接口

审核说明

  1. 标题 标题意思不能存在过度相似 标题不能带特殊符号、个性化字词等没有行业通用性的内容 标题必须能体现具体服务场景 标题不能涉及营销相关内容,包括不限于:消费优惠类、购物返利类、商品更新类、优惠券类、代金券类、红包类、会员卡类、积分类、活动类等营销倾向通知
  2. 关键词 同一标题下,关键词不能存在相同 同一标题下,关键词不能存在过度相似 关键词不能带特殊符号、个性化字词等没有行业通用性的内容 关键词内容示例必须与关键词对应匹配 关键词不能太过宽泛,需要具有限制性,例如:“内容”这个就太宽泛,不能审核通过
  3. 违规说明 除不能违反运营规范外,还不能违反以下规则,包括但不限于: 不允许恶意诱导用户进行触发操作,以达到可向用户下发模板目的 不允许恶意骚扰,下发对用户造成骚扰的模板 不允许恶意营销,下发营销目的模板
  4. 处罚说明 根据违规情况给予相应梯度的处罚,一般处罚规则如下: 第一次违规,删除违规模板以示警告, 第二次违规,封禁接口7天, 第三次违规,封禁接口30天, 第四次违规,永久封禁接口 处罚结果及原因以站内信形式告知

温馨提示

  1. 用户主动订阅路径 第一次进入小游戏/小程序时若选择“暂不接受”订阅消息,后续仍可通过“浮点-关于-设置-小程序订阅消息“开启该功能。
  2. 增加“订阅”图标 为了提升该能力的利用率,开发商可以在小游戏/小程序界面中添加”订阅“的图标,并且为订阅的用户提供一定的小游戏/小程序奖励,激励用户主动添加该功能。(下图为《一起打桌球》游戏界面)
  3. 用户分层 我们建议小游戏/小程序在发送通知时进行用户分层,针对不同的用户群体推送不同内容的信息,如对流失用户推出回流礼包,对新注册用户推出新手礼包,对老用户进行版本和活动通知等。
  4. 推送内容建议 为提升用户体验,推送文案可以设计得诙谐有趣。
QQ小程序 接入流程
QQ小程序 私域流量运营
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

QQ小程序 开发

硬件能力

QQ小程序 云开发

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }