Rumah hujung hadapan web uni-app pemalam asal uniapp melaksanakan kaedah js

pemalam asal uniapp melaksanakan kaedah js

May 22, 2023 am 10:13 AM

Kata Pengantar

uniapp ialah rangka kerja pembangunan merentas platform yang sangat baik yang menyokong pembangunan pesat berbilang terminal. Dalam pembangunan projek sebenar, kita tidak dapat tidak perlu menggunakan pemalam asli, dan kadangkala kita perlu melaksanakan kaedah yang didedahkan oleh pemalam asli dalam JS, jadi bagaimana untuk mencapai ini? Berikut adalah pengalaman praktikal saya, saya harap ia akan membantu semua orang.

Teks

Pertama, kita perlu menulis kaedah yang perlu didedahkan kepada HBuilderX dalam projek uniapp pemalam ke dalam components/customPlugin/src/android_trunk/uniPluginJava/UniPluginJava.java, seperti ditunjukkan di bawah:

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();
        }
    }
}
Salin selepas log masuk

Kod di atas adalah serupa dengan kaedah lain dalam pemalam Tambah kaedah bernama UniPluginJava dalam runCustomFun, yang menerima dua parameter: args dan callbackContext.

args ialah parameter input kaedah pemalam Parameter jenis JS daripada JSON digunakan di sini. Dalam runCustomFun kami hanya memperoleh medan param dalam objek pertama untuk pemprosesan seterusnya.

callbackContext ialah perkara yang kami gunakan semasa memanggil JS kaedah panggil balik dalam pemalam. Di sini kami menggunakan kaedah callbackContext.success untuk memanggil semula nilai jenis rentetan, yang boleh diperoleh melalui kaedah JS panggil balik dalam success. Kami telah melaksanakan kod

dalam pemalam

java, jadi kami perlu memanggil kaedah ini dalam uniapp.

Kami terlebih dahulu perlu memetakan kaedah pemalam kepada kaedah yang tersedia dalam uniapp Di sini kami menggunakan kaedah uni.requireNativePlugin untuk mencipta objek promise dan menggunakan parameter panggil balik promiseCallback untuk mendedahkan <. 🎜> kaedah. plugin

