cordova 3.0以上ios自定义插件

<pre name="code" class="objc"><span style="font-size:14px;">搞了半个月Cordova插件,但一直没沉下心能弄。为了更好的理解Cordova插件的开发,今天自己写了一个Demo
先简单介绍一下,如不清楚Cordova是什么,有什么作用,可以移步问度娘《hybrid应用开发,Cordova框架》。其实Cordova的实现原理还是基于WebView截获URL(URL中包含类名和方法名以及参数),然后通过反射机制实现原生代码调用。
 好,先列举一下Custom Plugin的主要步骤和思路。

  1、安装Cordova环境。

  2、使用Cordova创建工程。

  3、打开IOS工程。

  //核心步骤

  4、编写OC原生代码插件类,需要继承自CDVPlugin父类。

  5、编写调用OC的JS层代码。

  6、编写顶级的Plugin.xml的插件配置文件。

</span><span style="font-size:18px;">干货来了,详细步骤说明。</span><span style="font-size:14px;">

  1、安装Cordova环境。

    这里就百度Cordova,上官网吧,步骤繁琐就不细说,比较简单。

  2、使用Cordova创建工程。

    Crodova create 是命令,后面跟三参数。

    cordova create 工程名(TestPlugin)    应用标识(com.liki.TestPlugin)   App名称Plugin

  3、打开IOS工程。

    工程路径在:当前创建工程路径 下的 platforms文件夹中。

  4、编写OC原生代码插件类,需要继承自CDVPlugin父类
5、将ios和Android原生的类文件拷贝相应目录。

   6、将写好的JS文件拷贝到www目录下

</span><span style="font-size:18px;"></span><pre name="code" class="objc"><span style="font-size:14px;">CeshiPlugin.h</span><span style="font-family: Arial, Helvetica, sans-serif;">文件</span>

#import <Cordova/CDV.h>@interface CeshiPlugin : CDVPlugin-(void)addstr:(CDVInvokedUrlCommand *)command;@end


<span style="font-size:14px;">
    **************我是分隔符***********************************
</span><span style="font-size:18px;">
</span>
<span style="font-size:18px;"></span><pre name="code" class="objc"><span style="font-size:14px;">CeshiPlugin.m</span><span style="font-family: Arial, Helvetica, sans-serif;">文件</span>

#import "CeshiPlugin.h"@implementation CeshiPlugin-(void)addstr:(CDVInvokedUrlCommand *)command{ //获取js传过来的值 CDVPluginResult *result=nil; NSString *ceshi1=[command.arguments objectAtIndex:0]; NSString
*ceshi2=[command.arguments objectAtIndex:1]; NSString *ceshi3=[command.arguments objectAtIndex:2]; if(ceshi1!=nil&&[ceshi1 length]>0&&[ceshi2 length]>0&&ceshi2!=nil&&ceshi3!=nil&&[ceshi3 length]>0) { //拼接字符串 NSString *addResult=[NSString stringWithFormat:@"%@%@%@",ceshi1,ceshi2,ceshi3];
result=[CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:addResult]; //传值(消息)到JS文件// [self.commandDelegate sendPluginResult:result callbackId:command.callbackId]; }else { result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR
messageAsString:@"cuowu"];// [self.commandDelegate sendPluginResult:result callbackId:command.callbackId]; } [self.commandDelegate sendPluginResult:result callbackId:command.callbackId];}@end


<span style="font-size:14px;">
    **************我是分隔符***********************************

</span>
<span style="font-size:18px;"></span><pre name="code" class="objc"><span style="font-size:14px;">CeshiPlugin.js</span><span style="font-family: Arial, Helvetica, sans-serif;">文件</span>

cordova.define("com.example.CeshiPlugin.CeshiPlugin", function(require, exports, module) { var wang=require(‘cordova/exec‘); module.exports={ //自定义方法 addstr:function(addSuc,addFaild,args, args2, args3)
{ /* 第一个参数:回调成功参数 第二个参数:回调失败参数 第三个参数:JS要调用OC类的名字参数 第四个参数:要调用方法的名字 第五个参数:要传递的参数,以JSON格式 */ wang(addSuc,addFaild,"CeshiPlugin","addstr",[args,args2,args3]); } };});


<span style="font-size:14px;">
    **************我是分隔符***********************************</span>
<span style="font-size:14px; font-family: Arial, Helvetica, sans-serif;">
</span>
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size:18px;">plugin.xml文件</span></span>
<span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8"?>
<!--id=插件的唯一标识-->
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
        id="com.example.CeshiPlugin"//此ID需与创建项目时的第二个参数即应用标识一致
        version="2.0">
<!--name:插件的名称-->
  <name>HelloPlugin</name>
<!--description:描述信息-->
  <description>
    This plugin allows you to show a MyPlugin.
    A Toast is a little non intrusive buttonless popup which automatically disappears.
  </description>

  <license>MIT</license>
<!--  js-module:对应我们的 javascript 文件,src 属性指向 www/xxx.js路径-->
  <js-module src="www/CeshiPlugin.js" name="CeshiPlugin">
    <clobbers target="myplugin" />
  </js-module>

  <!-- platform:支持的平台ios -->
  <platform name="ios">
    <config-file target="config.xml" parent="/*">
      <feature name="CeshiPlugin">
        <param name="ios-package" value="CeshiPlugin"/>
      </feature>
    </config-file>

    <header-file src="src/ios/CeshiPlugin.h"/>
    <source-file src="src/ios/CeshiPlugin.m"/>
    <framework src="QuartzCore.framework" />
  </platform>
</plugin></span>
<span style="font-size:14px;">
    **************我是分隔符***********************************
 7、到这就基本OK了,可以将插件打包整理好,自己测试和提交给别人使用了。

   打包步骤:

   1、建立一个插件根目录,格式最好如下:com.liki.</span><span style="font-size: 14px; font-family: Arial, Helvetica, sans-serif;">xxxPlugin</span><span style="font-size:14px;">

   2、在xxxPlugin下建立www和src目录。

   3、将plugin.xml配置文件拷贝到xxxplugin目录。

   4、在src目录下建立ios目录,其他平台也行,笔者没有试过,不过官网上说支持。

   5、将ios原生的类文件拷贝相应目录内。

   6、将写好的JS文件拷贝到www目录下。</span>
<span style="font-size:14px;">
</span><pre name="code" class="objc"><span style="font-size:14px;"> **************我是分隔符***********************************</span>

 使用插件步骤,这里就简单说明一下,因为需要具备Cordova和JS以及Html相关知识,只能给演示代码


<span style="font-size:14px;">
</span><span style="font-size:18px;">Html文件调用</span><span style="font-size:14px;">
  <script type="text/javascript">
            document.addEventListener("deviceready", onDeviceReady, false);
            function onDeviceReady() {
                /**
                 * 加载成功调用js
                 */
                myplugin.addstr(addSuc,addFiald,"wang","zhao","bin");

            }
        </script>

        <script √>
            /**
             * js回调函数
             */
        function addSuc(result) {
            alert('回调成功addSuc='+result);
        }
        function addFiald(result) {
            alert('addFiald='+result);
        }
        </script></span>
				
时间: 2024-08-24 11:45:00

cordova 3.0以上ios自定义插件的相关文章

cordova android项目自定义插件及使用(一)

--新建cordova项目 cordova create Myproj com.myproj.test MyTestProj --添加平台及设备 cd Myproj cordova platform add android cordova platform add ios cordova plugin add org.apache.cordova.device --然后这个时候打开项目目录是这个样子的 config:应用的配置信息 platforms:应用支持的平台目录 plugins:安装的插

cordova 自定义插件

