[Cordova] Plugin里使用iOS Framework

前言

开发Cordova Plugin的时候,在Native Code里使用第三方Library,除了可以加速项目的时程、也避免了重复发明轮子的窘境。本篇文章介绍如何在Cordova的Plugin里使用iOS Framework,主要为自己留个纪录,也希望能帮助到有需要的开发人员。

  • 参考数据:

建立

iOS中的第三方Library,除了可以从网络上取得之外,也可以依照下列文章的步骤,建立一个自己的iOS Framework:「MyFramework.framework」。后续步骤,会拿这个MyFramework.framework做为第三方Library来使用。

接着要动手撰写Cordova Plugin来使用iOS Framework,开发人员可以依照下列文章的步骤,建立一个自己的Cordova Plugin:「clk-cordova-sample」。后续步骤,会拿这个clk-cordova-sample做为Plugin主体来使用。

使用

完成上列两个步骤之后,开发人员会拥有Cordova Plugin:「clk-cordova-sample」、以及iOS Framework:「MyFramework.framework」。接着将MyFramework.framework放到clk-cordova-sample的src\iOS文件夹里,并且修改clk-cordova-sample的plugin.xml,定义Cordova编译的时候,将MyFramework.framework加入到平台项目的文件夹来进行编译。

  • 加入MyFramework.framework

    <framework src="src/ios/MyFramework.framework" custom="true" />
  • 完整plugin.xml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
    id="clk-cordova-sample"
    version="1.0.0"> <!-- metadata -->
    <name>CLK Cordova Sample</name>
    <description>CLK Cordova Sample的说明</description>
    <license>Apache 2.0</license> <!-- javascript -->
    <js-module name="NotificationService" src="www/clk.cordova.sample.NotificationService.js" >
    <clobbers target="clk.cordova.sample.NotificationService" />
    </js-module> <!-- ios -->
    <platform name="ios">
    <!-- config -->
    <config-file target="config.xml" parent="/*">
    <feature name="NotificationService">
    <param name="ios-package" value="CLKNotificationService"/>
    </feature>
    </config-file>
    <!-- source -->
    <header-file src="src/ios/CLKNotificationService.h" />
    <source-file src="src/ios/CLKNotificationService.m" />
    <framework src="src/ios/MyFramework.framework" custom="true" />
    </platform> </plugin>

