美文网首页iOSiOS - CordovaIOS
使用Cordova开发iOS App -- 打包插件及JS脚本

使用Cordova开发iOS App -- 打包插件及JS脚本

作者: CatchZeng | 来源:发表于2016-09-22 21:48 被阅读4410次

上一篇--开发iOS插件中我们开发了一个插件,本篇将讲解如何将插件打包。

一、创建插件包

首先在桌面上创建一个文件夹com.catchzeng.testplugin(遵守命名规范),并创建子文件夹及子文件如下图,将插件的代码复制到ios文件夹下。


插件结构
插件结构

二、编写JS代码

编写testPlugin.js,向外部暴露testModel的testPlugin方法,这便是前端人员需要调用的接口。

var exec = require("cordova/exec");

function TestModel() {};

TestModel.prototype.testPlugin = function (success,fail,option) {
     exec(success, fail, 'testPlugin', 'testWithTitle', option);
};

var testModel = new TestModel();
module.exports = testModel;

三、配置plugin.xml文件

配置plugin.xml 就是为了告诉cordova我们的文件路径在哪,我们的oc类名是什么,oc对象名是什么,js类名及js对象名是什么等信息。这样cordova在安装插件时,才能找到正确的插件文件。

<?xml version="1.0" encoding="UTF-8" ?>
<plugin xmlns="http://phonegap.com/ns/plugins/1.0"
    id="com.catchzeng.testplugin"
    version="1.0.0">
    <engines>
        <engine name="cordova" version=">=3.3.0" />
    </engines>
    
    <name>testPlugin</name>
    <description>测试插件</description>
    
    <js-module src="www/testPlugin.js" name="testModel">
        <clobbers target="testModel" />
    </js-module>
    
    <platform name="ios">
        <source-file src="src/ios/TestPlugin.m" />
        <header-file src="src/ios/TestPlugin.h" />
        <source-file src="src/ios/TestViewController.m" />
        <header-file src="src/ios/TestViewController.h" />
        <resource-file src="src/ios/TestViewController.xib" />
        <resource-file src="src/ios/test.png" />
        
        <config-file target="config.xml" parent="/widget">
            
            <feature name="testPlugin">
                <param name="ios-package" value="TestPlugin" />
            </feature>
        </config-file>
    </platform>
</plugin>

参数说明:

  • id="com.catchzeng.testplugin" :插件id必须与文件夹名称相同
  • <js-module src="www/testPlugin.js" name="testModel">:此处配置js所在目录和调用的类(testModel)
  • <source-file>:标示插件所需的oc .m文件
  • <header-file>:标示插件所需的oc .h文件
  • <resource-file>:标示插件所需资源文件(图片、xib资源等)
  • <feature name="testPlugin"><param name="ios-package" value="TestPlugin" />:指明插件映射至ios的类名,此处的testPlugin便是对应到testPlugin.js exec(success, fail, 'testPlugin', 'testWithTitle', option); 中的testPlugin。

四、测试插件

新建一个Cordova项目,并添加iOS平台作为测试项目。


新建测试项目

添加插件到测试项目

cordova plugin add  xxxxxx
添加插件

修改工程项目的index.html


index.html
<!DOCTYPE html>
<html>
    <head>
        <title>TestPlugin</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 testPlugin() {
                testModel.testPlugin(alertSuccess,alertFail,["我是JS传来的参数!"]);
            }

            function alertSuccess(msg) {
                alert(msg);
            }

            function alertFail(msg) {
                alert('调用OC失败: ' + msg);
            }
            </script>
    </head>

    <body style="padding-top:50px">
        <button style="font-size:17px;" onclick="testPlugin();">调用iOS插件</button> <br>
    </body>
</html>

重新build iOS项目
cordova build ios

build

此时打开iOS工程后,运行程序便能得到看到插件的效果。


Plugin

将插件文件上传到git后,前端人员也可以使用git的方式安装我们编写的插件
cordova plugin add https://github.com/CatchZeng/com.catchzeng.testplugin

最后附上Demo地址:https://github.com/CatchZeng/com.catchzeng.testplugin

相关文章

网友评论

  • 3a601209eff1:请教个问题,就是js那边通过cordova.exec(参数),调用了一个原生中不存在的方法,然后卡住没有任何反馈了,有没有好一点的解决方案呢?
  • cl9000:请问我的生成平台为什么会自动生成***.xcworkspace
  • 不知蜕变的挣扎:Error: Invalid Plugin! /Users/admin/Desktop/com.catchzeng.testplugin needs a valid package.json
    直接从你的demo中托的插件,加入我新建的项目 会报错
    9b72ec6ef858:解决了么? 我是自己写的 也是一样的错误
  • WinterIsHere:大神 ,如果我的插件用了很多第三方库,比如afn mjrefresh等,那是不是要把这些库也拷贝src/ios目录下??
    WinterIsHere:@CatchZeng 所有的第三方库的。m和。h文件也都要在plugin.xml导入吧?
    CatchZeng:@ChenXJ陈鑫杰 是的
  • dcfbe7c67bf3:你好,请问如果在视图界面加个按钮,调用一个方法,在方法里面给一个参数赋值,然后传到html界面,该怎么传呢?这个问题困扰了好久,求帮助

本文标题:使用Cordova开发iOS App -- 打包插件及JS脚本

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