Maison > interface Web > Tutoriel H5 > Comment HTML5 et les applications natives interagissent-elles ?

Comment HTML5 et les applications natives interagissent-elles ?

不言
Libérer: 2018-10-22 16:55:50
avant
8925 Les gens l'ont consulté

Le contenu de cet article concerne la manière dont HTML5 et les applications natives interagissent ? Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

Le principe d'interaction entre h5 et l'application native

Désormais, les applications Web mobiles doivent souvent interagir et communiquer avec des applications natives (exécutées en vue Web), telles que jssdk de WeChat appelle certaines fonctions d'application natives via l'objet window.wx. Examinons donc cette fois les principes d’interaction entre h5 et les applications natives.

L'interaction entre h5 et l'application native est essentiellement constituée de deux types d'appels :

  1. l'application appelle le code h5

  2. code h5 application appelant

1. application appelant le code h5

Parce que l'application est l'hôte et peut accéder directement à h5, donc cet appel est relativement simple. , qui consiste à exposer certains objets globaux (y compris les méthodes) dans h5, puis à appeler ces objets dans l'application native. &roid

Comment HTML5 et les applications natives interagissent-elles ?

ios

window.sdk = {
  double = value => value * 2,
  triple = value => value * 3,
};
Copier après la connexion
2. Code h5 pour appeler l'application

Comme h5 ne peut pas accéder directement à l'application hôte, cet appel est relativement compliqué. Il existe deux manières courantes d'appeler cela :

webview.evaluateJavascript('window.sdk.double(10)', new ValueCallback<string>() {
  @Override
  public void onReceiveValue(String s) {
    // 20
  }
});</string>
Copier après la connexion

L'application injecte un objet js global dans h5, puis accède directement à cet objet dans h5

H5 lance une demande de protocole personnalisé Une fois que l'application a intercepté la demande, l'application appelle la fonction de rappel dans h5
NSString *func = @"window.sdk.double(10)";
NSString *str = [webview stringByEvaluatingJavaScriptFromString:func]; // 20
Copier après la connexion

2.1 De l'application à h5 Injecting. un objet js global

Cette méthode a un mécanisme de communication simple et est plus facile à comprendre, et il n'y a rien de nouveau pour h5, c'est donc une méthode plus recommandée. Mais cette méthode peut présenter des risques de sécurité. Découvrez en détail les vulnérabilités d’utilisation d’Android WebView que vous ne connaissez pas.

  1. android

ios

Comment HTML5 et les applications natives interagissent-elles ?

javascript

webview.addJavascriptInterface(new Object() {
  @JavascriptInterface
  public int double(value) {
    return value * 2;
  }
  
  @JavascriptInterface
  public int triple(value) {
    return value * 3;
  }
}, "appSdk");
Copier après la connexion
2.2 Lancement d'une requête de protocole personnalisé par h5

Cette méthode est un peu plus compliquée car elle nécessite un protocole personnalisé, ce qui est relativement nouveau pour de nombreux développeurs front-end. Cette méthode n’est donc généralement pas recommandée et peut être utilisée en complément de la première méthode. Les étapes suivantes sont grossièrement requises :

NSString *scripts = @"window.appSdk = {double: value => value * 2, triple: value => value * 3}";
[webview stringByEvaluatingJavaScriptFromString:scripts];
Copier après la connexion

Le protocole est personnalisé par l'application, comme sdk://action?params

Définissez la fonction de rappel dans h5, telle que window.bridge = {getDouble: value => {}, getTriple: value => {}}
window.appSdk.double(10); // 20
Copier après la connexion

Initié par h5 Une requête de protocole personnalisé, telle que location.href = 'sdk://double?value=10'

Une fois que l'application a intercepté cette requête, elle effectue l'opération correspondante et obtient la valeur de retour
  1. La fonction de rappel dans h5 est appelée par l'application, comme window.bridge.getDouble(20);

  2. javascript


  3. android

Comment HTML5 et les applications natives interagissent-elles ?

ios

window.bridge = {
  getDouble: value => {
    // 20
  }, 
  getTriple: value => {
    // more  
  }
};

location.href = 'sdk://double?value=10';
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal