文档章节

phoneGap开发IOS,JS调用IOS方法/phoneGap插件开发

郏高阳
 郏高阳
发布于 2013/11/12 11:39
字数 450
阅读 11183
收藏 11

 
PhoneGap开发IOS,JS调用IOS方法/phoneGap插件开发——FakeMr

前沿

废话不说phoneGap是什么不多介绍,官方网站: http://phonegap.com/
之前写过phoneGap开发Android插件教程: http://my.oschina.net/jgy/blog/145385

开始代码

这个是目录结构

在Plugins下新建文件(在Plugins上右键-new file选择Objective-c class)输入名字(CDVMyPlugin)  next……

这世间你会发现在Plugins下面有两个文件,分别是:CDVMyPlugin.h和CDVMyPlugin.m

CDVMyPlugin.h内容:

#import <Foundation/Foundation.h>
#import <Cordova/CDVPlugin.h>

@interface CDVMyPlugin : CDVPlugin
    
    @property (nonatomic, copy) NSString* callbackID;
    
    // Instance Method

- (void) print:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;

@end

CDVMyPlugin.m内容

#import "CDVMyPlugin.h"

@implementation CDVMyPlugin

@synthesize callbackID;


    -(void)print:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options
    {
        
        // 这是classid,在下面的PluginResult进行数据的返回时,将会用到它
        self.callbackID = [arguments pop];
        
        // 得到Javascript端发送过来的字符串
        NSString *stringObtainedFromJavascript = [arguments objectAtIndex:0];
        
        // 创建我们要返回给js端的字符串
        NSMutableString *stringToReturn = [NSMutableString stringWithString: @"我是返回的:"];
        
        [stringToReturn appendString: stringObtainedFromJavascript];
        
        // Create Plugin Result
        CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString: stringToReturn];
        
        NSLog(@ "%@",stringToReturn);
        
        // 检查发送过来的字符串是否等于"HelloWorld",如果不等,就以PluginResult的Error形式返回
        if ([stringObtainedFromJavascript isEqualToString:@"HelloWorld"] == YES){
            // Call the javascript success function
            [self writeJavascript: [pluginResult toSuccessCallbackString:self.callbackID]];
        } else{
            // Call the javascript error function
            [self writeJavascript: [pluginResult toErrorCallbackString:self.callbackID]];
        }
    }


JS封装通用调用方法

//调用IOS方法插件
var MyIOSPlugin = {
/**
* 调用IOS方法
* @param method 要调用IOS插件的方法名
* @param parameter 参数[数组]
* @param success 成功回调
* @param fail 失败回调
* @returns {*}
*/
nativeFunction: function(method, parameter, success, fail) {
return Cordova.exec(success, fail, "MyPlugin", method, parameter);
}
};

JS调用

MyIOSPlugin.nativeFunction("print",['HelloWorld'],
function(result) {
// alert("Success: \r\n"+result);
},
function(error) {
// alert("Error: \r\n"+error);
}
);

配置插件<KEY-VALUE>
<feature name="MyPlugin">
        <param name="ios-package" value="CDVMyPlugin" />
</feature>
OVER!

最后:以上是本人测试成功后以及经验分享,欢迎吐槽交流!嘎嘎~~~~

原文链接:http://my.oschina.net/jgy/blog/175643

作者:FakeMr 郏高阳 ❤犒劳一杯咖啡❤



© 著作权归作者所有

郏高阳

郏高阳

粉丝 99
博文 153
码字总数 112268
作品 1
黄浦
程序员
私信 提问
加载中

评论(15)

晓枫随心
我用的是2.9.1的用js调用ios方法时报:DEPRECATION NOTICE: The Connection ReachableViaWWAN return value of '2g' is deprecated as of Cordova version 2.6.0 and will be changed to 'cellular' in a future release.
这个错误,求大神指点,谢谢0
d
dreamahui
楼主, demo 上传呢12
郏高阳
郏高阳

引用来自“陈陈加油123”的评论

js 怎么调用
博客中有写 JS调用 方法的哟
陈陈加油123
js 怎么调用
郏高阳
郏高阳

引用来自“pthouge”的评论

打败了,不知道问题出在哪,我用的是phone2.90
看什么错误,根据错误日志排查
p
pthouge
打败了,不知道问题出在哪,我用的是phone2.90
郏高阳
郏高阳

