# registerEvent
当小程序中调用 wmpf.Channel.registerEvent
时,会通知到 Client 端。当小程序注册的事件触发时,客户端需要向小程序发送对应事件,小程序可以通过 wmpf.Channel.on
监听。
# 传入参数
通过 ContentValues 传递
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
__event_id__ | String | 是 | 调用 id ,作为后续通知回调的凭据 |
event | String | 是 | 事件名 |
# 回调参数
通过 insert 操作通知及 ContentValues 传递
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
__event_id__ | String | 是 | 调用 id ,作为通知回调的凭据 |
event | String | 是 | 事件名 |
data | String | 否 | 第三方 app 经 wmpf 透传到小程序的数据 |
# 示例代码
override fun insert(p0: Uri, p1: ContentValues?): Uri? {
when(sURIMatcher.match(p0)) {
// 回调事件注册
CODE_NOTIFY_INVOKE_CHANNEL_EVENT -> {
val eventId = p1?.getAsString(InvokeChannelConstants.Key.EVENT_ID)
val event = p1?.getAsString(InvokeChannelConstants.Key.EVENT)
Log.i(TAG, "register, eventId: $eventId, event: $event")
mEventIdList.put(eventId, event)
}
}
return null
}
// 在特定时机通知某个已经注册的 event ,并传入相关 data 到小程序端
private fun notifyEvent(counter: Int, eventId: String?, event: String?) {
if (!mEventIdList.containsKey(eventId)) {
return
}
val cv = ContentValues()
cv.apply {
put(InvokeChannelConstants.Key.EVENT_ID, eventId)
put(InvokeChannelConstants.Key.EVENT, event)
put(InvokeChannelConstants.Key.DATA, "event$counter notify event success")
}
try {
context.contentResolver.insert(InvokeChannelConstants.ContentProvider.Cli2WMPF.URI_NOTIFY_INVOKE_CHANNEL_EVENT, cv)
Log.i(TAG, "send message success, content: event$counter success")
} catch (e: Exception) {
Log.e(TAG, "callback invoke channel error")
}
}