uni-app开发原生插件用哪种方式

发布于 1周前 作者 caililin 来自 Uni-App

uni-app开发原生插件用哪种方式

求助: 要开发个uniapp的Android原生插件用哪种方式? 官方好像有两种方式。 一种是weex的 https://ask.dcloud.net.cn/article/35416 一种是H5+的 http://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/66 这两种有什么区别?都用在什么场景? 我要开发个视频通话的插件用哪个合适

6 回复

uni-app的话,用weex的


用weex方式可以实现视频通话吗,是用Module扩展方式吗

回复 s***@126.com: 如果是带界面的,那显示这个插件的页面,需要是nvue页面。vue页面不行

回复 DCloud_heavensoft: nvue中可以使用SurfaceView吗 用来展示视频通话的视频

回复 s***@126.com: 理论上没有限制

在uni-app中开发原生插件,主要有两种方式:通过HBuilderX的可视化界面进行快速集成,以及手动编写原生代码进行深度定制。这里我们重点介绍手动编写原生代码的方式,因为这是最具灵活性和可控性的方法。

方式一:使用uni-app的原生模块扩展机制

  1. 创建原生插件项目: 首先,你需要创建一个原生插件项目。这通常意味着你需要分别针对Android和iOS平台创建对应的原生模块。

  2. 编写原生代码

    • Android: 在android/app/src/main/java/...目录下创建你的Java类,例如:

      package com.example.myplugin;
      
      import android.content.Context;
      import io.dcloud.feature.uniapp.bridge.UniJSCallback;
      import io.dcloud.feature.uniapp.common.UniModule;
      
      public class MyModule extends UniModule {
          public void myMethod(UniJSCallback callback) {
              String result = "Hello from MyModule!";
              callback.invoke(result);
          }
      }
      
    • iOS: 在ios/Classes/...目录下创建你的Objective-C或Swift类,例如:

      // MyModule.h
      #import <Foundation/Foundation.h>
      #import <UniAppJsBridge/UniModule.h>
      
      @interface MyModule : UniModule
      - (void)myMethod:(UniJSCallback *)callback;
      @end
      
      // MyModule.m
      #import "MyModule.h"
      
      @implementation MyModule
      - (void)myMethod:(UniJSCallback *)callback {
          NSString *result = @"Hello from MyModule!";
          [callback invokeAndKeepAlive:result];
      }
      @end
      
  3. 注册原生模块: 在manifest.json中注册你的原生模块,以便uni-app能够识别和使用它。

    "nativePlugins": [
        {
            "name": "MyPlugin",
            "class": "com.example.myplugin.MyModule", // Android
            "iosClass": "MyModule" // iOS
        }
    ]
    
  4. 在前端调用原生模块: 在你的uni-app前端代码中,通过uni.requireNativePlugin方法引入并使用你的原生模块。

    const myPlugin = uni.requireNativePlugin('MyPlugin');
    myPlugin.myMethod((result) => {
        console.log(result); // 输出: Hello from MyModule!
    });
    

通过上述步骤,你可以在uni-app中成功开发并集成一个原生插件。这种方式提供了高度的灵活性,允许你根据具体需求定制原生功能。

回到顶部