引用来自“guyue520a”的评论

为什么我这找不到<Cordova/CDVPlugin.h> 这个文件呢

新建一个CDVMyPlugin会出现2个文件吧!

guyue520a
guyue520a
为什么我这找不到<Cordova/CDVPlugin.h> 这个文件呢
郏高阳
郏高阳

引用来自“luo_text”的评论

楼主不错,android的我也看了,也弄出来了,但是分别写好像又麻烦.那么我们是不是可以在写这个插件的时候,就引入这个ios或者android就可以调用的情况呢?

你可以做一个适配中间层!
luo_text
luo_text
楼主不错,android的我也看了,也弄出来了,但是分别写好像又麻烦.那么我们是不是可以在写这个插件的时候,就引入这个ios或者android就可以调用的情况呢?
PhoneGap 插件简介

一、PhoneGap平台 前不久PhoneGap发布了1.0版本,这为移动开发大家族提供了又一个跨平台的解决方案。开发者只要有JavaScript、CSS3、Html5的基础就可以快速开发移动应用,并且一次开发支持i...

无鸯
2011/09/06
6.7K
2
PhoneGap 3.5.0 发布,不再支持 iOS 5

PhoneGap 3.5.0 发布,不再支持 iOS 5 ,并且此版本将会是最后一个支持 WP7 的版本。 主要更新内容如下: All Platforms received a top-level . All Platforms are released on npm. For ex...

oschina
2014/06/14
4.5K
12
如何采用Yeoman + Grunt + Bower开发基于PhoneGap的Hybrid APP

一直想开发手机应用,也跟着教程学做了两个iOS小应用,但开发思维上的转变需要一个长期的过程,而且iOS系统功能很强大,陌生的地方也很多,很多功能不知道该自己开发还是系统上已经存在,也不...

僵尸猫
2015/06/24
0
6
使用The PhoneGap Developer App实现快速调试项目

如今,基于 PhoneGap 的混合 APP 开发技术更加成熟,优势更加凸显。移动互联网的迅猛发展,Android 和 iOS 的版本快速迭代,使 HTML5 的性能问题逐步解决。仅仅在 PhoneGap 官网上,已经有来...

crazymus
2015/04/26
0
0
PhoneGap 3.7.0 现已提供在 PhoneGap Build

PhoneGap 3.7.0 现已提供在 PhoneGap Build,详细更新内容请看: iOS 3.7.0 blog post Windows Phone 8 3.7.0 blog post Android 3.7.1 blog post 注意,当你在 PhoneGap Build 上构建 Ando......

oschina
2015/02/18
2.7K
4

没有更多内容

加载失败,请刷新页面

加载更多

研究下这代码,用到了guava和线程池

import com.google.common.util.concurrent.FutureCallback;import com.google.common.util.concurrent.Futures;import com.google.common.util.concurrent.ListenableFuture;import c......

暗中观察
14分钟前
0
0
《css 揭秘》 之垂直居中的实现

最近看了 Lea Verou 的 《css揭秘》一书,让我对自己的 css学习产生了深深的怀疑。这本书真是太棒了,里面涉及到很多优雅又有趣的效果实现,真的是非常棒。如果你有时间,十分建议你去看看。...

IrisHuang
19分钟前
1
0
java 抽象类(2)

/*需求: 描述一个图形、圆形、 矩形三个类。不管哪种图形都会具备计算面积与周长的行为,但是每种图形计算的方式不一致而已。常量的命名规范:全部字母大写,单词与单词 之间 使用下...

hellation_
22分钟前
0
0
总结:堆和栈

堆 堆比较好理解,即存放对象的地方。这里的对象由GC管理 1、类变量(static修饰的变量):在程序加载时系统就为它在堆中开辟了内存,堆中的内存地址存放于栈以便于高速访问。静态变量的生命...

浮躁的码农
27分钟前
1
0
JavaScript 新语法详解:Class 的私有属性与私有方法

译者按: 为什么偏要用**#**符号? 原文:JavaScript's new #private class fields 译者:Fundebug 本文采用意译,版权归原作者所有 proposal-class-fields与proposal-private-methods定义了 ...

Fundebug
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部