完成上列步骤后,接着动手修改clk-cordova-sample里CLKNotificationService.m,来使用MyFramework.framework里面所提供的Class。

  • CLKNotificationService.m

    #import <MyFramework/MyFramework.h>
    #import "CLKNotificationService.h" @implementation CLKNotificationService // methods
    - (void)show:(CDVInvokedUrlCommand*)command
    {
    // test
    MyClass* x = [[MyClass alloc] init];
    NSString* message = [NSString stringWithFormat:@"%@%@", @"Hi ", [x getMessage]]; // execute
    [[[UIAlertView alloc] initWithTitle:nil message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show];
    } @end

接着,因为在iOS 8.0之后,iOS项目才支持Framework类型的函式库,所以要定义clk-cordova-sample里范例APP的目标iOS版本为8.0以上。

  • 目标iOS版本

最后,执行clk-cordova-sample里的范例APP。就可以在执行画面上,看到一个Alert窗口显示从Library取得的讯息内容,这也就完成了Cordova Plugin使用iOS Framework的相关开发步骤。

  • 显示回传讯息

Workaround

相对于Windows、Android等平台,iOS平台上APP的建置需要比较多的耐心与经验。建议开发人员在开发iOS平台Cordova APP的时候,先使用Visual Studio完成Cordova项目的开发工作,再选择Ripple来「执行」Cordova项目,用以在项目根目录下的platforms\ios文件夹里生成完整的XCode专案。后续拿这个XCode项目到MAC上去编译及执行,可以比较顺利建置iOS平台上的Cordova APP。

  • 建置Cordova专案

  • 生成XCode专案

将XCode项目到MAC上去编译及执行,还会遇到一些设定需要调整。首先就是先到XCode的项目属性页面,把Framework的参考加入到项目里。(如果将Framework项目Build Settings页签的Mach-O Type属性调整为「Static Library」可以省略此步骤 - 感谢同事小董提供方案)

  • Before

  • After

接着,还需要去调整XCode的项目属性页面,将Framework Search Paths属性调整为.framework档案所在的正确路径。 (上一个步骤,手动将Framework的参考加入到XCode项目里时,会自动带入Framework的正确路径,所以只要移除错误路径即可。)

  • Before

  • After

完成上列步骤后进行编译,理论上就可以完成iOS平台上Cordova APP的建置工作。(God bless you)

  • Succeeded

范例下载

范例程序代码:下载地址

[Cordova] Plugin里使用iOS Framework的更多相关文章

  1. [Cordova] Plugin里使用Android Library

    [Cordova] Plugin里使用Android Library 前言 开发Cordova Plugin的时候,在Native Code里使用第三方Library,除了可以加速项目的时程.也避免了 ...

  2. [Cordova] Plugin开发架构

    [Cordova] Plugin开发架构 问题情景 开发Cordova Plugin的时候,侦错Native Code是一件让人困扰的事情,因为Cordova所提供的错误讯息并没有那么的完整.常常需要 ...

  3. [Cordova] Plugin开发入门

    [Cordova] Plugin开发入门 Overview Cordova的设计概念,是在APP上透过Web控件来呈现Web页面,让Web开发人员可以操作熟悉的语言.工具来开发APP.使用Web页面来 ...

  4. ionic cordova plugin for ios

    源代码结构目录: payplugin: |_src |_android |_PayPlugin.java |_ios |_CDVPayPlugin.h |_CDVPayPlugin.m |_www | ...

  5. vue+cordova构建跨平台应用集成并使用Cordova plugin

    安装 //安装 vue-cil npm install --global vue-cli //安装cordova npm i cordova -g cordova 新建项目 //新建cordova 项 ...

  6. 在meteor中如何使用ionic组件tabs,及如何添加使用cordova plugin inappbrower

    更新框架: meteor update meteor框架的优点不言而喻,它大大减轻了App前后端开发的负担,今年5月又获得B轮2000万融资,代表了市场对它一个免费.开源开发框架的肯定.cordova ...

  7. cordova plugin汇总大全

    1.获取当前应用的版本号 cordova plugin add cordova-plugin-app-version 2.获取网络连接信息 cordova plugin add cordova-plu ...

  8. Cordova plugin

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010106153/article/details/53418528Cordova plugin工程 ...

  9. 使用Cordova搭建Andoid和iOS开发环境

    最近在了解cordova  ,下面的分享出来  大家可以看看,  我 有空也按照这个写写demo 1.下载node.js,进行安装 https://nodejs.org/en/ 2.安装cordova ...

随机推荐

  1. IDE:IDEA Commit Changes Dialog local changes refresh

    IDEA提交代码,一直卡着不动,显示:Commit Changes Dialog local changes refresh 修改方法为: go to settings - version contr ...

  2. jQuery 2.0.3 源码分析core - 整体架构

    拜读一个开源框架,最想学到的就是设计的思想和实现的技巧. 废话不多说,jquery这么多年了分析都写烂了,老早以前就拜读过, 不过这几年都是做移动端,一直御用zepto, 最近抽出点时间把jquery ...

  3. jQuery2.0.3源码分析系列(28) 元素大小

    最近的分析都是有点不温不火,基本都是基础的回顾了 今年博客的目标目前总的来说有2大块 JS版的设计模式,会用jQuery来诠释 JS版的数据结构,最近也一直在狠狠的学习中. HTML息息相关的的样式 ...

  4. WindowsError的错误代码详解

    0操作成功完成. 1功能错误. 2系统找不到指定的文件. 3系统找不到指定的路径. 4系统无法打开文件. 5拒绝访问. 6句柄无效. 7存储控制块被损坏. 8存储空间不足,无法处理此命令. 9存储控制 ...

  5. js实现图片轮播

    效果图

  6. 深入理解DOM节点类型第三篇——注释节点和文档类型节点

    × 目录 [1]注释节点 [2]文档类型 前面的话 把注释节点和文档类型节点放在一起是因为IE8-浏览器的一个bug.IE8-浏览器将标签名为"!"的元素视作注释节点,所以文档声明 ...

  7. 基于keepalived搭建MySQL的高可用集群

    MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Cluster 比较常用的是keepalived+双主,MHA和 ...

  8. Windows 使用 Yeoman generators 创建 ASP.NET 应用程序

    上一篇:<Windows 搭建 .NET 跨平台环境并运行应用程序> 阅读目录: Install Node.js Install yeoman-generators Create ASP. ...

  9. Java多线程系列目录(共43篇)

    最近,在研究Java多线程的内容目录,将其内容逐步整理并发布. (一) 基础篇 01. Java多线程系列--“基础篇”01之 基本概念 02. Java多线程系列--“基础篇”02之 常用的实现多线 ...

  10. CodeIgniter-Lottery - php ci 抽奖辅助函数

    CodeIgniter-Lottery - php ci 抽奖辅助函数 Github https://github.com/xjnotxj/CodeIgniter-Lottery 用法 1. 移入文件 ...