ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ionic+vue+capacitor系列笔记--capacitor3.X和2.X+android自定义capacitor的JSbridge插件注册与使用(不同版本注册方式不同,返回值格式也不同,使用

2022-05-13 23:34:45  阅读:134  来源: 互联网

标签:不同 MyPlugin getcapacitor capacitor 注册 import com public result


经过我的多番折腾,终于搞明白了这个东西的用法,不同版本的注册方法,使用方法都不一样,现在把这个折腾的结果记录下来,造福大家~

首先编写一个类,然后注册,注意,这个和2.x不一样,2.x的时候我们会使用init的方式去注册

先看2.X的Capacitor

编写一个方法,然后进行注册,注意查看2.X编写方法的代码哦~~

import com.getcapacitor.JSObject;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginCall;
import com.getcapacitor.PluginMethod;
import com.getcapacitor.NativePlugin;
// 每次做新插件的时候需要继承Plugin 然后添加装饰器 @CapacitorPlugin
@NativePlugin(name = "MyPlugin",permissions = {})
public class MyPlugin extends Plugin {
    /**
     * 插件初始化
     * https://capacitorjs.com/docs/plugins/android#running-code-on-plugin-load
     */
    @Override
    public void load() {
        Log.wtf("MyPlugin" + getClass().getSimpleName(), "MyPluginPlugin init");
    }

    @PluginMethod()
    public void getName(PluginCall call) {
        String value = call.getString("value");
        String result = "";
        JSObject ret = new JSObject();
        try {
            result = authenticate.getStaffName();
            ret.put("result", result);
        } catch (Exception exception) {
            call.error(exception.getLocalizedMessage());
        }
        call.success(ret);
    }
}

2.x注册方式

public class MainActivity extends BridgeActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.init(savedInstanceState, new ArrayList<Class<? extends Plugin>>() {{
            add(MyPlugin.class);
        }});
    }
}

2.X代码调用方式

import { Plugins } from '@capacitor/core';
const {
  MyPlugin,
  Network,
  Modals,
  Browser,
  App,
  Toast,
  Storage,
  SplashScreen,
  Device,
} = Plugins;

SplashScreen.show({
  showDuration: 2000,
  autoHide: true,
});

const offlineHandler = async (status) => {
  if (!status.connected) {
    await Modals.alert({
      title: 'Offline',
      message: 'Please check your network connection',
    });
  }
};

Network.addListener('networkStatusChange', offlineHandler);
const name = await MyPlugin.getName(); // 把这个放在async里就行了哦~~

3.X的Capacitor

编写一个方法,然后进行注册,3.X编写方法的代码和2.X是不一样的哦~~

import com.getcapacitor.JSObject;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginCall;
import com.getcapacitor.PluginMethod;
import com.getcapacitor.annotation.CapacitorPlugin;
// 每次做新插件的时候需要继承Plugin 然后添加装饰器 @CapacitorPlugin
@CapacitorPlugin(name = "MyPlugin",permissions = {})
public class MyPlugin extends Plugin {
    /**
     * 插件初始化
     * https://capacitorjs.com/docs/plugins/android#running-code-on-plugin-load
     */
    @Override
    public void load() {
        Log.wtf("MyPlugin" + getClass().getSimpleName(), "MyPluginPlugin init");
    }

    @PluginMethod()
    public void getName(PluginCall call) {
        String value = call.getString("value");
        String result = "";
        JSObject ret = new JSObject();
        try {
            result = authenticate.getStaffName();
            ret.put("result", result);
        } catch (Exception exception) {
           call.reject(exception.getLocalizedMessage(), null, exception);
        }
       call.resolve(ret);
    }
}

3.x注册方式

public class MainActivity extends BridgeActivity {
    public Authenticate authenticate;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        registerPlugin(MyPlugin.class);
        authenticate = new Authenticate(getApplicationContext(), getString(R.string.my_package_name));
    }
}

3.x调用方式

// Device Info
import { Device } from "@capacitor/device/dist/esm/index";
async function getDeviceInfo() {
  const info = await Device.getInfo();
  alertMessage(JSON.stringify(info))
}
async function getBatteryInfo() {
  const info = await Device.getBatteryInfo();
  alertMessage(JSON.stringify(info))
  // showToast(JSON.stringify(info));
}
// 插件测试代码
import { Capacitor } from "@capacitor/core";
console.log("Capacitor", Capacitor);
async function getMyPlugin() {
  const a = Capacitor.Plugins.MyPlugin.getName()
console.log("Capacitor-MyPlugin", a);
}
getMyPlugin()

标签:不同,MyPlugin,getcapacitor,capacitor,注册,import,com,public,result
来源: https://www.cnblogs.com/sugartang/p/16263079.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有