将插件添加到Phonegap(3.1.0)Cleaver app无法正常工作

时间:2013-11-14 17:19:24

标签: ios cordova phonegap-plugins hybrid-mobile-app

我正在构建一个基于原生iOS的混合应用程序,其中包含部分Cordova 3.1.0(称为Cleaver组件)。该应用程序正在使用示例index.html,它显示“DEVICE IS READY”消息(我想这意味着它正常工作)。现在的问题是如何添加自定义插件来传递本机和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/(适用于Android的这个)

我尝试在base / canonical Cordova上安装“连接”插件,并将结构和.m和.h复制到我的项目中,并添加它自己的config.xml部分,但它不起作用。

是否有人知道另一种资源可供查看,或其他人是否处于相同的情况?

谢谢!

编辑:

我在一个新创建的Cordova项目上测试了我的自定义插件,它就像一个魅力。

编辑#2:

在Phonegap Cleaver类上进行调试,其中大部分是在CDVViewController上进行的,我确实意识到没有调用UIWebView Delegate方法:

- (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 个答案:

答案 0 :(得分:2)

您可能已经找到了关于未调用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];
}

现在将调用这些委托方法。希望这有助于其他人。