cordova /phonegap 自定义插件 在使用cordova 的过程中,虽然官方提供的插件以及其他人开源的插件较多.但有时为了实现某种需求,还是需要自己编写插件. 以前总是会手动的配置cordova插件,具体可以参考phonegap手动配置插件 今天主要是介绍官方提供的plugman来创建插件 pluman的使用 首先,安装plumam npm install -g plugman 安装完之后,就可以创建plugin plugman create --name <pluginName>

Android Cordova 插件开发之编写自定义插件

前言 本文适合Android+web的复合型人才,因为cordova本身就是混合开发,所以在Android开发的基础上,还要懂web相关技术(HTML+CSS+JS),但是也有例外,比如我,只需负责Android方面,web方面的交由其他web组人员开发.虽然,web略懂一点,但我主要还是搞Android开发的. 编写自定义插件类 本节的内容是,自定义一个dialog插件,供web调用,显示系统弹窗. 新建一个包名,我这里使用org.apache.cordova.dialog,然后创建个类Cus

cordova ios升级插件

org.ssgroup.sope.cordova.upgrade 支持强制升级与选择升级 插件已经开源在https://github.com/shenshouer/org.ssgroup.sope.cordova.upgrade 新版本号已经更新,但还未提交至github 此插件为一个cordova ios版本号插件,用户检查本地app的一些信息以及从app store中检查是否有新版本号,并提示更新 安装 cordova plugin add https://github.com/shensh

cordova3.X 运用grunt生成plugin自定义插件骨架

Cordova提供了一组设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头.麦克风等.Cordova还提供了一组统一的JavaScript类库,以及为这些类库所用的设备相关的原生后台代码. 一.安装cordova npm install -g cordova 二.创建项目 cordova create hello com.blue.sky.hybrid.app.hello HelloWorld 三.添加平台支持 cd hello cordova pl

cordova跨平台app开发02_自定义插件开发与安装

视频地址:http://t.cn/RacmXiy cordova的自定义插件由js.原生代码文件(java.oc).plugin.xml三部分组成. cordvoa提供了命令来创建插件模版项目. 创建插件模版 1.     pluman的安装 npm install –g plugman 2.     在d:\cordovaplugins创建一个名称为helloplugins,id为com.zql. helloplugins,版本号为1.0.0的插件 cd D:\cordovaplugins p

Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例

引言 Cordova(PhoneGap)采用的是HTML5+JavaScript混合模式来开 发移动手机APP,因此当页面需要获取手机内部某些信息时(例如:联系人信息,坐标定位,短信等),程序就需要调用手机内部的API跟页面进行信息交换. Cordova 特别为此定制了完善的解决方案,以方便用户进行程序编辑.在这一章里将为大家逐一介绍Cordova与Actitity通讯的实现原理. 目录 一.CordovaPlugin类简介 二.页面通过 cordova.exec 函数调用 CordovaPlu

Android移动APP开发笔记——Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例

引言 Cordova(PhoneGap)采用的是HTML5+JavaScript混合模式来开发移动手机APP,因此当页面需要获取手机内部某些信息时(例如:联系人信息,坐标定位,短信等),程序就需要调用手机内部的API跟页面进行信息交换.Cordova 特别为此定制了完善的解决方案,以方便用户进行程序编辑.在这一章里将为大家逐一介绍Cordova与Actitity通讯的实现原理. 目录 一.CordovaPlugin类简介 二.页面通过 cordova.exec 函数调用 CordovaPlugi

iOS 自定义页面的切换动画与交互动画

在iOS7之前,开发者为了寻求自定义Navigation Controller的Push/Pop动画,只能受限于子类化一个UINavigationController,或是用自定义的动画去覆盖它.但是随着iOS7的到来,Apple针对开发者推出了新的工具,以更灵活地方式管理UIViewController切换. 自定义导航栏的Push/Pop动画 为了在基于UINavigationController下做自定义的动画切换,先建立一个简单的工程,这个工程的rootViewController是一个