- 微信小程序音视频通话(for 硬件) 使用手册
微信小程序音视频通话(for 硬件) 使用手册 1 产品介绍 1.1 基础介绍 借助微信小程序音视频通话(for 硬件)组件,开发者可以实现智能设备和手机微信端的一对一音视频通话,满足实时触达场景,提升通话体验。 下图为手机端示意图,授权弹窗、通话提醒、通话界面为微信提供的统一界面,硬件小程序接入微信VoIP通话插件后,可实现上述功能。 [图片] 1.2 适用场景 微信小程序音视频通话(for 硬件)组件,适用于校园话机、门禁机、智能门锁、智慧中控屏、智能电视、智能摄像头、智能音箱、智慧养老等多种设备和场景,支持硬件设备和手机端双向通话,实现通话强提醒。 [视频] 2 接入门槛 2.1 硬件要求 硬件不需要改造,需具备音频或者视频能力 ● 安卓平台 (向下兼容技术研发中) 系统版本7.1 及以上 四核 2GHz CPU 内存 2GB RAM + 8GB ROM ●Linux平台 (后续将持续更新) C++:提供 libstdc++.so.6,且支持 C++14 音频输入:必须支持 PCM,可选支持 OPUS、G711、G729 音频输出:PCM 视频输入(如有摄像头):H.264 编码的视频流 如果设备采用 EMMC,需确保 RPMB 分区未被使用 2.2 软件要求 - 小程序主体已认证; - 小程序主体公司营业执照经营范围包括硬件设备销售等; - 小程序具备“工具-设备管理”类目,并开通设备管理功能; 3 如何接入 3.1 接入前准备工作 注:安卓设备与linux设备在账号接入准备和开发接入上有所不同,参考下图: [图片]以下3.1.2、3.1.3、3.1.4 注册工作可并行,该部分涉及审核工作,请提前准备,此部分预计耗时2~5个工作日 3.1.1 设备 需有1台满足接入条件的设备(确认设备的RPMB 分区没有被使用过,具有音视频能力) 3.1.2 微信开放平台(Linux设备不需进行这一步) 需有企业主体的微信开放平台帐号并成功绑定一款移动应用(手机端的App,未上架也可,提交审核时需要注意企业官网要有该App介绍),已有移动应用也可以直接用,注意需要获取 host appid 微信开放平台 (1) 注册开放平台账号 [图片] (2) 添加移动应用 [图片] (3) 获取移动应用id(移动应用id即hostAppid) [图片] 3.1.3 微信终端合作平台(Linux设备不需进行这一步) 需有一个企业主体的wecooper平台帐号 微信终端合作平台,并按照小程序硬件框架流程指引绑定3.1.2和3.1.4的账号,并注册设备、登记型号、获得公钥等; (1) 微信终端合作平台账号注册 [图片] [图片] (2) 绑定开放平台的移动应用和小程序(图二中appid应填写hostAppid,即开放平台移动应用id,其获取见上方3.1.2.(3) ) [图片] [图片] [图片] (3) 登记硬件设备信息 a).添加设备类型 [图片] [图片] b).添加设备机型 [图片] [图片] c).设置公钥 [图片] [图片] (4) 硬件注册 通过【微信终端合作平台】-【申请注册设备】提审获取注册设备接口权限,请确认已完成登记设备信息再注册,否则审核可能不通过。 [图片] 3.1.4微信小程序 需有企业主体的微信小程序帐号微信公众平台 ,并在小程序管理后台添加“工具-设备管理”类目、左侧“硬件设备-设备管理”添加你需要接入的设备并提交审核(注意需要获取model_id),申请设备的小程序音视频能力,能力申请无需审核(插件自动通过);开发完成后,你需要验证设备能力,包括提交设备体验视频、以及邮寄设备给微信团队进行审核,审核通过后能力可正式发布。 (1) 注册小程序账号(若已有小程序,可忽略这步) [图片] (2) 调用接口获取小程序的access_token [图片] [图片] (3) 添加类目和设备 在小程序管理后台【设置】添加【工具-设备管理】类目 [图片] [图片] 在小程序管理后台【功能】-【硬件设备】-【设备管理】添加设备并提审,获取model_id [图片] (4) 申请和验证设备能力-小程序音视频能力 申请设备能力 在小程序管理后台【功能】-【硬件设备】-【设备管理】选择对应设备,点击申请设备能力,设备能力选择小程序音视频能力,填写具体的申请理由,提交申请。 [图片] [图片] 验证设备能力 设备的小程序音视频能力申请通过后,点击验证能力 [图片] 验证能力分为四步:下载配置SDK、下载硬件框架、视频验证、寄送设备验证 [图片] 注:视频验证和寄送设备验证审核要求见硬件VoIP审核验证要求 1)下载配置SDK(根据不同设备所属平台选择不同SDK) [图片] [图片] 2)下载硬件框架(Linux设备不需这一步) [图片] [图片] 3)视频验证 [图片] [图片] 4)寄送设备验证 [图片] 填写寄送信息 [图片] 寄送信息验证中 [图片] [图片] 寄送信息验证成功 [图片] (5)购买小程序音视频通话License套餐 开通小程序音视频能力后可获得10个7天有效期的体验license(所有设备类型通用)。体验license使用完,需要采购小程序音视频通话-设备license套餐。你可以在小程序管理后台——左侧付费管理——硬件能力——小程序音视频通话(设备license套餐)中进行购买。设备license套餐分为A、B、C、D、E五种类型,对应不同设备混用,采购时需注意选择适合小程序设备的license套餐。 [图片] [图片] [图片] [图片] 3.2 开发流程 接入微信硬件VoIP,你需要在硬件端、小程序端进行开发运行同一款微信小程序。微信将提供统一的SDK(插件),你的小程序需开通并调用该插件。此部分预计耗时5~10个工作日,具体接入流程请参考小程序音视频通话(for 硬件)|微信开放文档 其中安卓端硬件开发文档参考:开发安卓设备端应用 linux端硬件开发文档参考:小程序音视频通话SDK(linux) 4 常见问题及反馈渠道 其他开发相关的功能介绍和常见问题请参考小程序音视频通话(for 硬件)|微信开放文档 4.1 接入VOIP 通话插件时,应选择哪种业务类型 (businessType)? 所有设备均可使用「手机微信拨打硬件设备」或「硬件设备拨打手机微信」。如针对校园场景的官方刷脸能力有特殊需求,可选择「校园场景支付刷脸模式」。 4.2 手机端通话结束后,结束页面有个『关闭』按钮,是否可以直接关闭小程序? 暂不支持,所有小程序的关闭都是需要点击右上角的「胶囊」关闭。但可以设置点击关闭按钮后跳转去小程序的其他页面。参考插件文档「4.2 自定义通话结束跳转页」 4.3 点击右上角胶囊有「退出设备登录」和「关闭小程序」的选项,可以去掉吗? 可以隐藏。向行业经理提交需求,待平台开权限后,安卓应用去调用 WMPF initGlobalConfig 接口,传closeButtonActionType: 10即可实现。设置完打开小程序,预期点击胶囊按钮的关闭,会弹出“不支持关闭小程序”。 以下补充几点说明: 1)开通权限是给开发者配置是否可以禁用关闭小程序的能力,开通后还需要调用WMPF initGlobalConfig 接口,传closeButtonActionType: 10来实现禁用,框架不会自动禁用。 2)禁用会影响wmpf启动的所有小程序的所有页面。如有需要,禁用后,也可以通过传0来取消,实现根据业务场景动态控制。 3)禁用的表现是用户点击胶囊右侧时,不会弹出关闭小程序的菜单,并弹框提示用户当前不允许关闭。禁用后胶囊按钮不会被隐藏。 4)开通权限请在社群填写问卷申请,会有专人处理。 [图片] 4.4 怎么找到音视频套餐包付费入口? 在小程序管理后台【功能】-【硬件设备】-【设备管理】选择对应设备,点击申请设备能力,设备能力选择【小程序音视频能力】,填写具体的申请理由,提交申请。申请会自动通过。点击验证能力,到达界面【验证小程序音视频能力】,点击【我的用量】。 [图片] [图片] [图片] 4.5 设备的唯一性是怎么规定的?硬件开发者应该怎样配合? 我们要求硬件的emmc存储分区写入唯一key,且写入后不可更改,以保证设备的唯一性,从而保障通话安全。这样会要求:硬件开发者传给微信的设备sn不可变化,且硬件端运行的小程序只能为一个,不可更改。 如果遇到设备需要维修/售后的情况,强烈建议开发者不要随意更改设备sn,否则会影响用户通话权限。 4.6 小程序音视频通话License套餐的发票如何开具? 开发者可登录小程序管理后台,通过左侧“设备管理”进入,点击音视频通话能力的设备“查看用量”-“发票”,按每月已消耗的套餐去申请开票。 其他未涉及问题,可通过硬件服务社区向我们反馈。 VoIP在技术接入、查看用量和支付过程中遇到报错,应该怎么办? 可以多试几次。如依然出现相关问题,可以留言以下信息供我们定位: - 问题描述: - 小程序appid: - 小程序名称: - 小程序主体: - 报错时间: - 报错界面截图:
2023-12-18 - 使用input组件的adjust-position(键盘弹起时,是否自动上推页面)出现问题如何解决?
在聊天室的场景的下和用户进行聊天, 有以下的场景: adjust-position 的属性为true 1、在聊天历史列表比较长,点击底部fixed 定位的输入框弹起手机键盘的时候,输入框上面的内容会自动向上推(涂黑部分是订单的卡片,也是聊天的历史)这个体验是可以接受的。 图一: [图片] 2、在聊天历史列表比较短的时候,点击键盘也会把内容会自动向上推 ,效果如下: 点击输入框之前: [图片] 点击输入框之后: [图片] 想到的解决方案: 能不能使用input组件的bindkeyboardheightchange(监听键盘高度变化)或者 bindfocus(聚焦)+bindblur(失去焦点) 获取键盘的高度来动态改变 adjust-position 属性的值来解决问题 过程: 这里 adjust-position 默认值分别设置两种情况: 一、.adjust-position: true 键盘弹起时,自动上推页面 1. 浏览历史长的时候不做处理,键盘唤起的时候,页面应该自动上推,体验正常 2.浏览历史比较短的时候,唤起键盘的时候, 这个需要计算浏览历史列表的安全距离 根据这个安全距离才能设置adjust-position 的开启,浏览历史的长度会有一个临界值 判断这个临界值,如果浏览历史的长度,小于临界值,则设置 adjust-position: false,唤起键盘不会向上推动页面 先测试只有一个聊天内容时候,第一次唤起键盘是如下的效果: [图片] 为什么还是会把页面的聊天内容挤上去,由于唤起键盘的时候,adjust-position 还是true 唤起键盘之后才能拿到键盘的高度,才能判断是否设置adjust-position为false. 点击第二次就正常了,由于点击第一次已经将adjust-position 设置为false,如图: [图片] 二、.adjust-position: false 键盘弹起时,不自动上推页面 1、聊天历史列表数据短的时候,就不测试了,效果和上图一样是正常的, 2、在聊天历史列表长的时候,在点击唤起键盘的时候,效果如下: [图片] 由于默认是 不自动上推页面 ,弹起键盘获取键盘高度的时候,adjust-position的值还是false 再点击第二次唤起键盘的时候,才能显示正常,如上面图一的截图。 造成这样原因归根到底是 在唤起键盘的时候,adjust-position的属性改变的操作是在 拿到键盘高度之后,键盘高度拿到之前界面就已经 被自动上推或者没有被推上去 第二次唤起键盘才能正常显示,不知道这种场景下如何解决,比如提早获取键盘的高度 计算出安全的聊天历史长度。希望各位大佬指导下。
2020-12-14