此文档中的功能为uni-app专用,用于宿主App和小程序发送和接收事件。
宿主App向小程序发送事件
API
@protocol EMASMiniAppService <NSObject>
/**
* 向小程序发送事件,仅用于uni-app
* @param event 事件名称
* @param appId 小程序id
* @param data 数据:NSString 或 NSDictionary 类型
*/
-(void)sendEvent:(NSString *)event appId:(NSString *)appId data:(id __nullable)data;示例如下:
id<EMASMiniAppService> service = [[EMASServiceManager sharedInstance] serviceForProtocol:@"EMASMiniService"];
if (service && miniAppId.length > 0) {
[service sendEvent:@"NativeEvent" appId:miniAppId data:@{@"msg":@"native message"}];
}
小程序接收宿主App发送事件
uni.onNativeEventReceive((event,data)=>{
console.log('接收到宿主App消息:' + event + data);
this.nativeMsg = '接收到宿主App消息 event:' + event + " data: " + data;
})
参数说明
属性 | 类型 | 说明 |
event | String | 事件名称 |
data | String或JsonObject | 宿主传递的数据 |
小程序向宿主App发送事件
向宿主App发送事件
uni.sendNativeEvent(event,callback)参数说明:
属性 | 类型 | 说明 |
event | String | 事件名称 |
data | String / JsonObject | 事件携带参数 |
callback | Function | 宿主App回调方法。参数类型:String或JsonObject,取决于宿主的实现。 |
示例如下:
// 向宿主App发送事件
uni.sendNativeEvent('unimp-event', {
msg: 'unimp message!!!'
}, ret => {
this.nativeMsg = '宿主App回传的数据:' + ret;
})
宿主接收小程序发送的事件
当接收到小程序发送的事件会触发EMASMiniAppService的block回调时,需宿主App通过setEventReceiveBlock设置block。
@protocol EMASMiniAppService <NSObject>
/** 小程序向原生发送事件回调方法,仅用于UniApp
* @param EMASUniAppReceiveEventBlock 设置事件回调block,block中具体参数如下
* @param event 事件名称
* @param appid 对应小程序的appid
* @param data 数据:NSString 或 NSDictionary 类型
* @param callback 回调数据给小程序
*/
-(void)setEventReceiveBlock:(EMASUniAppReceiveEventBlock)receiveBlock;
EMASUniAppKeepAliveCallback说明
/**
* 回调数据给小程序
* result:回调参数支持 NSString 或 NSDictionary 类型
* keepAlive:如果 keepAlive 为 YES,则可以多次回调数据给小程序,反之触发一次后回调方法即被移除
*/
typedef void (^EMASUniAppKeepAliveCallback)(id result, BOOL keepAlive);
EMASUniAppReceiveEventBlock说明
/** EMASUniAppReceiveEventBlock 设置小程序向原生发送事件回调block,仅用于UniApp
* @param event 事件名称
* @param appid 对应小程序的appid
* @param data 数据:NSString 或 NSDictionary 类型
* @param callback 回调数据给小程序
*/
typedef void(^EMASUniAppReceiveEventBlock)(NSString *event, NSString *appId, id __nullable data, EMASUniAppKeepAliveCallback callback);示例如下:
id<EMASMiniAppService> service = [[EMASServiceManager sharedInstance] serviceForProtocol:@"EMASMiniService"];
// 接收小程序发送的事件方法
[service setEventReceiveBlock:^(NSString *event, NSString *appId, id _Nullable data, EMASUniAppKeepAliveCallback callback) {
NSLog(@"Receive UniMP event: %@ data: %@, appId: %@",event, data, appId);
// 回传数据给小程序
// EMASUniAppKeepAliveCallback 用法请查看定义说明
if (callback) {
callback(@"native callback message",NO);
}
}];