
本文是将前文的口令验证功能封装成插件,所以最终实现的功能是一样的。即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)
}
} |
(2)hangge-swift-plugin.js
JS模块文件,这里封装了插件的调用方法,这样在页面中使用的时候更加方便。
比如前文我们通过 Cordova.exec() 来调用 Swift 代码,这里我们使用 插件名称.插件方法() 即可,这样使用起来更加方便,代码也更加清晰。其内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
'use strict' ;
var exec = require( 'cordova/exec' );
var HanggeSwiftPlugin = {
verifyPassword: function (sendMsg, onSuccess, onFail) {
return exec(onSuccess, onFail, 'HanggeSwiftPlugin' , 'verifyPassword' , [sendMsg]);
}
}; module.exports = HanggeSwiftPlugin; |
(3)plugin.xml
插件的配置文件。用来配置插件的名字,JS模块文件位置,以及各个平台的功能实现源码位置(这里只实现的iOS的验证功能,所以只配置了iOS平台相关内容)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<? xml version = "1.0" encoding = "UTF-8" ?>
id = "hangge-swift-plugin"
version = "0.1" >
< name >HanggeSwiftPlugin</ name >
< description >This plugin use to verify password</ description >
< js-module src = "hangge-swift-plugin.js" >
< clobbers target = "window.HanggeSwiftPlugin" />
</ js-module >
<!-- iOS -->
< platform name = "ios" >
< config-file target = "config.xml" parent = "/*" >
< feature name = "HanggeSwiftPlugin" >
< param name = "ios-package" value = "HWPHanggeSwiftPlugin" />
</ feature >
</ config-file >
< source-file src = "src/ios/HanggeSwiftPlugin.swift" />
</ platform >
</ plugin >
|
4,自定义插件的安装
封装好的插件我们通过 cordova plugin add 命令来安装,假设我们要给 HelloWorld 这个工程添加刚才做的那个自定义验证插件。
1
|
cordova plugin add cordova-plugin-add-swift-support |
(2)假设我们做的自定义插件是在用户“文稿”目录下,运行如下命令把这个插件添加到工程中来:
1
|
cordova plugin add ~/Documents/HanggeSwiftPlugin |
进入项目文件夹下的 plugins 文件夹可以看到,自定义插件已经成功的添加进来。当然,这个自定义插件在各个平台工程下也同步安装了。

(3)以后如果想移除这个自定义插件,运行如下命令即可:
1
|
cordova plugin rm hangge-swift-plugin |
5,自定义插件的使用
修改首页 index.html 为如下内容。
(1)我们还是可以通过Cordova.exec()来调用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
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> |
在“终端”中运行如下命令编译:
1
|
cordova build |
接着运行如下命令使用模拟器运行,即可看到效果:
1
|
cordova emulate ios |
(2)当然还是建议使用 模块名.模块方法() 的形式调用自定义插件
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
|
<!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;
//调用自定义的验证插件
HanggeSwiftPlugin.verifyPassword(password, successFunction, failFunction);
}
//验证成功
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> |
(3)回调方法可以使用匿名函数
1
2
3
4
5
6
7
8
9
10
11
|
//开始验证 function verify() {
//获取输入的口令
var password = document.getElementById( "pwd" ).value;
//调用自定义的验证插件
HanggeSwiftPlugin.verifyPassword(password,
function () { alert( "口令验证成功!" );},
function (message){
alert( "验证失败:" +message);
});
} |
(4)在使用自定义插件之前还可以判断下插件是否存在,以防报错
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
//开始验证 function verify() {
//获取输入的口令
var password = document.getElementById( "pwd" ).value;
//调用自定义的验证插件
if (window.HanggeSwiftPlugin) {
HanggeSwiftPlugin.verifyPassword(password,
function () { alert( "口令验证成功!" );},
function (message){
alert( "验证失败:" +message);
});
} else {
alert( "未安装验证插件!" );
}
} |
原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/blog/cache/detail_1152.html