美文网首页iOS程序猿程序员
自定义ionic插件 - iOS

自定义ionic插件 - iOS

作者: _誌念 | 来源:发表于2019-03-05 15:35 被阅读11次

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
1111.png

1.4 编写ios代码

1.4.1创建ionicdemo项目

ionic start demo

1.4.2 ionic添加ios平台

ionic cordova prepare ios

运行结果如下,并且用xcode打开


gggg.png

1.4.3 编写ios代码,继承CDVPlugin


rrrr.png
- (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

相关文章

网友评论

    本文标题:自定义ionic插件 - iOS

    本文链接:https://www.haomeiwen.com/subject/mpdeuqtx.html