Heim Web-Frontend uni-app Wie nutzt die Uniapp-Implementierung JSBridge für die Interaktion mit Native?

Wie nutzt die Uniapp-Implementierung JSBridge für die Interaktion mit Native?

Oct 20, 2023 am 08:44 AM
uniapp 交互 jsbridge

Wie nutzt die Uniapp-Implementierung JSBridge für die Interaktion mit Native?

uniapp implementiert die Verwendung von JSBridge für die Interaktion mit Native, was spezifische Codebeispiele erfordert

1 Hintergrundeinführung

Bei der Entwicklung mobiler Anwendungen ist es manchmal notwendig, mit der nativen Umgebung zu interagieren, z. B. einige native Funktionen aufzurufen oder einige native Daten erhalten. Als plattformübergreifendes Framework für die Entwicklung mobiler Anwendungen bietet uniapp eine bequeme Möglichkeit, mit nativen Geräten zu interagieren und JSBridge für die Kommunikation zu verwenden.

JSBridge ist eine technische Lösung für die Interaktion des Front-Ends mit dem mobilen Native-End. Durch die Implementierung einer Bridge auf dem Front-End bzw. dem Native-End kann das Front-End native Methoden aufrufen und native Daten abrufen Gleichzeitig können über die Bridge auch Informationen vom nativen Ende an das Front-End gesendet werden.

2. Implementierungsschritte von JSBridge

  1. Erstellen Sie eine neue js-Datei im Uniapp-Projekt und nennen Sie sie JSBridge.js. Diese Datei dient als Brücke zwischen den Front-End- und nativen Interaktionen.
  2. Definieren Sie ein globales Objekt in der Datei JSBridge.js, um Nachrichten und Rückruffunktionen zwischen dem Frontend und Native zu speichern. Der Beispielcode lautet wie folgt:
// JSBridge.js

let messageHandlers = {}; // 存储前端和原生之间的消息和回调函数

// 注册消息处理函数,前端通过调用此函数来注册对应的回调函数
function registerHandler(name, handler) {
  messageHandlers[name] = handler;
}

// 发送消息到原生
function sendMessageToNative(name, data, callback) {
  let message = {
    name: name,
    data: data
  };
  
  // 注册回调函数
  if (callback) {
    let callbackId = 'cb_' + Date.now();
    message.callbackId = callbackId;
    messageHandlers[callbackId] = callback;
  }
  
  // 向原生发送消息
  window.webkit.messageHandlers[name].postMessage(message);
}

// 处理原生发送过来的消息
function handleMessageFromNative(message) {
  let handler = messageHandlers[message.name];
  
  if (handler) {
    handler(message.data, function(response) {
      sendMessageToNative(message.callbackId, response); // 发送回调消息给原生
    });
  }
}

window.messageHandlers = messageHandlers;
window.registerHandler = registerHandler;
window.sendMessageToNative = sendMessageToNative;
window.handleMessageFromNative = handleMessageFromNative;
Nach dem Login kopieren
  1. Fügen Sie JSBridge.js in die Datei main.js im Uniapp-Projekt ein und registrieren Sie die Nachrichtenverarbeitungsfunktion wie folgt: main.js文件中引入JSBridge.js,并注册消息处理函数,示例代码如下:
// main.js

import JSBridge from './JSBridge.js';

// 注册消息处理函数,前端通过调用此函数来注册对应的回调函数
JSBridge.registerHandler('getUserInfo', function(data, callback) {
  console.log('前端收到getUserInfo消息:', data);
  
  // 假设需要获取用户信息,可以通过uniapp的API来实现
  let userInfo = uni.getUserInfo();
  
  // 返回获取到的用户信息给原生
  callback(userInfo);
});

// 假设页面上有一个按钮,点击按钮时调用原生的方法
document.getElementById('btn').addEventListener('click', function() {
  // 发送消息到原生
  JSBridge.sendMessageToNative('showAlert', { title: 'Hello', message: 'World' });
});
Nach dem Login kopieren
  1. 在原生环境中实现与前端交互的功能和逻辑。示例代码如下:
// 在iOS原生代码中

import WebKit

class ViewController: UIViewController {
  var webView: WKWebView!

  override func viewDidLoad() {
    super.viewDidLoad()
    
    // 创建WebView
    webView = WKWebView(frame: CGRect(x: 0, y: 0, width: view.bounds.width, height: view.bounds.height))
    view.addSubview(webView)
    
    // 加载uniapp的HTML文件
    if let url = Bundle.main.url(forResource: "uniapp", withExtension: "html") {
      webView.loadFileURL(url, allowingReadAccessTo: url)
    }
    
    // 注册JSBridge处理函数,用于处理前端发送来的消息
    webView.configuration.userContentController.add(self, name: "getUserInfo")
    webView.configuration.userContentController.add(self, name: "showAlert")
  }
}

