Maison > Article > interface Web > Explication détaillée de l'interaction entre iOS et JS
Cette fois, je vous apporte trois points auxquels il faut prêter attention lors de l'interaction entre iOS et JS Quelles sont les précautions concernant l'interaction entre iOS et JS. Voici trois cas classiques. regardez-les. Levez-vous et jetez un œil.
1 Utilisez CocoaPods pour importer WebViewJavascriptBridge
Ici, nous utilisons la dernière version
pod 'WebViewJavascriptBridge', '~> '
Je n'entrerai pas dans les détails de la commande shell pour importer le projet ici.
2. Écrivez le code OC (vous pouvez d'abord écrire du code OC ou Js)
Introduisez le fichier d'en-tête #import "WebViewJavascriptBridge.h"
Créez deux Attributs
@property (nonatomic, strong) UIWebView * webView;@property WebViewJavascriptBridge* bridge; 初始化WebView和WebViewJavascriptBridge self.webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; [self.view addSubview:self.webView]; /**开启日志*/ [WebViewJavascriptBridge enableLogging]; /**初始化-WebViewJavascriptBridge*/ self.bridge = [WebViewJavascriptBridge bridgeForWebView:self.webView]; [self.bridge setWebViewDelegate:self];
3. JS appelle le code OC
AVIS : Avant d'écrire le code appelant ici, nous devons savoir que le nom de la fonction doit être connu dans le front-end. fonction js. C'est très important.
Ici, nous supposons qu'il existe une fonction nommée callViewLoad dans le front-end, qui appelle le code OC pour traiter les données renvoyées dans une liste.
Regardez comment le code OC gère les requêtes de Js
[self.bridge registerHandler:@"callViewLoad" handler:^(id data, WVJBResponseCallback réponseCallback) { NSLog (@"front-end Data sent%@", data); if (responseCallback) { // données qui répondent au front-end
réponseCallback (@{@"UName": @"blog technique de Zhouzhouge",@"URLS":@ "http ://www.jianshu.com/users/1338683b18e0/latest_articles"});
}
}];
Parlons de la description du paramètre ici
handler Le rappel a deux paramètres : data et réponseCallback
Les données sont les données transmises par la fonction front-end js au back-end : par exemple, lors de la connexion, les informations du compte et le mot de passe de l'utilisateur doivent être transmis dans le back-end. Pour le traitement back-end. Les données ici sont
qui stocke deux données. réponseCallback est le contenu des données que nous voulons renvoyer à la fonction js du front-end. Le front-end nous transmet le nom d'utilisateur et le mot de passe. nous renvoyons le résultat de la connexion au front-end. Utilisez-le. Mais il est renvoyé sous forme de dictionnaire.
À ce stade, notre JS appelle OC, et le code côté OC est terminé.
Comment écrire le code JS front-end
Comment écrire le code html
<html> <head> <title>OC和JS互动Web</title> <script> /*这段代码是固定的,必须要放到js中*/ function setupWebViewJavascriptBridge(callback) { if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); } if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); } window.WVJBCallbacks = [callback]; var WVJBIframe = document.createElement('iframe'); WVJBIframe.style.display = 'none'; WVJBIframe.src = 'wvjbscheme://BRIDGE_LOADED'; document.documentElement.appendChild(WVJBIframe); setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0) } /**与OC交互的所有JS方法都要放在此处注册,才能调用通过JS调用OC或者让OC调用这里的JS*/ setupWebViewJavascriptBridge(function(bridge) { /**OC调用JS代码不含参数*/ bridge.registerHandler('UserLogin', function() { alert('UserLogin') }) /**OC调用JS代码含参数*/ bridge.registerHandler('UserLoginInfo', function(data, responseCallback) { responseCallback({'userId': '123456', 'Names': 'ZHOUZHOUGEDEBOKE'}) }) // **********************************JS调用OC bridge.callHandler('callViewLoad', {'blogURL': 'http://www.henishuo.com'}, function(responseCallback){ alert(responseCallback.UName) }) }) </script> </head> <body> <button style = "background: yellow; height: 50px; width: 100px;">JS/OC互动</button> </body> </html>
Ici, nous examinons principalement la fonction callViewLoad dans le code html. C'est la preuve qu'il a appelé la fonction oc. Vous pouvez voir les paramètres dans le callHandler ici.
Le premier paramètre callViewLoad : nom de la fonction
{'blogURL' : 'http://www.henishuo.com'} : signifie The. données transmises par le code OC
fonction (responseCallback) : accepte la fonction JS qui renvoie avec succès Ici, nous pouvons la surveiller après le retour réussi du backend. Semblable au bloc OC.
Description de cette fonction : JS fournit une API publique à ObjC En s'inscrivant, le côté ObjC peut obtenir un rappel lors de l'appel de cette API côté JS. Le côté ObjC peut renvoyer à JS une fois le traitement terminé. De cette façon, il sera appelé en premier lorsque le chargement de la page est terminé.
AVIS : Nous parlons ici uniquement de la déclaration selon laquelle JS appelle le code OC. Je présente brièvement l'utilisation d'une méthode. Mais nous avons également vu que lors de l’écriture de fonctions JS frontales, il y a beaucoup de code à écrire. Sinon, il n’y aura pas d’effet commun.
Je pense que vous maîtrisez les méthodes après avoir lu ces cas. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !
Lecture connexe :
Chargement de la syntaxe du module ES6, import et export.
Solution à l'écart entre les balises d'image et de vue
Pourquoi les emplacements sont utilisés dans les sous-composants
Deux méthodes pour implémenter la disposition du flux en cascade
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!