[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. win7+IIS7下木有4.0框架问题的解决方案

  2. IOS开发资料汇总

    1 IOS账号注册.程序发布流程 1)http://jamesli.cn/blog/?p=955 2)http://jamesli.cn/blog/?p=966 3)http://jamesli.cn ...

  3. Java设计模式之建造者模式(Builder)

    前言: 最近一直在学习okHttp,也对其做了一些整理,okHttp和Retrofit结合大大加速我们的开发效率,源码里面采用了很多设计模式,今天我们来学习一下其中的设计模式之一建造者模式. 建造者模 ...

  4. 借助node实战JSONP跨域

    一.前言: 浏览器安全是基于同源策略的.所谓同源策略就是三相同: 1.协议相同: 2.域名相同: 3.端口相同. 但,凡事都是有利弊,同源策略也导致了我们想用AJAX跨域请求,但NO!!为了规避这种限 ...

  5. 使用SPIRE.XLS来创建Excel 工作簿

               使用SPIRE.XLS来创建Excel 工作簿     概要 最近在研究 .NET 控件,使用这些控件在程序中可以快速低成本实现功能. 在这一篇中我们使用的控件是Spire.XL ...

  6. 浅析Openflow

    这应该算是我在博客园的第一篇技术性的文章. OH,不,这不是一篇技术性的文章,只是一篇很好玩的浅显分析接触到的技术的文章.只是个人的理解,并没有任何的代码和执行的操作.初次带来的,是从08年开始火起来 ...

  7. 数据库SQL Service 2014中文版的安装和配置教程

    一.我的电脑环境 1.windows8.1(64位) 2.之前电脑没有安装数据库的软件 二.装机之前准备(我这儿提供百度云保存和下载) 1.下载一个“Sql service 2014中文版” http ...

  8. jQuery-1.9.1源码分析系列(十四) 一些jQuery工具

    为了给下一章分析动画处理做准备,先来看一下一些工具.其中队列工具在动画处理中被经常使用. jQuery.fn. queue(([ queueName ] [, newQueue ]) || ([ qu ...

  9. ASP.NET MVC post请求接收参数的三种方式

    1.在控制器中建立一个PostDemo方法,建立视图创建一个表单 <h2>PostDemo</h2> name的值:@ViewBag.name <br /> nam ...

  10. Nancy之区域和分部视图的使用

    一.前言 在MVC中,区域(Area)和分部视图(PartialView)应该是我们用的十分频繁的两个东西 今天我们就在Nancy中,把这两个东西简单的用起来!   二.简单使用之区域 区域,无论是对 ...