/**
 * 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
}
Salin selepas log masuk

Dalam kod di atas, kami mula-mula menggunakan kaedah

untuk memetakan pemalam asli dan mengaitkan objek uni.requireNativePlugin yang dikembalikan dengan kaedah promise dalam promiseCallback. Selepas pemetaan berjaya, kami mendedahkan pemalam kepada resolve untuk memudahkan panggilan seterusnya. promiseCallback

Kami melaksanakan pendaftaran dan pendedahan pemalam melalui

, dan akhirnya mendedahkannya kepada objek Vue.prototype.$plugin.install, iaitu, Vue, supaya ia boleh digunakan dalam kod seterusnya. this.$plugin

Seterusnya, kita boleh memanggil kaedah pemalam dalam fail

seperti berikut: vue

<template>
  <div class="container">
    <view class="content">
      <text class="text">{{ message }}</text>
      <text @tap="onButtonClick" class="button">Click me</text>
    </view>
  </div>
</template>

<script>
  export default {
    name: 'Demo',

    data() {
      return {
        message: ''
      }
    },

    mounted() {
      const self = this

      this.$plugin.then(plugin => {
        // 调用插件方法并执行回调函数
        return new Promise((resolve, reject) => {
          plugin.runCustomFun({param: 'uniapp 调用 Native Plugin'}).then(res => {
            // 此处回调方法中的 `res` 是由 Native Plugin 中的 `callbackContext.success` 返回的
            self.message = res
            console.log(`使用 uniapp 调用 Native Plugin,返回参数:${res}`)
            resolve()
          }).catch(err => {
            console.error(err)
            reject()
          })
        })
      })
    }

    methods: {
      onButtonClick() {
        console.log('button clicked')
      }
    }
  }
</script>
Salin selepas log masuk
Dalam fungsi kitaran hayat

, kita memperoleh contoh pemalam secara serentak melalui kaedah mounted, Dengan itu memanggil kaedah pemalam. Dalam this.$plugin.then, kami mula-mula memanggil kaedah then untuk melaksanakan kaedah plugin.runCustomFun dalam pemalam Selepas ia selesai, kami mengembalikan nilai hasil melalui kaedah runCustomFun dan memaparkannya dengan callbackContext.success dalam. komponen vue nilai Pulangan. Pada masa yang sama, nilai yang dikembalikan dicetak pada konsol untuk memudahkan penyahpepijatan semasa pembangunan. message

Ringkasan

Menggunakan pemalam asli ialah ciri yang sangat penting dalam pembangunan

Artikel ini terutamanya memperkenalkan cara memanggil kaedah dalam pemalam asli dalam uniapp. Melalui pengenalan di atas, anda seharusnya mempunyai pemahaman yang lebih jelas tentang cara melaksanakan fungsi ini dan beberapa butiran. Pada masa yang sama, saya juga berharap anda boleh menambah baik kod anda berdasarkan keperluan sebenar. uniapp

Atas ialah kandungan terperinci pemalam asal uniapp melaksanakan kaedah js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimanakah saya menggunakan preprocessors (sass, kurang) dengan uni-app? Bagaimanakah saya menggunakan preprocessors (sass, kurang) dengan uni-app? Mar 18, 2025 pm 12:20 PM

Artikel membincangkan menggunakan SASS dan kurang preprocessors dalam UNI-APP, memperincikan persediaan, faedah, dan penggunaan dwi. Fokus utama adalah pada konfigurasi dan kelebihan. [159 aksara]

Bagaimana saya menggunakan API Animasi Uni-App? Bagaimana saya menggunakan API Animasi Uni-App? Mar 18, 2025 pm 12:21 PM

Artikel ini menerangkan cara menggunakan API Animasi Uni-App, memperincikan langkah-langkah untuk membuat dan menggunakan animasi, fungsi utama, dan kaedah untuk menggabungkan dan mengawal masa animasi.

Apakah jenis ujian yang boleh anda lakukan dalam aplikasi UNIAPP? Apakah jenis ujian yang boleh anda lakukan dalam aplikasi UNIAPP? Mar 27, 2025 pm 04:59 PM

Artikel ini membincangkan pelbagai jenis ujian untuk aplikasi UNIAPP, termasuk unit, integrasi, fungsional, UI/UX, prestasi, silang platform, dan ujian keselamatan. Ia juga meliputi memastikan keserasian silang platform dan mengesyorkan alat seperti JES

Apakah alat penyahpepijatan yang tersedia untuk pembangunan Uniapp? Apakah alat penyahpepijatan yang tersedia untuk pembangunan Uniapp? Mar 27, 2025 pm 05:05 PM

Artikel ini membincangkan alat penyahpepijatan dan amalan terbaik untuk pembangunan UNIPP, yang memberi tumpuan kepada alat seperti HBuildex, WeChat Developer Tools, dan Chrome Devtools.

Bagaimanakah anda dapat mengurangkan saiz pakej aplikasi UNIAPP anda? Bagaimanakah anda dapat mengurangkan saiz pakej aplikasi UNIAPP anda? Mar 27, 2025 pm 04:45 PM

Artikel ini membincangkan strategi untuk mengurangkan saiz pakej UNIAPP, memberi tumpuan kepada pengoptimuman kod, pengurusan sumber, dan teknik seperti pemisahan kod dan pemuatan malas.

Bagaimanakah saya menggunakan API Uni-App untuk mengakses ciri peranti (kamera, geolokasi, dll)? Bagaimanakah saya menggunakan API Uni-App untuk mengakses ciri peranti (kamera, geolokasi, dll)? Mar 18, 2025 pm 12:06 PM

Artikel ini membincangkan menggunakan API UNI-APP untuk mengakses ciri peranti seperti kamera dan geolokasi, termasuk tetapan kebenaran dan pengendalian ralat.

Bagaimana saya menggunakan API Penyimpanan Uni-App (uni.setstorage, uni.getstorage)? Bagaimana saya menggunakan API Penyimpanan Uni-App (uni.setstorage, uni.getstorage)? Mar 18, 2025 pm 12:22 PM

Artikel ini menerangkan cara menggunakan API penyimpanan Uni-App (uni.setstorage, uni.getstorage) untuk pengurusan data tempatan, membincangkan amalan terbaik, penyelesaian masalah, dan menyoroti batasan dan pertimbangan untuk kegunaan yang berkesan.

Bagaimana saya mengendalikan navigasi antara halaman di uni-app? Bagaimana saya mengendalikan navigasi antara halaman di uni-app? Mar 18, 2025 pm 12:07 PM

Artikel ini membincangkan pengendalian navigasi halaman di UNI-APP menggunakan API terbina dalam, amalan terbaik untuk navigasi yang cekap, animasi tersuai untuk peralihan halaman, dan kaedah untuk lulus data antara halaman.

See all articles