在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]; }
所以,就是这样。