Bläddra i källkod

[feat]键盘插件,增加事件埋点和Flutter交互方法

hezihao 1 år sedan
förälder
incheckning
ff35125fcf
18 ändrade filer med 242 tillägg och 5 borttagningar
  1. 13 1
      lib/plugins/keyboard_method_handler.dart
  2. 4 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/AiKeyboardCommonPanelComponent.kt
  3. 4 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/AiKeyboardProloguePanelComponent.kt
  4. 9 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/KeyboardGuideComponent.kt
  5. 13 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/KeyboardSelectComponent.kt
  6. 11 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/QuickSwitchComponent.kt
  7. 8 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/SettingComponent.kt
  8. 6 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/ToolBarComponent.kt
  9. 10 1
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/page/impl/LoginPageComponent.kt
  10. 10 2
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/page/impl/VipPageComponent.kt
  11. 5 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/enums/FlutterMethod.kt
  12. 65 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/enums/StatisticsPoint.kt
  13. 5 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/floating/FloatingButtonService.kt
  14. 15 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/mvvm/repository/KeyboardRepository.kt
  15. 23 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/mvvm/viewmodel/KeyboardViewModel.kt
  16. 18 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/FlutterBridgeManager.kt
  17. 2 1
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/IBridgeApi.kt
  18. 21 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/api/EventReportApi.kt

+ 13 - 1
lib/plugins/keyboard_method_handler.dart

@@ -7,6 +7,7 @@ import 'package:get/get.dart';
 import 'package:injectable/injectable.dart';
 import 'package:keyboard/data/repository/chat_repository.dart';
 import 'package:keyboard/data/repository/keyboard_repository.dart';
+import 'package:keyboard/handler/event_handler.dart';
 import 'package:keyboard/module/keyboard_manage/keyboard_manage_controller.dart';
 import 'package:keyboard/module/main/main_controller.dart';
 import 'package:keyboard/utils/atmob_log.dart';
@@ -55,7 +56,8 @@ class KeyboardMethodHandler {
         return _handleChatPrologue(call);
       case 'jumpAppPage':
         return _handleJumpAppPage(call);
-
+      case 'reportEvent':
+        return _handleReportEvent(call);
       default:
         throw MissingPluginException('Not implemented: ${call.method}');
     }
@@ -229,6 +231,7 @@ class KeyboardMethodHandler {
             parameters: parsedArgs.map((k, v) => MapEntry(k, v.toString())),
           );
         }
