Home> Web Front-end> uni-app> body text

uniapp original plug-in executes js method

王林
Release: 2023-05-22 10:13:37
Original
1170 people have browsed it

Preface

uniapp is a very excellent cross-platform development framework that supports multi-terminal rapid development. In actual project development, we inevitably need to use native plug-ins, and sometimes we need to execute the methods exposed by native plug-ins in JS, so how to achieve this? The following is my practical experience, I hope it will be helpful to everyone.

Text

First, we need to write the methods that need to be exposed touniappin theHBuilderXproject of the plug-in tocomponents/customPlugin /src/android_trunk/uniPluginJava/UniPluginJava.java, as shown below:

public class UniPluginJava extends AbsPlgt { public void runCustomFun(JSONArray args, CallbackContext callbackContext) { try { JSONObject arg_object = args.getJSONObject(0); String param = arg_object.optString("param"); // 利用 callbackContext 调用 JS 回调方法 callbackContext.success("我是回调参数: " + param); } catch (Exception e) { e.toString(); } } }
Copy after login

The above code is similar to other methods in the plug-in, add a file named# inUniPluginJavaThe method of ##runCustomFun, which receives two parameters:argsandcallbackContext.

argsis the input parameter of the plug-in method. TheJSONtype parameter fromJSis used here. InrunCustomFunwe only obtain theparamfield in the first object for subsequent processing.

callbackContextis used when we call theJScallback method in the plug-in. Here we use thecallbackContext.successmethod to call back a string type value, which can be obtained through thesuccesscallback method inJS. We have implemented thejava

code in the

plug-in, then we need to call this method inuniapp.

We first need to map the plug-in method to the method available in

uniapp. Here we use theuni.requireNativePluginmethod to create apromiseobject, And use the callback parameterpromiseCallbackto expose thepluginmethod.

/** * uniapp plugin 安装 * @param {*} Vue * @param {*} options */ function install(Vue, options) { // 创建 `promise` 对象,等待映射(`Promise` 是 ES6 中新增的语法,用于异步编程) const { promise, resolve } = createPromiseCallback() // 映射插件中的方法 uni.requireNativePlugin('uniPlugin').then(plugin => { const cb = (err, res) => { if (err) { console.error(err) return } console.log('js调用native,返回结果:', res) } plugin.runCustomFun({param: '参数1'}, cb) // 暴露 `plugin` 方法,方便调用 resolve(plugin) }).catch(err => { console.error(err) }) Vue.prototype.$plugin = {} Vue.prototype.$plugin.install = function (Vue, options) { Object.defineProperty(Vue.prototype, '$plugin', { get: function () { console.log('等待 Native Plugin 安装...') return promise } }) } } export default { version: '0.0.1', install }
Copy after login

In the above code, we first use the

uni.requireNativePluginmethod to map the native plug-in, and put the returnedpromiseobject andpromiseCallbackTheresolvemethod is associated. After the mapping is successful, we expose the plug-in topromiseCallbackto facilitate subsequent calls.

We implement the registration and exposure of the plug-in through

Vue.prototype.$plugin.install, and finally expose it to theVueobject, that is,this. $pluginfor easy use in subsequent code.

Next, we can call the plug-in method in the

vuefile as follows:

 
Copy after login
In the

mountedlife cycle function, we passthis.$plugin.thenmethod synchronously obtains the plug-in instance, thereby calling the plug-in method. Inthen, we first call theplugin.runCustomFunmethod to execute therunCustomFunmethod in the plugin. After it is completed, we passcallbackContext.successThe method returns the result value, and usesmessageto display the return value in thevuecomponent. At the same time, the returned value is printed on the console to facilitate debugging during development.

Summary

Using native plug-ins is a very important function in

uniappdevelopment. This article mainly introduces how to call native plug-ins inuniappMethods. Through the above introduction, you should have a clearer understanding of how to implement this function and some details. At the same time, I also hope that you can further improve your code based on actual needs.

The above is the detailed content of uniapp original plug-in executes js method. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!