Cordova - 与iOS原生代码交互1(通过JS调用Swift方法)

1,样例说明
(1)虽然使用Cordova创建的工程是一个 OC 工程,但由于苹果可以很方便的支持混合编程,所以我们用 Swift 来实现与 JS 的交互也是可以的。
(2)这里我们使用Swift来做个口令验证的功能,由于只是演示,所以代码很简单。Swift这边接收传输过来的口令字符串,判断正确与否并反馈回页面。如果验证失败还会返回具体的失败原因信息。
2,样例效果图
(1)我们在 Plugins 文件夹中新建一个Swift文件(HanggeSwiftPlugin.swift)。创建的时候系统会提示是否同时创建桥接头文件,这里选择确定。

(2)在新生成的桥接头文件 HelloWorld-Bridging-Header.h 中把 Cordova/CDV.h 给 import 进来
|
1
|
#import <Cordova/CDV.h> |
(3)新建的 HanggeSwiftPlugin.swift 中添加如下代码
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import Foundation@objc(HWPHanggeSwiftPlugin) class HanggeSwiftPlugin : CDVPlugin { //验证口令方法 func verifyPassword(command:CDVInvokedUrlCommand) { //返回结果 var pluginResult:CDVPluginResult? //获取参数 let password = command.arguments[0] as? String //开始验证 if password == nil || password == "" { pluginResult = CDVPluginResult(status: CDVCommandStatus_ERROR, messageAsString: "口令不能为空") }else if password != "hangge" { pluginResult = CDVPluginResult(status: CDVCommandStatus_ERROR, messageAsString: "口令不正确") }else{ pluginResult = CDVPluginResult(status:CDVCommandStatus_OK) } //发送结果 self.commandDelegate.sendPluginResult(pluginResult, callbackId: command.callbackId) }} |
(4)在 config.xml 中添加如下配置,将我们创建的功能类给配置上
|
1
2
3
|
<feature name="HanggeSwiftPlugin"> <param name="ios-package" value="HWPHanggeSwiftPlugin" /></feature> |
(5)首页 index.html 代码如下,修改运行后即可看到效果。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
<!DOCTYPE html><html> <head> <title>口令验证</title> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <script type="text/javascript" charset="utf-8" src="cordova.js"></script> <script type="text/javascript" charset="utf-8"> //开始验证 function verify() { //获取输入的口令 var password = document.getElementById("pwd").value; //调用自定义的验证插件 Cordova.exec(successFunction, failFunction, "HanggeSwiftPlugin", "verifyPassword", [password]); } //验证成功 function successFunction(){ alert("口令验证成功!"); } //验证失败 function failFunction(message){ alert("验证失败:"+message); } </script> <style> * { font-size:1em; } </style> </head> <body style="padding-top:50px;"> <input type="text" id="pwd" > <button onclick="verify();">验证</button> </body></html> |
原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/blog/cache/detail_1150.html
Cordova - 与iOS原生代码交互1(通过JS调用Swift方法)的更多相关文章
- Cordova - 与iOS原生代码交互2(使用Swift开发Cordova的自定义插件)
在前一篇文章中我介绍了如何通过 js 与原生代码进行交互(Cordova - 与iOS原生代码交互1(通过JS调用Swift方法)),当时是直接对Cordova生成的iOS工程项目进行编辑操作的(添加 ...
- iOS JS 交互之利用系统JSContext实现 JS调用OC方法以及Objective-C调用JavaScript方法
ios js 交互分为两块: 1.oc调用js 这一块实现起来比较简单, 我的项目中加载的是本地的html,js,css,需要注意的是当你向工程中拖入这些文件时,选择拷贝到工程中,(拖入的文件夹是蓝色 ...
- iOS JS 交互之利用系统JSContext实现 JS调用oc方法
ios js 交互分为两块: 1.oc调用js 这一块实现起来比较简单, 我的项目中加载的是本地的html,js,css,需要注意的是当你向工程中拖入这些文件时,选择如下操作,(拖入的文件夹是蓝色的, ...
- [iOS Hybrid实践:UIWebView中Html中用JS调用OC方法,OC执行JS代码]
原理: 1.JS调用OC 每次webview执行跳转时都会被iOS给拦截,执行下面函数获得系统允许. 因此可以根据跳转信息转给系统,执行相应功能,比如打开相册等. // 网页中的每一个请求都会被触发 ...
- UIWebView中Html中用JS调用OC方法及OC执行JS代码
HTML代码: <html> <head> <title>HTML中用JS调用OC方法</title> <meta http-equiv=&quo ...
- cordova与ios native code交互的原理
非常早曾经写了一篇博客,总结cordova插件怎么调用到原生代码:cordova调用过程,只是写得太水.基本没有提到原理.近期加深了一点理解,又一次补充说明一下 js调用native 以下是我们产品中 ...
- unity调用ios原生代码objective-c和回调
从c#到objective-c学习 https://www.runoob.com/w3cnote/objective-c-tutorial.html https://www.jianshu.com/p ...
- Unity与iOS原生代码之间的相互调用
1.Unity调用iOS: 1.1.在Unity C#中: [ DllImport( "__Internal" )] private static extern int _show ...
- RN和IOS原生端交互
1.RCTBridgeModule #import <Foundation/Foundation.h> #import "RCTBridgeModule.h" #imp ...
随机推荐
- 网络热恋之json解析
现在的app开发很少有用到XML解析的了,主流的则是JSON. // // ViewController.m // CX-JSON解析(三方JSONKit-master) #import " ...
- 通过dubbo暴露接口调用方法,及基于zookeeper的dubbo涉及配置文件
现在很流行的Dubbo很多朋友都听说过吧,最近我也在看这方面的东西,分享先我的心得笔记. 先说说我们团队要做的项目框架,很简单重在实现基于zookeeper的dubbo注册. 框架:springmvc ...
- MVC数据库数据分页显示
首先从数据库获取数据 using System; using System.Collections.Generic; using System.Linq; using System.Web; usin ...
- 定做属于自己的Lodop安装程序
WEB控件Lodop自发布以来,受到广大开发人员的喜爱,从如下博文分析看看: http://blog.sina.com.cn/s/blog_721e77e501011nyb.html 无论是好评率还是 ...
- Amoeba for MySQL---分布式数据库Proxy解决方案
Amoeba是什么? Amoeba(变形虫)项目,致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy ...
- Mongodb源代码阅读笔记:Journal机制
Mongodb源代码阅读笔记:Journal机制 Mongodb源代码阅读笔记:Journal机制 涉及的文件 一些说明 PREPLOGBUFFER WRITETOJOURNAL WRITETODAT ...
- Linux运维常用命令总结
1.删除0字节文件 find -type f -size 0 -exec rm -rf {} \; 2.查看进程 按内存从大到小排列 PS -e -o "%C : %p : %z ...
- 安装mysql odbc遇到error 1918.errror installing ODBC driver mysql ODBC 5.3 ANSI Drive
环境:Windows server2008r2 安装mysql-connector-odbc-5.3.6-win32 报错 相信错误信息:Error 1918.errror installing OD ...
- java 生成 csv文件
一.csv文件 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是 ...
- JavaScript 产生指定范围随机数
function selectFrom(lowerValue, upperValue) { var choices = upperValue - lowerValue + 1; return Math ...