tencent cloud

腾讯云超级应用服务

动态与公告
【2025年1月2日】关于腾讯云小程序平台更名为腾讯云超级应用服务的公告
控制台更新动态
Android SDK 更新动态
iOS SDK 更新动态
Flutter 更新动态
IDE 更新动态
基础库更新动态
产品简介
产品概述
产品优势
应用场景
购买指南
计费概述
按量计费(后付费)
续费指引
停服说明
快速入门
套餐管理
概述
控制台账号管理
存储配置
加速配置
品牌化配置
平台功能
控制台登录
用户和权限体系
小程序管理
小游戏管理
应用管理
商业化
平台管理
用户管理
团队管理
运营管理
安全中心
代码接入指引
Demo 及 SDK 获取
Android
iOS
Flutter
App 服务端接入指南
GUID 生成规则
小程序开发指南
小程序介绍与开发环境
小程序代码组成
指南
框架
组件
API
服务端
JS SDK
基础库
IDE 使用指南
小游戏开发指南
指南
API
服务端
实践教程
小程序登录实践教程
小程序订阅消息实践教程
支付相关实践教程
广告接入实践教程
小游戏订阅消息实践教程
相关协议
数据处理和安全协议

自定义小程序 API

PDF
聚焦模式
字号
最后更新时间: 2026-01-29 00:08:49
如果在小程序中需要调用某些宿主应用提供的能力,在小程序 SDK 未实现或无法实现时,开发者可以通过注册扩展(自定义) API 来实现相关能力,使得小程序能够调用宿主应用中提供的自定义 API 能力。
定义自定义的小程序 API 并关联 API 处理程序。apiName:自定义 API 的名称,小程序可通过调用 wx.invokeNativePlugin()使用此 API。
apiHandler: 处理此 API 调用的函数。
void registerMiniAppApi(String apiName, TcmppMiniAppApiHandler apiHandler)
示例代码:
final _tcmppFlutterPlugin = TcmppFlutter();

...

@override
void initState() {
super.initState();

...

/// 必须在小程序启动前注册
_tcmppFlutterPlugin.registerMiniAppApi("myApiName",myApiHandler);
}
小程序会通过 wx.invokeNativePlugin 的方式传入 api_name 去调用 Flutter 注册的 myApiName。
小程序代码的调用示例:
example code:
/// Mini Program Call
var opts = {
api_name: 'myApiName',
success: function(res) {
log(res);
},
fail: function(res) {
log(res);
},
complete: function(res) {
log(res);
},
data: {
name : 'kka',
age : 22
}
}
wx.invokeNativePlugin(opts);
在 Flutter 侧实现 myApiHandler 函数:
/// 客户端 API
Future<Map<String, dynamic>?> myApiHandler(MiniApiCall call) async {
print("API : ${call.apiName}");
print("AppInfo: ${call.appInfo}");
print("WebView ID: ${call.webViewId}");
print("params: ${call.params}");
return {"result": "success","method":"myApiHandler"};
}
MiniApiCall
params 参数变动说明
注意:
2.2.16 版本及其之前
Android 与 iOS 端回调参数不统一。
Android 端 params 内容示例:
{param1: test, param2: 189}
iOS 端 params 内容示例:
{stateEvent: requestCustomApi, api_name: customApi, data: {param1: test, param2: 189}, webviewId: 4}

2.2.17 版本及其之后
对 Android 与 iOS 端返回的 params 参数格式进行统一,均为以下格式。
{stateEvent: requestCustomApi, api_name: customApi, data: {param1: test, param2: 189}, webviewId: 4}
class MiniApiCall {
/// 小程序信息
AppInfo? appInfo;
/// 当前自定义 Api 名称
String apiName;
/// 所在 WebView 页面 id
int webViewId;
/// 请求参数信息,示例:{stateEvent: requestCustomApi, api_name: customApi, data: {param1: test, param2: 189}, webviewId: 4}
Map<String, dynamic>? params;
}

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