+
         // 如果目标页面已存在,则删除其他页面,并拉起目标页面,手动传参
         if (path == RoutePath.mainTab) {
           if (Get.isRegistered<MainController>()) {
@@ -259,6 +262,15 @@ class KeyboardMethodHandler {
     }
   }
 
+  Future<String> _handleReportEvent(MethodCall call) async {
+    final String eventId = call.arguments['eventId'] ?? "";
+    final Map<String, dynamic>? params = call.arguments['params'];
+    if (eventId.isNotEmpty) {
+      EventHandler.report(eventId, params: params);
+    }
+    return '{}';
+  }
+
   String handleError(dynamic error) {
     if (error is ServerErrorException) {
       AtmobLog.e(tag, "接口请求失败: ${error.message}");

+ 4 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/AiKeyboardCommonPanelComponent.kt

@@ -19,6 +19,7 @@ import com.atmob.keyboard_android.component.item.AddCharacterViewBinder
 import com.atmob.keyboard_android.component.item.AiKeyboardKeyViewBinder
 import com.atmob.keyboard_android.constant.Constants
 import com.atmob.keyboard_android.enums.HelpMode
+import com.atmob.keyboard_android.enums.StatisticsPoint
 import com.atmob.keyboard_android.enums.host.HostMainTab
 import com.atmob.keyboard_android.ext.click
 import com.atmob.keyboard_android.ext.setGone
@@ -224,6 +225,9 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
 
         // 发送
         vSendBtn.click {
+            // 埋点事件上报
+            KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
+                ?.reportEvent(StatisticsPoint.EVENT_05016)
             KeyboardHolder.getKeyboardService()?.asInputMethodService()?.let {
                 InputMethodUtil.clickSendBtn(it)
             }

+ 4 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/AiKeyboardProloguePanelComponent.kt

@@ -15,6 +15,7 @@ import com.atmob.keyboard_android.component.child.impl.ai.PrologueAiChatComponen
 import com.atmob.keyboard_android.component.item.AiKeyboardKeyViewBinder
 import com.atmob.keyboard_android.constant.Constants
 import com.atmob.keyboard_android.enums.HelpMode
+import com.atmob.keyboard_android.enums.StatisticsPoint
 import com.atmob.keyboard_android.ext.click
 import com.atmob.keyboard_android.ext.setGone
 import com.atmob.keyboard_android.ext.setVisible
@@ -274,6 +275,9 @@ class AiKeyboardProloguePanelComponent @JvmOverloads constructor(
 
         // 发送
         vSendBtn.click {
+            // 埋点事件上报
+            KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
+                ?.reportEvent(StatisticsPoint.EVENT_05016)
             KeyboardHolder.getKeyboardService()?.asInputMethodService()?.let {
                 InputMethodUtil.clickSendBtn(it)
             }

+ 9 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/KeyboardGuideComponent.kt

@@ -7,9 +7,11 @@ import android.widget.TextView
 import com.atmob.keyboard_android.R
 import com.atmob.keyboard_android.component.base.BaseUIComponent
 import com.atmob.keyboard_android.component.child.IKeyboardGuideComponent
+import com.atmob.keyboard_android.enums.StatisticsPoint
 import com.atmob.keyboard_android.ext.click
 import com.atmob.keyboard_android.ext.measureView
 import com.atmob.keyboard_android.model.AiKeyboardKeyModel
+import com.atmob.keyboard_android.util.KeyboardHolder
 import com.atmob.keyboard_android.util.ViewLocationUtil
 import com.blankj.utilcode.util.ConvertUtils
 
@@ -54,6 +56,13 @@ class KeyboardGuideComponent @JvmOverloads constructor(
         render()
     }
 
+    override fun onComponentShow() {
+        super.onComponentShow()
+        // 埋点事件上报
+        KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
+            ?.reportEvent(StatisticsPoint.EVENT_03006)
+    }
+
     override fun getComponentInterfaceClazz(): Class<IKeyboardGuideComponent> {
         return IKeyboardGuideComponent::class.java
     }

+ 13 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/KeyboardSelectComponent.kt

@@ -14,6 +14,8 @@ import com.atmob.keyboard_android.component.child.IKeyboardSelectComponent
 import com.atmob.keyboard_android.component.item.EmptyPlaceholderViewBinder
 import com.atmob.keyboard_android.component.item.KeyboardSelectViewBinder
 import com.atmob.keyboard_android.constant.Constants
+import com.atmob.keyboard_android.enums.KeyboardType
+import com.atmob.keyboard_android.enums.StatisticsPoint
 import com.atmob.keyboard_android.ext.click
 import com.atmob.keyboard_android.ext.deepCopy
 import com.atmob.keyboard_android.model.EmptyPlaceholderModel
@@ -67,6 +69,17 @@ class KeyboardSelectComponent @JvmOverloads constructor(
             if (selectKeyboard == null) {
                 return@click
             }
+            // 事件埋点上报
+            KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()?.run {
+                val type = selectKeyboard.type ?: ""
+                if (type.isNotBlank()) {
+                    if (KeyboardType.isSystem(type)) {
+                        reportEvent(StatisticsPoint.EVENT_05003)
+                    } else {
+                        reportEvent(StatisticsPoint.EVENT_05004)
+                    }
+                }
+            }
             // 保存,用户选择的键盘
             selectedKeyboard(selectKeyboard, onSuccess = {
                 // 保存成功,更新选中信息

+ 11 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/QuickSwitchComponent.kt

@@ -10,6 +10,7 @@ import com.atmob.keyboard_android.component.base.BaseUIComponent
 import com.atmob.keyboard_android.component.child.IQuickSwitchComponent
 import com.atmob.keyboard_android.component.root.IKeyboardRootComponent
 import com.atmob.keyboard_android.enums.HelpMode
+import com.atmob.keyboard_android.enums.StatisticsPoint
 import com.atmob.keyboard_android.ext.click
 import com.atmob.keyboard_android.ui.popup.ModeSwitchPopupWindow
 import com.atmob.keyboard_android.util.KeyboardHolder
@@ -60,6 +61,16 @@ class QuickSwitchComponent @JvmOverloads constructor(
                         // 切换模式
                         KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
                             ?.updateHelpMode(newMode)
+                        // 埋点事件上报
+                        KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()?.run {
+                            if (newMode == HelpMode.HELP_CHAT) {
+                                reportEvent(StatisticsPoint.EVENT_05000)
+                            } else if (newMode == HelpMode.TEACH_YOU_SAY) {
+                                reportEvent(StatisticsPoint.EVENT_05001)
+                            } else if (newMode == HelpMode.OPEN_REMARKS) {
+                                reportEvent(StatisticsPoint.EVENT_05002)
+                            }
+                        }
                         // 切换到键盘页
                         val keyboardRootComponent =
                             ComponentMediator.findComponent<IKeyboardRootComponent>(

+ 8 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/SettingComponent.kt

@@ -9,6 +9,7 @@ import com.atmob.keyboard_android.component.base.animator.ComponentAnimator
 import com.atmob.keyboard_android.component.base.animator.impl.TransitionAnimator
 import com.atmob.keyboard_android.component.child.ISettingComponent
 import com.atmob.keyboard_android.constant.Constants
+import com.atmob.keyboard_android.enums.StatisticsPoint
 import com.atmob.keyboard_android.enums.host.HostMainTab
 import com.atmob.keyboard_android.ext.click
 import com.atmob.keyboard_android.util.KeyboardHolder
@@ -43,14 +44,21 @@ class SettingComponent @JvmOverloads constructor(
         }
         // 定制人设
         vSettingCustomPersonLayout.click {
+            // 埋点事件上报
+            KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
+                ?.reportEvent(StatisticsPoint.EVENT_05012)
             FlutterBridgeManager.jump2CustomCharacterPage()
         }
         // 人设市场
         vSettingMarketLayout.click {
+            KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
+                ?.reportEvent(StatisticsPoint.EVENT_05013)
             FlutterBridgeManager.jump2MainPage(HostMainTab.CHARACTER)
         }
         // 解锁会员
         vSettingUnlockVipLayout.click {
+            KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
+                ?.reportEvent(StatisticsPoint.EVENT_05014)
             FlutterBridgeManager.jump2VipStore()
         }
 

+ 6 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/ToolBarComponent.kt

@@ -12,6 +12,7 @@ import com.atmob.keyboard_android.component.base.BaseUIComponent
 import com.atmob.keyboard_android.component.child.IToolBarComponent
 import com.atmob.keyboard_android.component.root.IKeyboardRootComponent
 import com.atmob.keyboard_android.enums.KeyboardGlobalType
+import com.atmob.keyboard_android.enums.StatisticsPoint
 import com.atmob.keyboard_android.ext.click
 import com.atmob.keyboard_android.ext.setGone
 import com.atmob.keyboard_android.keyboard.InputMethodPickerActivity
@@ -48,6 +49,9 @@ class ToolBarComponent @JvmOverloads constructor(
         vPinyinSwitchBtn.setGone()
 
         vIcon.click {
+            // 埋点事件上报
+            KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
+                ?.reportEvent(StatisticsPoint.EVENT_05011)
             // 切换到设置页
             val rootComponent =
                 ComponentMediator.findComponent<IKeyboardRootComponent>(IKeyboardRootComponent::class.java)
@@ -82,6 +86,8 @@ class ToolBarComponent @JvmOverloads constructor(
             InputMethodPickerActivity.start(context)
         }
         vIntimacyLayout.click {
+            KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
+                ?.reportEvent(StatisticsPoint.EVENT_05015)
             // 点击亲密度布局,跳转去亲密度页
             UserInfoHelper.checkLogin(nextAction = {
                 FlutterBridgeManager.jump2IntimacyPage()

+ 10 - 1
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/page/impl/LoginPageComponent.kt

@@ -12,6 +12,7 @@ import com.atmob.keyboard_android.component.base.animator.ComponentAnimator
 import com.atmob.keyboard_android.component.base.animator.impl.TransitionAnimator
 import com.atmob.keyboard_android.component.page.ILoginPageComponent
 import com.atmob.keyboard_android.constant.Constants
+import com.atmob.keyboard_android.enums.StatisticsPoint
 import com.atmob.keyboard_android.ext.click
 import com.atmob.keyboard_android.ext.loadResDrawableToCorner
 import com.atmob.keyboard_android.util.KeyboardHolder
@@ -40,6 +41,8 @@ class LoginPageComponent @JvmOverloads constructor(
 
     override fun bindView(view: View) {
         vBackBtn.click {
+            KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
+                ?.reportEvent(StatisticsPoint.EVENT_05007)
             // 关闭
             hide()
         }
@@ -47,6 +50,8 @@ class LoginPageComponent @JvmOverloads constructor(
             loadResDrawableToCorner(R.mipmap.ic_app_icon, 46f, 0)
         }
         vLoginBtn.click {
+            KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
+                ?.reportEvent(StatisticsPoint.EVENT_05006)
             // 跳转到登录页,并关闭自身
             FlutterBridgeManager.jump2LoginPage()
             hide()
@@ -59,7 +64,11 @@ class LoginPageComponent @JvmOverloads constructor(
 
     override fun onComponentShow() {
         super.onComponentShow()
-        KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()?.updateLoginPageShowing(true)
+        KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()?.run {
+            updateLoginPageShowing(true)
+            // 事件埋点上报
+            reportEvent(StatisticsPoint.EVENT_05005)
+        }
     }
 
     override fun onComponentHide() {

+ 10 - 2
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/page/impl/VipPageComponent.kt

@@ -9,6 +9,7 @@ import com.atmob.keyboard_android.component.base.animator.ComponentAnimator
 import com.atmob.keyboard_android.component.base.animator.impl.TransitionAnimator
 import com.atmob.keyboard_android.component.page.IVipPageComponent
 import com.atmob.keyboard_android.constant.Constants
+import com.atmob.keyboard_android.enums.StatisticsPoint
 import com.atmob.keyboard_android.ext.click
 import com.atmob.keyboard_android.util.KeyboardHolder
 import com.atmob.keyboard_android.util.bridge.FlutterBridgeManager
@@ -33,9 +34,13 @@ class VipPageComponent @JvmOverloads constructor(
 
     override fun bindView(view: View) {
         vBackBtn.click {
+            KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
+                ?.reportEvent(StatisticsPoint.EVENT_05010)
             hide()
         }
         vJoinVipBtn.click {
+            KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
+                ?.reportEvent(StatisticsPoint.EVENT_05009)
             // 跳转到VIP商店
             FlutterBridgeManager.jump2VipStore()
             hide()
@@ -49,8 +54,11 @@ class VipPageComponent @JvmOverloads constructor(
 
     override fun onComponentShow() {
         super.onComponentShow()
-        KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
-            ?.updateVipPageShowing(true)
+        KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()?.run {
+            // 埋点事件上报
+            reportEvent(StatisticsPoint.EVENT_05008)
+            updateVipPageShowing(true)
+        }
     }
 
     override fun onComponentHide() {

+ 5 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/enums/FlutterMethod.kt

@@ -53,4 +53,9 @@ enum class FlutterMethod(val methodName: String) {
      * AI聊天-开场白
      */
     CHAT_PROLOGUE("chatPrologue"),
+
+    /**
+     * 埋点事件上报
+     */
+    REPORT_EVENT("reportEvent"),
 }

+ 65 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/enums/StatisticsPoint.kt

@@ -0,0 +1,65 @@
+package com.atmob.keyboard_android.enums
+
+/**
+ * 埋点事件枚举
+ */
+enum class StatisticsPoint(
+    val eventId: String,
+) {
+    // 点击【悬浮窗】
+    EVENT_03003("za_03003"),
+
+    // 点击人设指引-展示
+    EVENT_03006("za_03006"),
+
+    // 模式选择-帮聊
+    EVENT_05000("za_05000"),
+
+    // 模式选择-教你说
+    EVENT_05001("za_05001"),
+
+    // 模式选择-开场白"
+    EVENT_05002("za_05002"),
+
+    // 键盘选择-通用键盘"
+    EVENT_05003("za_05003"),
+
+    // 键盘选择-专属键盘"
+    EVENT_05004("za_05004"),
+
+    // 登录弹窗-展示"
+    EVENT_05005("za_05005"),
+
+    // 登录弹窗-点击【登录】"
+    EVENT_05006("za_05006"),
+
+    // 登录弹窗-点击【关闭】"
+    EVENT_05007("za_05007"),
+
+    // 解锁会员弹窗-展示"
+    EVENT_05008("za_05008"),
+
+    // 解锁会员弹窗-点击【登录】"
+    EVENT_05009("za_05009"),
+
+    // 解锁会员弹窗-点击【关闭】"
+    EVENT_05010("za_05010"),
+
+    // 设置入口-点击"za_05011
+    EVENT_05011("za_05011"),
+
+    // 设置入口-点击【定制人设】"
+    EVENT_05012("za_05012"),
+
+    // 设置入口-点击【人设市场】"
+    EVENT_05013("za_05013"),
+
+    // 设置入口-点击【解锁会员】"
+    EVENT_05014("za_05014"),
+
+    // 亲密度-点击"za_05015
+    EVENT_05015("za_05015"),
+
+    // 键盘-点击【发送】
+    EVENT_05016("za_05016"),
+}

+ 5 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/floating/FloatingButtonService.kt

@@ -14,8 +14,10 @@ import android.view.View
 import android.view.WindowManager
 import android.widget.ImageView
 import com.atmob.keyboard_android.R
+import com.atmob.keyboard_android.enums.StatisticsPoint
 import com.atmob.keyboard_android.ext.click
 import com.atmob.keyboard_android.keyboard.InputMethodPickerActivity
+import com.atmob.keyboard_android.util.KeyboardHolder
 import com.atmob.keyboard_android.util.flow.FloatingWindowUtil
 import kotlin.math.abs
 
@@ -133,6 +135,9 @@ class FloatingButtonService : Service() {
 
         // 点击按钮,弹出输入法选择框
         floatingButton.click {
+            // 埋点事件上报
+            KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
+                ?.reportEvent(StatisticsPoint.EVENT_03003)
             InputMethodPickerActivity.start(this)
         }
 

+ 15 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/mvvm/repository/KeyboardRepository.kt

@@ -125,4 +125,19 @@ class KeyboardRepository : BaseRepository() {
             FlutterBridgeManager.chatPrologue(name, onSuccess, onFail)
         }
     }
+
+    /**
+     * 埋点事件上报
+     *
+     * @param eventId 事件Id
+     * @param params 参数
+     */
+    fun reportEvent(
+        eventId: String,
+        params: Map<String, Any>?,
+    ): Flow<BaseResp<EmptyResp>> = asFlow {
+        callback2Coroutines { onSuccess, onFail ->
+            FlutterBridgeManager.reportEvent(eventId, params, onSuccess, onFail)
+        }
+    }
 }

+ 23 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/mvvm/viewmodel/KeyboardViewModel.kt

@@ -5,6 +5,7 @@ import androidx.lifecycle.MutableLiveData
 import com.atmob.keyboard_android.enums.HelpMode
 import com.atmob.keyboard_android.enums.KeyboardGlobalType
 import com.atmob.keyboard_android.enums.KeyboardType
+import com.atmob.keyboard_android.enums.StatisticsPoint
 import com.atmob.keyboard_android.mvvm.base.BaseViewModel
 import com.atmob.keyboard_android.mvvm.repository.KeyboardRepository
 import com.atmob.keyboard_android.util.LogUtil
@@ -491,6 +492,28 @@ class KeyboardViewModel : BaseViewModel() {
     }
 
     /**
+     * 埋点事件上报
+     *
+     * @param statisticsPoint 事件
+     * @param params 参数
+     */
+    fun reportEvent(
+        statisticsPoint: StatisticsPoint,
+        params: Map<String, Any>? = null,
+        onSuccess: (() -> Unit)? = null,
+        onFail: ((String) -> Unit)? = null
+    ) {
+        launch {
+            val resp = mKeyboardRepository.reportEvent(statisticsPoint.eventId, params).single()
+            if (ErrorHandler.isError(resp)) {
+                onFail?.invoke(resp.message)
+            } else {
+                onSuccess?.invoke()
+            }
+        }
+    }
+
+    /**
      * 获取键盘信息,如果没有,则返回第一个键盘信息
      */
     fun getCurrentKeyboardInfoWithDefault(

+ 18 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/FlutterBridgeManager.kt

@@ -248,4 +248,22 @@ object FlutterBridgeManager : IBridgeApi {
             eventChannelHandler
         )
     }
+
+    override fun reportEvent(
+        eventId: String,
+        params: Map<String, Any>?,
+        onSuccess: (EmptyResp) -> Unit,
+        onFail: (errorCode: Int, errorMsg: String) -> Unit
+    ) {
+        mFlutterMethodCaller.callMethod(
+            FlutterMethod.REPORT_EVENT.methodName,
+            args = mapOf(
+                "eventId" to eventId,
+                "params" to params,
+            ),
+            modelClazz = EmptyResp::class.java,
+            onSuccess = onSuccess,
+            onFail = onFail
+        )
+    }
 }

+ 2 - 1
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/IBridgeApi.kt

@@ -1,6 +1,7 @@
 package com.atmob.keyboard_android.util.bridge
 
 import com.atmob.keyboard_android.util.bridge.api.AiChatApi
+import com.atmob.keyboard_android.util.bridge.api.EventReportApi
 import com.atmob.keyboard_android.util.bridge.api.KeyboardApi
 import com.atmob.keyboard_android.util.bridge.api.RouteJumpApi
 import com.atmob.keyboard_android.util.bridge.api.UserApi
@@ -8,4 +9,4 @@ import com.atmob.keyboard_android.util.bridge.api.UserApi
 /**
  * 定义桥接交互API
  */
-interface IBridgeApi : UserApi, RouteJumpApi, KeyboardApi, AiChatApi, IExposeApi
+interface IBridgeApi : UserApi, RouteJumpApi, KeyboardApi, AiChatApi, IExposeApi, EventReportApi

+ 21 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/api/EventReportApi.kt

@@ -0,0 +1,21 @@
+package com.atmob.keyboard_android.util.bridge.api
+
+import com.atmob.keyboard_android.util.bridge.model.base.EmptyResp
+
+/**
+ * 埋点事件上报
+ */
+interface EventReportApi {
+    /**
+     * 埋点事件上报
+     *
+     * @param eventId 事件Id
+     * @param params  参数
+     */
+    fun reportEvent(
+        eventId: String,
+        params: Map<String, Any>?,
+        onSuccess: (EmptyResp) -> Unit,
+        onFail: (errorCode: Int, errorMsg: String) -> Unit
+    )
+}