自定义 PhoneGap 插件 (iOS) 功能问题
Posted
技术标签:
【中文标题】自定义 PhoneGap 插件 (iOS) 功能问题【英文标题】:Custom PhoneGap Plugin (iOS) Function Issue 【发布时间】:2012-03-06 19:17:10 【问题描述】:我正在使用本教程创建自定义 PhoneGap 插件: http://wiki.phonegap.com/w/page/36753496/How%20to%20Create%20a%20PhoneGap%20Plugin%20for%20ios
我已经成功地使用了作者的示例,但是我有几个问题我无法找到答案。
创建javascript函数时,代码为:
var MyPlugin =
nativeFunction: function(types, success, fail)
return PhoneGap.exec(success, fail, "PluginClass", "print", types);
;
有没有办法在没有var MyPlugin = ...;
和nativeFunction
的情况下进行设置?换句话说,我们能不能定义一个我们插件的函数,比如myfunc = function()...
其次,假设有一种方法可以做到以上几点,这个代码可以:
MyPlugin.nativeFunction(
["HelloWorld"] ,
function(result)
alert("Success : \r\n"+result);
,
function(error)
alert("Error : \r\n"+error);
);
(这是测试插件的测试代码)也可以用更标准化的方式编写吗?即,只是调用没有 nativeFunction
部分的 Javascript 函数?
非常感谢您的任何意见,谢谢!
【问题讨论】:
【参考方案1】:插件的 phonegap 文档很烂。老实说,我在尝试创建自己的游戏时遇到了很多问题。一些提示:
这样做的原因
var MyPlugin = ;
是因为这允许我们限定特定于该 js 对象的内容。 示例:
MyPlugin.myFunction();
我最喜欢的创建插件的方法,类似于你的问题,是对它们进行原型制作
var MyPlugin = ; // our object
MyPlugin.prototype.myFunction = function(success,fail,types)
让插件火起来的关键是这个 -
PhoneGap.exec(success,fail,"MyPlugin","myFunction",types);
但是他们遗漏了一点,如果我们想为我们的插件提供选项怎么办?如果我们想做的不仅仅是传递一个字符串,那么这个例子就行不通了。修复很简单,但根本没有人谈论。
var MyPlugin = ;
MyPlugin.prototype.myFunction = function(success,fail,options)
var defaults =
foo: '', // these are options
bar: '',
;
// this parses our "options"
for(var key in defaults)
if(typeof options[key] !== "undefined") defaults[key] = options[key];
return PhoneGap.exec(success,fail,"MyPlugin","myFunction",[defaults]);
当我们在没有 javascript 的情况下调用它时 -
var foo = MyPlugin.myFunction(success,fail,
foo:'hello',
bar:'world'
);
您会注意到大多数 phonegap API 都使用这种语法,我觉得奇怪的是他们的文档并没有真正讨论如何做到这一点。
我有一篇关于我创建的插件的帖子,您可以查看它以供参考。 博客 - http://www.drewdahlman.com/meusLabs/?p=138 Git - https://github.com/DrewDahlman/ImageFilter
【讨论】:
确保您使用的是 phonegap 构造函数 -PhoneGap.addConstructor(function () if(!window.plugins) window.plugins = ; window.plugins. MyPlugin = new MyPlugin(); );
是的,它应该放在你的插件 js 文件中 - 看看这个 git 项目 - github.com/DrewDahlman/ImageFilter/blob/master/plugin/…
最后一件事 - 尝试像这样定义函数var MyPlugin = function();
以上是关于自定义 PhoneGap 插件 (iOS) 功能问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 中使用自定义 phonegap 3.3 插件
为 Phonegap 构建创建自定义 AdMob 插件(适用于 iOS 和 Android)
PhoneGap 3.x / iOs6 iOs7 / AngularJs - 插件对象不适用于自定义 www/index.html 位置
如何使用自定义插件测试 iPhone PhoneGap 应用