在iOS上使用Cordova 1.6设置外部初始页面

是否有可能加载一个外部的index.html(包括cordova.js)而不是本地的?

我在appdelegate.m中find了这个代码:

self.viewController.wwwFolderName = @"www"; self.viewController.startPage = @"index.html"; 

我试图引用外部url,但没有运气…任何人都知道这个解决scheme?

PS

与Android很容易:

 super.loadUrl("http://192.168.1.135:3000/"); 

我已经为我的项目(AppDelegate.m)做了这个:

 self.viewController = [[[MainViewController alloc] init] autorelease]; self.viewController.useSplashScreen = YES; // YES; self.viewController.wwwFolderName = @""; // @"www"; self.viewController.startPage = @""; // @"index.html"; self.viewController.invokeString = invokeString; self.viewController.view.frame = viewBounds; // Load request with new root URL NSURL *urlOverwrite = [NSURL URLWithString:@"http://kyryll.com"]; NSURLRequest *request = [NSURLRequest requestWithURL:urlOverwrite]; [self.viewController.webView loadRequest:request]; 

正如其他地方所提到的,您尝试访问的网站必须列入白名单。

这工作很好。 我的外部网站是在本地的IIS,并有cordova.js以及很less的插件。 现在只需要看看我是否可以让苹果批准我的应用程序!

如果您将PhoneGap源代码包含在子项目中 (我使用了1.7,指示仍然有效,请参阅最后的注释),您可以添加几行代码以允许PhoneGap支持外部URL作为startPage

在133行左右,你需要添加

 if([self.startPage hasPrefix:@"http"]) { appURL = [NSURL URLWithString:self.startPage]; } else 

就在if (startFilePath == nil) {

默认情况下,PhoneGap似乎不支持上面提到的没有JavaScript'hack'的外部startPage URLs。 除了这个(和那个),我不知道别的方法!

让我知道你是否有更多的问题。

注意:正如我上面提到的,演练缺less一个步骤。 我评论了这篇文章让作者知道,但还没有被批准。 以下是我的评论:

对于我而言,缺less的一个步骤是在构build阶段的头部searchpath中添加$(CORDOVALIB)/ Classes(也将其标记为recursionsearch)。 除此之外,伟大的写作!

对于iOS,它将是:

 self.viewController.wwwFolderName = @""; // @"www" self.viewController.startPage = @"http://192.168.2.107:9000/"; 

名字很混乱,因为startPage也是URL。

我做的最简单的方法是,在index.html文件中包含以下脚本块,如果不需要,则删除其他代码:

 <script type="text/javascript"> window.location.href="http://192.168.1.135:3000/"; </script> 

并将该主机包含在PhoneGap.plist文件的ExternalHosts地图中,同时检查OpenAllWhitelistURLsInWebView是否设置为YES在plist文件中

设置wwwFolderName为空string没有为我工作,但没有工作。

 self.viewController.wwwFolderName = nil; self.viewController.startPage = @"http://192.168.2.107:9000/"; 

我做的最简单的方法是,xxxViewController:CDVViewController <…>

 -(void) viewDidLoad{ self.wwwFolderName = @"dist"; self.startPage = @"test.html"; [super viewDidLoad]; } 

所以,就是这样。