将插件添加到 Phonegap (3.1.0) Cleaver 应用程序不起作用
Posted
技术标签:
【中文标题】将插件添加到 Phonegap (3.1.0) Cleaver 应用程序不起作用【英文标题】:Adding plugins to Phonegap (3.1.0) Cleaver app not working 【发布时间】:2013-11-14 17:19:24 【问题描述】:我正在构建一个基于原生 ios 的混合应用程序,其中包含 Cordova 3.1.0 上的部分(称为 Cleaver 组件)。该应用程序正在使用示例 index.html 并显示“设备已准备好”消息(我想这意味着它工作正常)。现在的问题是如何添加一个自定义插件来通信本机和 Phonegap 组件。
我已经学习了一些教程:
http://moduscreate.com/building-a-custom-phonegap-plugin-for-ios/ http://devgirl.org/2013/09/17/how-to-write-a-phonegap-3-0-plugin-for-android/(这个是安卓版)
我尝试在基础/规范 Cordova 上安装“连接”插件,并将结构和 .m 和 .h 复制到我的项目中,并添加它自己的 config.xml 部分,但它不起作用。
有没有人知道其他资源可以查看,或者其他人也遇到过同样的情况?
谢谢!
已编辑:
我已经在一个新创建的 Cordova 项目上测试了我的自定义插件,它就像一个魅力。
编辑#2:
对 Phonegap Cleaver 类进行调试,其中大部分在 CDVViewController 上,我确实意识到 UIWebView 委托方法没有被调用:
- (void)webViewDidStartLoad:(UIWebView*)theWebView
- (void)webViewDidFinishLoad:(UIWebView*)theWebView
- (void)webView:(UIWebView*)theWebView didFailLoadWithError:(NSError*)error
- (BOOL)webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
有没有办法重新签署委托以让他们被调用?
【问题讨论】:
【参考方案1】:您可能已经找到了有关未调用 UIWebView 委托方法的问题的答案,但我想为可能偶然发现此页面的任何其他人提供答案(我在尝试时多次遇到此帖子弄清楚)。
我假设您的项目和我的项目一样使用 ARC,这就是问题所在。如果您按照以下说明操作: http://cordova.apache.org/docs/en/3.3.0/guide_platforms_ios_webview.md.html#iOS%20WebViews_using_cdvviewcontroller
它告诉你“实例化一个新的 CDVViewController 并将它保留在某个地方,例如,一个类属性”,但在他们提供的示例中,他们不保留变量。
请确保将变量分配给属性:
@interface ViewController ()
@property (strong, nonatomic) CDVViewController *cdvViewController;
@end
@implementation ViewController
-(void)viewDidLoad
[super viewDidLoad];
self.cdvViewController = [CDVViewController new];
[self.cdvViewController.view setFrame:self.view.frame];
[self.view addSubview:self.cdvViewController.view];
现在这些委托方法将被调用。希望这对其他人有帮助。
【讨论】:
感谢您的回答。事实上,我已经决定为每个平台制作一个原生项目,但我会在下一个项目中尝试它并添加正确答案的标记!以上是关于将插件添加到 Phonegap (3.1.0) Cleaver 应用程序不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Phonegap:如何将插件(如FileSystem)添加到blackberry10?
无法将下载的插件添加到 Cordova/Phonegap 项目
将 Phonegap 插件添加到 Xcode - 错误:找不到插件“PayPalPlugin”,或者不是 CDVPlugin