extension ViewController: WKScriptMessageHandler {
  func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
    if let body = message.body as? [String: Any] {
      let name = message.name
      
      if name == "getUserInfo" {
        print("原生收到getUserInfo消息:", body)
        
        // TODO: 获取原生的用户信息
        
        // 返回用户信息给前端
        let userInfo = [
          "name": "John",
          "age": 20
        ]
        let response = [
          "data": userInfo
        ]
        let javascript = "window.handleMessageFromNative((response))"
        webView.evaluateJavaScript(javascript, completionHandler: nil)
      }
      else if name == "showAlert" {
        print("原生收到showAlert消息:", body)
        
        // 假设实现一个弹窗功能
        let title = body["title"] as? String ?? ""
        let message = body["message"] as? String ?? ""
        let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
        alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
        present(alertController, animated: true, completion: nil)
      }
    }
  }
}
Nach dem Login kopieren

三、使用JSBridge进行前端与原生交互

通过上述的步骤,我们已经实现了基本的JSBridge桥梁和消息处理函数。在前端代码中,我们可以调用JSBridge.sendMessageToNative()方法向原生发送消息,同时也可以注册对应的消息处理函数,如示例中的JSBridge.registerHandler()。在原生代码中,我们通过userContentController.add()方法注册处理函数,用于接收前端发送的消息,并实现相应的功能。

在页面中,当点击按钮时,调用JSBridge.sendMessageToNative('showAlert', { title: 'Hello', message: 'World' })方法发送消息到原生,原生接收到消息后,弹出一个带有标题和内容的弹窗。另外,当前端需要获取用户信息时,调用JSBridge.sendMessageToNative('getUserInfo')

rrreee

    Implementieren Sie die Funktionen und die Logik der Interaktion mit dem Frontend in der nativen Umgebung. Der Beispielcode lautet wie folgt:

    rrreee

    3. Verwenden Sie JSBridge für Front-End- und native Interaktion 🎜🎜Durch die oben genannten Schritte haben wir die grundlegenden JSBridge-Bridge- und Nachrichtenverarbeitungsfunktionen implementiert. Im Front-End-Code können wir die Methode JSBridge.sendMessageToNative() aufrufen, um Nachrichten nativ zu senden, und wir können auch die entsprechende Nachrichtenverarbeitungsfunktion registrieren, z. B. JSBridge.registerHandler() im Beispielcode>. Im nativen Code registrieren wir die Verarbeitungsfunktion über die Methode userContentController.add(), um die vom Frontend gesendeten Nachrichten zu empfangen und die entsprechenden Funktionen zu implementieren. 🎜🎜Wenn auf der Seite auf die Schaltfläche geklickt wird, rufen Sie die Methode JSBridge.sendMessageToNative('showAlert', { title: 'Hello', message: 'World' }) auf, um die Nachricht an die zu senden native, und der native erhält sie. Nach der Nachricht wird ein Popup-Fenster mit Titel und Inhalt angezeigt. Wenn das Front-End Benutzerinformationen abrufen muss, ruft es außerdem die Methode JSBridge.sendMessageToNative('getUserInfo') auf, um eine Nachricht an den Native zu senden Das Frontend ruft die Daten über die Rückruffunktion ab und verarbeitet sie. 🎜🎜Zusammenfassend lässt sich sagen, dass mit JSBridge die Interaktion zwischen Uniapp und der nativen Umgebung problemlos realisiert und eigene Funktionen und Logik im Front-End bzw. nativ implementiert werden können. Durch die Registrierung von Nachrichtenverarbeitungsfunktionen können Nachrichten flexibel zugestellt und verarbeitet werden. 🎜🎜Das Obige ist eine kurze Einführung und Codebeispiele zur Verwendung von JSBridge zur Implementierung nativer Interaktion. Ich hoffe, es wird Ihnen hilfreich sein. 🎜

Das obige ist der detaillierte Inhalt vonWie nutzt die Uniapp-Implementierung JSBridge für die Interaktion mit Native?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So starten Sie die Vorschau des von Webstorm entwickelten Uniapp-Projekts So starten Sie die Vorschau des von Webstorm entwickelten Uniapp-Projekts Apr 08, 2024 pm 06:42 PM

Schritte zum Starten der UniApp-Projektvorschau in WebStorm: Installieren Sie das UniApp Development Tools-Plugin. Verbinden Sie sich mit den Geräteeinstellungen. WebSocket-Startvorschau

Was ist besser, Uniapp oder Mui? Was ist besser, Uniapp oder Mui? Apr 06, 2024 am 05:18 AM

Im Allgemeinen ist Uni-App besser, wenn komplexe native Funktionen benötigt werden; MUI ist besser, wenn einfache oder stark angepasste Schnittstellen benötigt werden. Darüber hinaus bietet die Uni-App: 1. Vue.js/JavaScript-Unterstützung; 2. Umfangreiche native Komponenten/API; 3. Gutes Ökosystem. Die Nachteile sind: 1. Leistungsprobleme; 2. Schwierigkeiten bei der Anpassung der Benutzeroberfläche. MUI bietet: 1. Materialdesign-Unterstützung; 2. Hohe Flexibilität; 3. Umfangreiche Komponenten-/Themenbibliothek. Die Nachteile sind: 1. CSS-Abhängigkeit; 2. Bietet keine nativen Komponenten; 3. Kleines Ökosystem.

