常见问题 Q&A
Q1 从哪个版本开始可以通过客户端描述表扩展百度私有能力,而不通过 extension 包内扩展?
答:在百度智能小程序 SDK 2.26.0 版本上及之后版本,宿主可将百度私有能力通过描述表的形式写入客户端,即可使用该能力;宿主扩展包内不用再维护。
Q2 扩展能力在 extension 中生效,升级成客户端描述表则不生效,为什么?
答:可从以下几个角度进行排查:
1、获取描述表是否成功?
在 inspect 控制台,调用 _naSwan.getAPIs() 获取描述表,若不为空则表示获取成功。然后检查新增能力的描述表是否包含在内。
2、描述表的 name 字段是否正确?
举例:描述表 name 为 “abc.testAPI”,但是宿主协议名称是 “bdabc”,那么框架侧校验不匹配,该能力无法成功挂载。具体参见规范-API命名空间需与宿主协议名保持一致。
3、在不同客户端环境下,描述表的 invoke 字段应该如何填写?
请参考 invoke 调起规范。
4、能力调用方式是否正确?
参见 Q3 通过客户端描述表扩展的 API,如何调用。
Q3 通过客户端描述表扩展的 API,如何调用?
答:部分宿主原来通过 extension 扩展的方法,为前端实现逻辑,或者复杂API逻辑,能力调用方式不唯一。
举例,原来通过 extension 扩展的能力调用方式可能如下:
1 | // extension.js |
但是修改为描述表之后,发现原来的调用方式无法调起能力。是因为维护在客户端描述表的能力,有统一的能力调用方式。如上述的能力调用方式会变成:
1 | // description 同步能力 |
或者
1 | // description 异步能力 |
Q4 boxjs 上的能力在小程序内能否调用?
答:boxjs 上的所有能力,为框架内部(包括 extension)使用,小程序开发者无法使用。