# registerEvent

当小程序中调用 [`wmpf.Channel.registerEvent`](/doc/oplatform/Miniprogram_Frame/api/mini_program/registerEvent)时，会通知到 Client 端。当小程序注册的事件触发时，客户端需要向小程序发送对应事件，小程序可以通过 [`wmpf.Channel.on`](/doc/oplatform/Miniprogram_Frame/api/mini_program/on) 监听。

## 传入参数

通过 ContentValues 传递

| 参数         | 类型   | 必填 | 说明                             |
| :----------- | :----- | :--- | :------------------------------- |
| \_\_event_id__ | String | 是   | 调用 id ，作为后续通知回调的凭据 |
| event        | String | 是   | 事件名                           |

## 回调参数

通过 insert 操作通知及 ContentValues 传递

| 参数         | 类型   | 必填 | 说明                                  |
| :----------- | :----- | :--- | :------------------------------------ |
| \_\_event_id__ | String | 是   | 调用 id ，作为通知回调的凭据          |
| event        | String | 是   | 事件名                                |
| data         | String | 否   | 第三方 app 经 wmpf 透传到小程序的数据 |

## 示例代码

```kotlin
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")
  }
}
```