Aktivieren Sie die Split-Screen-Interaktion in Win11 Aktivieren Sie die Split-Screen-Interaktion in Win11 Dec 25, 2023 pm 03:05 PM

Im Win11-System können wir durch Aktivieren der Split-Screen-Interaktion mehreren Monitoren ermöglichen, dasselbe System zu verwenden und zusammenzuarbeiten. Viele Freunde wissen jedoch nicht, wie man die Split-Screen-Interaktion einschaltet Die Systemeinstellungen sind: Steh auf und lerne. So öffnen Sie die Split-Screen-Interaktion in Win11 1. Klicken Sie auf das Startmenü und suchen Sie nach „Einstellungen“. 2. Suchen Sie dort dann nach den „System“-Einstellungen. 3. Wählen Sie nach Eingabe der Systemeinstellungen links „Anzeige“ aus. 4. Wählen Sie dann in den Mehrfachanzeigen rechts „Diese Anzeigen erweitern“.

Welche Entwicklungstools verwendet Uniapp? Welche Entwicklungstools verwendet Uniapp? Apr 06, 2024 am 04:27 AM

UniApp verwendet HBuilder

Was sind die Nachteile von uniapp Was sind die Nachteile von uniapp Apr 06, 2024 am 04:06 AM

UniApp bietet als plattformübergreifendes Entwicklungsframework viele Vorteile, aber auch seine Mängel liegen auf der Hand: Die Leistung wird durch den hybriden Entwicklungsmodus eingeschränkt, was zu einer schlechten Öffnungsgeschwindigkeit, Seitenwiedergabe und interaktiven Reaktion führt. Das Ökosystem ist unvollkommen und es gibt nur wenige Komponenten und Bibliotheken in bestimmten Bereichen, was die Kreativität und die Realisierung komplexer Funktionen einschränkt. Kompatibilitätsprobleme auf verschiedenen Plattformen können zu Stilunterschieden und inkonsistenter API-Unterstützung führen. Der Sicherheitsmechanismus von WebView unterscheidet sich von nativen Anwendungen, was die Anwendungssicherheit beeinträchtigen kann. Anwendungsversionen und -aktualisierungen, die mehrere Plattformen gleichzeitig unterstützen, erfordern mehrere Kompilierungen und Pakete, was zu höheren Entwicklungs- und Wartungskosten führt.

Welche Grundlagen sind zum Erlernen von uniapp erforderlich? Welche Grundlagen sind zum Erlernen von uniapp erforderlich? Apr 06, 2024 am 04:45 AM

Die Uniapp-Entwicklung erfordert die folgenden Grundlagen: Front-End-Technologie (HTML, CSS, JavaScript) Kenntnisse in der mobilen Entwicklung (iOS- und Android-Plattformen) Node.js andere Grundlagen (Versionskontrolltools, IDE, mobiler Entwicklungssimulator oder Erfahrung im echten Maschinen-Debugging)

Was ist besser: Uniapp oder native Entwicklung? Was ist besser: Uniapp oder native Entwicklung? Apr 06, 2024 am 05:06 AM

Bei der Wahl zwischen UniApp und nativer Entwicklung sollten Sie Entwicklungskosten, Leistung, Benutzererfahrung und Flexibilität berücksichtigen. Die Vorteile von UniApp sind plattformübergreifende Entwicklung, schnelle Iteration, einfaches Lernen und integrierte Plug-Ins, während die native Entwicklung in Bezug auf Leistung, Stabilität, native Erfahrung und Skalierbarkeit überlegen ist. Wägen Sie die Vor- und Nachteile basierend auf den spezifischen Projektanforderungen ab. UniApp eignet sich für Anfänger, und die native Entwicklung eignet sich für komplexe Anwendungen, die eine hohe Leistung und ein nahtloses Erlebnis anstreben.

Was ist der Unterschied zwischen Uniapp und Flattern? Was ist der Unterschied zwischen Uniapp und Flattern? Apr 06, 2024 am 04:30 AM

UniApp basiert auf Vue.js und Flutter basiert auf Dart. Beide unterstützen die plattformübergreifende Entwicklung. UniApp bietet umfangreiche Komponenten und eine einfache Entwicklung, seine Leistung ist jedoch durch WebView eingeschränkt. Flutter verwendet eine native Rendering-Engine mit hervorragender Leistung, ist jedoch schwieriger zu entwickeln. UniApp hat eine aktive chinesische Community und Flutter hat eine große und globale Community. UniApp eignet sich für Szenarien mit schneller Entwicklung und geringen Leistungsanforderungen; Flutter eignet sich für komplexe Anwendungen mit hoher Anpassungsfähigkeit und hoher Leistung.

See all articles