卡片调用客户端方法

本文介绍了在蚂蚁动态卡片中调用 Android 客户端方法的实现路径。

操作步骤

  1. 客户端注册 module。

    1. 自定义 module。

      public class CustomCubeModule extends CubeModule {
          private static final String TAG = CustomCubeModule.class.getSimpleName();
      
          // 注解,uiThread 表示是否在主进程回调
          @JsMethod(uiThread = true)
          public void cubeToClient(final CubeJSCallback callback) { 
              // 向卡片发送回调
              if (callback != null) {
                  callback.invoke("cubeToClient callback data: " + System.currentTimeMillis());
              }
          }
      }

    2. 注册自定义 module。

      第一个参数是 type,第二个参数是自定义 module 的全路径,第三个参数是调用的方法名称。全路径和方法名称不需要混淆。

      Collection<CubeModuleModel> cubeModuleModels = new LinkedList<>();
      cubeModuleModels.add(new CubeModuleModel("custom", CustomCubeModel.class.getName(), new String[]{"cubeToClient"}));
      CubeService.instance().getEngine().registerModule(cubeModuleModels, null);
  2. 卡片侧调用。

    1. 注册 module。type 需和客户端保持一致,此处以 custom 为例。

    2. 调用 module,方法名和客户端注册方法名要保持一致。

      <script>
          // 注册 module
          const navigator = requireModule("custom");
          export default {
              data: {
                  message: 'Hello Cube 1'
              },
              beforeCreate() {
                  this.message = 'Hello Cube 2'
              },
              didAppear() {
                  
              },        
              methods: {
                  onClick() {
                      // 调用客户端方法
                      navigator.cubeToClient(event=>{
                          this.message = event;
                      })
                  }
              }
          }
      </script>
    3. 将卡片打包发布到后台,即可调用客户端方法。