1 ionic插件定义
1.1 安装plugman
npm install -g plugman
1.2 plugman安装完成之后创建cordova plugin
plugman create --name [插件名] --plugin_id [插件ID] --plugin_version [插件版本号]
例如:plugman create --name ProgressManager --plugin_id cordova-plugin-progressmanager --plugin_version 1.0.1
1.3 为插件添加ios
平台
plugman platform add --platform_name ios

1.4 编写ios代码
1.4.1创建ionicdemo项目
ionic start demo
1.4.2 ionic添加ios平台
ionic cordova prepare ios
运行结果如下,并且用xcode打开

1.4.3 编写ios代码,继承CDVPlugin

- (void)getFaceResultInfo:(CDVInvokedUrlCommand*)command{
FDDWebVC *webViewController = [[FDDWebVC alloc]init];
webViewController.HKFaceResultBlock = ^(NSDictionary * _Nonnull result) {
//发送回调
CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:result];
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
};
webViewController.wbfacebaseURLString = command.arguments[0];
webViewController.appid = command.arguments[1];
webViewController.linence = command.arguments[2];
webViewController.signurlStr = command.arguments[3];
webViewController.urlStr = command.arguments[4];
[[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:webViewController animated:YES completion:^{}];
}
1.5 配置plugin.xml文件
<?xml version='1.0' encoding='utf-8'?>
<plugin id="cordova-plugin-FaceHandle" version="1.0.1"
xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android">
<name>HuaKeFaceHandle</name>
<js-module name="HuaKeFaceHandle" src="www/HuaKeFaceHandle.js">
<clobbers target="cordova.plugins.HuaKeFaceHandle" />
</js-module>
<platform name="ios">
<config-file parent="/*" target="config.xml">
<feature name="HuaKeFaceHandle">
<param name="ios-package" value="HuaKeFaceHandle" />
</feature>
</config-file>
<!-- 申请权限配置 -->
<config-file target="-Info.list" parent="NSCameraUsageDescription">
<string>我们需要访问你的相机</string>
</config-file>
<config-file target="-Info.list" parent="NSMicrophoneUsageDescription">
<string>我们需要访问你的麦克风</string>
</config-file>
<!-- 插件源文件 -->
<header-file src="src/ios/class/HuaKeFaceHandle.h"/>
<source-file src="src/ios/class/HuaKeFaceHandle.m"/>
<!-- 插件依赖的ios平台库 -->
<framework src="libc++.tbd" />
<framework src="UIKit.framework" weak="true"/>
<framework src="AVFoundation.framework" weak="true"/>
<framework src="MobileCoreServices.framework" weak="true"/>
<framework src="CoreVideo.framework" weak="true"/>
<framework src="Accelerate.framework" weak="true"/>
<framework src="Security.framework" weak="true"/>
<framework src="SystemConfiguration.framework" weak="true"/>
<framework src="CoreMedia.framework" weak="true"/>
<framework src="AudioToolbox.framework" weak="true"/>
<framework src="CoreTelephony.framework" weak="true"/>
<framework src="ImageIO.framework" weak="true"/>
<framework src="WebKit.framework" weak="true"/>
<framework src="CoreLocation.framework" weak="true"/>
<!-- 插件依赖的第三方库 -->
<header-file src="src/ios/framework/SDK/FDDWebVC.h"/>
<source-file src="src/ios/framework/SDK/FDDWebVC.m"/>
<header-file src="src/ios/framework/SDK/Tools/WBCloudFaceNetManager.h"/>
<source-file src="src/ios/framework/SDK/Tools/WBCloudFaceNetManager.m"/>
<!-- 华科人脸识别 bundle-->
<resource-file src="src/ios/framework/SDK/bundles/detector_wb.bundle"/>
<resource-file src="src/ios/framework/SDK/bundles/PEDat_wb.bundle"/>
<resource-file src="src/ios/framework/SDK/bundles/ufa_wb.bundle"/>
<resource-file src="src/ios/framework/SDK/bundles/WBCloudReflectionFaceVerify.bundle"/>
<!-- 华科人脸识别 Framework-->
<framework src="src/ios/framework/SDK/sdks/faceLiveReflect.framework" custom="true" />
<framework src="src/ios/framework/SDK/sdks/NextCV.framework" custom="true" />
<framework src="src/ios/framework/SDK/sdks/rapidnet_ios.framework" custom="true" />
<framework src="src/ios/framework/SDK/sdks/WBCloudReflectionFaceVerify.framework" custom="true" />
<framework src="src/ios/framework/SDK/sdks/YTCommon.framework" custom="true" />
<framework src="src/ios/framework/SDK/sdks/YTIllumination.framework" custom="true" />
<framework src="src/ios/framework/SDK/sdks/YTPoseDetector.framework" custom="true" />
<framework src="src/ios/framework/SDK/sdks/YTTrackPro.framework" custom="true" />
<!-- SVProgressHUD第三方库-->
<header-file src="src/ios/framework/SDK/verdors/SVProgressHUD/SVIndefiniteAnimatedView.h"/>
<source-file src="src/ios/framework/SDK/verdors/SVProgressHUD/SVIndefiniteAnimatedView.m"/>
<header-file src="src/ios/framework/SDK/verdors/SVProgressHUD/SVProgressAnimatedView.h"/>
<source-file src="src/ios/framework/SDK/verdors/SVProgressHUD/SVProgressAnimatedView.m"/>
<header-file src="src/ios/framework/SDK/verdors/SVProgressHUD/SVProgressHUD.h"/>
<source-file src="src/ios/framework/SDK/verdors/SVProgressHUD/SVProgressHUD.m"/>
<header-file src="src/ios/framework/SDK/verdors/SVProgressHUD/SVRadialGradientLayer.h"/>
<source-file src="src/ios/framework/SDK/verdors/SVProgressHUD/SVRadialGradientLayer.m"/>
<header-file src="src/ios/framework/SDK/verdors/SVProgressHUD/SVProgressHUD-Prefix.pch"/>
<resource-file src="src/ios/framework/SDK/verdors/SVProgressHUD/SVProgressHUD.bundle"/>
<!-- AFNetworking第三方库-->
<header-file src="src/ios/framework/SDK/verdors/AFNetworking/AFNetworking.h"/>
<header-file src="src/ios/framework/SDK/verdors/AFNetworking/AFCompatibilityMacros.h"/>
<header-file src="src/ios/framework/SDK/verdors/AFNetworking/AFHTTPSessionManager.h"/>
<source-file src="src/ios/framework/SDK/verdors/AFNetworking/AFHTTPSessionManager.m"/>
<header-file src="src/ios/framework/SDK/verdors/AFNetworking/AFNetworkReachabilityManager.h"/>
<source-file src="src/ios/framework/SDK/verdors/AFNetworking/AFNetworkReachabilityManager.m"/>
<header-file src="src/ios/framework/SDK/verdors/AFNetworking/AFSecurityPolicy.h"/>
<source-file src="src/ios/framework/SDK/verdors/AFNetworking/AFSecurityPolicy.m"/>
<header-file src="src/ios/framework/SDK/verdors/AFNetworking/AFURLRequestSerialization.h"/>
<source-file src="src/ios/framework/SDK/verdors/AFNetworking/AFURLRequestSerialization.m"/>
<header-file src="src/ios/framework/SDK/verdors/AFNetworking/AFURLResponseSerialization.h"/>
<source-file src="src/ios/framework/SDK/verdors/AFNetworking/AFURLResponseSerialization.m"/>
<header-file src="src/ios/framework/SDK/verdors/AFNetworking/AFURLSessionManager.h"/>
<source-file src="src/ios/framework/SDK/verdors/AFNetworking/AFURLSessionManager.m"/>
<header-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/AFAutoPurgingImageCache.h"/>
<source-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/AFAutoPurgingImageCache.m"/>
<header-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/AFImageDownloader.h"/>
<source-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/AFImageDownloader.m"/>
<header-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/AFNetworkActivityIndicatorManager.h"/>
<source-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/AFNetworkActivityIndicatorManager.m"/>
<header-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/UIActivityIndicatorView+AFNetworking.h"/>
<source-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/UIActivityIndicatorView+AFNetworking.m"/>
<header-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/UIButton+AFNetworking.h"/>
<source-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/UIButton+AFNetworking.m"/>
<header-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/UIImage+AFNetworking.h"/>
<header-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/UIImageView+AFNetworking.h"/>
<source-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/UIImageView+AFNetworking.m"/>
<header-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/UIKit+AFNetworking.h"/>
<header-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/UIProgressView+AFNetworking.h"/>
<source-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/UIProgressView+AFNetworking.m"/>
<header-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/UIRefreshControl+AFNetworking.h"/>
<source-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/UIRefreshControl+AFNetworking.m"/>
<header-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/UIWebView+AFNetworking.h"/>
<source-file src="src/ios/framework/SDK/verdors/UIKitAFNetworking/UIWebView+AFNetworking.m"/>
<!-- YYModel第三方库-->
<header-file src="src/ios/framework/SDK/verdors/YYModel/NSObject+YYModel.h"/>
<source-file src="src/ios/framework/SDK/verdors/YYModel/NSObject+YYModel.m"/>
<header-file src="src/ios/framework/SDK/verdors/YYModel/YYClassInfo.h"/>
<source-file src="src/ios/framework/SDK/verdors/YYModel/YYClassInfo.m"/>
<header-file src="src/ios/framework/SDK/verdors/YYModel/YYModel.h"/>
<!-- ISMessages第三方库-->
<header-file src="src/ios/framework/SDK/verdors/ISMessages/Classes/ISMessages.h"/>
<source-file src="src/ios/framework/SDK/verdors/ISMessages/Classes/ISMessages.m"/>
<resource-file src="src/ios/framework/SDK/verdors/ISMessages/Assets/isErrorIcon.png"/>
<resource-file src="src/ios/framework/SDK/verdors/ISMessages/Assets/isErrorIcon@2x.png"/>
<resource-file src="src/ios/framework/SDK/verdors/ISMessages/Assets/isErrorIcon@3x.png"/>
<resource-file src="src/ios/framework/SDK/verdors/ISMessages/Assets/isInfoIcon.png"/>
<resource-file src="src/ios/framework/SDK/verdors/ISMessages/Assets/isInfoIcon@2x.png"/>
<resource-file src="src/ios/framework/SDK/verdors/ISMessages/Assets/isInfoIcon@3x.png"/>
<resource-file src="src/ios/framework/SDK/verdors/ISMessages/Assets/isSuccessIcon.png"/>
<resource-file src="src/ios/framework/SDK/verdors/ISMessages/Assets/isSuccessIcon@2x.png"/>
<resource-file src="src/ios/framework/SDK/verdors/ISMessages/Assets/isSuccessIcon@3x.png"/>
<resource-file src="src/ios/framework/SDK/verdors/ISMessages/Assets/isWarningIcon.png"/>
<resource-file src="src/ios/framework/SDK/verdors/ISMessages/Assets/isWarningIcon@2x.png"/>
<resource-file src="src/ios/framework/SDK/verdors/ISMessages/Assets/isWarningIcon@3x.png"/>
<!-- 新增 -->
<header-file src="src/ios/framework/SDK/EncryptionTool/FDDNetworking.h"/>
<source-file src="src/ios/framework/SDK/EncryptionTool/FDDNetworking.m"/>
<header-file src="src/ios/framework/SDK/EncryptionTool/BASE64Tool/FDBase64Tool.h"/>
<source-file src="src/ios/framework/SDK/EncryptionTool/BASE64Tool/FDBase64Tool.m"/>
<header-file src="src/ios/framework/SDK/EncryptionTool/MD5/NSString+FDMD5.h"/>
<source-file src="src/ios/framework/SDK/EncryptionTool/MD5/NSString+FDMD5.m"/>
<header-file src="src/ios/framework/SDK/EncryptionTool/SHA1Tool/NSString+FDSHA1.h"/>
<source-file src="src/ios/framework/SDK/EncryptionTool/SHA1Tool/NSString+FDSHA1.m"/>
</platform>
</plugin>
1.6 编写js代码
var exec = require('cordova/exec');
exports.getFaceResultInfo = function (arg0,arg1,arg2,arg3,arg4, success, error) {
exec(success, error, 'HuaKeFaceHandle', 'getFaceResultInfo', [arg0,arg1,arg2,arg3,arg4]);
};
我们还需要一个package.json文件
npm init
2 ionic插件使用
2.1添加ios平台
ionic cordova prepare ios
2.2添加插件
ionic cordova plugin add 插件的本地地址
2.3 插件调用
头部声明
declare let cordova: any;
调⽤用⽅方法
cordova.plugins.HuaKeFaceHandle.getFaceResultInfo("插件测 试",result=>alert(JSON.stringify(result)),error=>alert(JSON.stringify(error)));
2.4 解决xcode报错信息
Xcode-> Build Settings-> C Language Dialect修改配置,C99改为GNU99
网友评论