2012-04-23 7 views
5

ist es möglich, eine externe index.html (mit enthalten cordova.js) anstelle der lokalen zu laden?Einstellen einer externen Startseite mit Cordova 1.6 auf iOS

i im appdelegate.m gefunden diesen Code:

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

Ich habe versucht, eine externe URL zu verweisen, aber ohne Glück ... jemand eine Lösung für dieses wissen?

p.s.

mit Android ist es einfach:

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

Antwort

4

Ich habe dies für mein Projekt getan (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]; 

Wie an anderer Stelle erwähnt, ist die Website, die Sie zugreifen möchten, sind, hat die weiße Liste gesetzt werden.

Es funktioniert gut. Meine externe Seite befindet sich auf dem lokalen IIS und hat die cordova.js sowie einige Plugins. Jetzt muss ich nur sehen, ob Apple meine App genehmigt!

+0

Ich versuche auch, eine externe URL am Anfang meiner App zu haben. Ich war nicht sicher, obwohl, wie ich die Plugins für Push-Benachrichtigungen zum Beispiel laden würde. also sollte ich sie auch extern in die url laden lassen? –

1

Die einfachste Art und Weise I tat, enthält Skriptblock in einer Datei index.html folgenden und anderen Code entfernen, wenn nicht erforderlich:

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

Und schließen der Wirt in der ExternalHosts Karte in PhoneGap.plist Datei, auch OpenAllWhitelistURLsInWebView überprüfen wird YES in plist-Datei festgelegt

+0

danke, es funktioniert! aber es ist nicht so wie es bei Android gemacht wird. Gibt es einen besseren Weg? – marcus3006

+0

obwohl ich nicht den genauen Grund kenne, aber Phonegap verwendet die nativen Steuerelemente, um den erforderlichen Container zu erstellen, in welchem ​​Fall Android das unterstützt, aber der iOS-Container möglicherweise nicht. Auch wenn Sie im Fall von Android sorgfältig schauen, geben wir absolute URL an, um die lokale Ressource zu laden, während wir in iOS den Ordnernamen und den Dateinamen getrennt festlegen. – dhaval

+0

ja, du hast Recht. Ich bin mir nicht sicher, aber ich denke, dass es mit Phonegap 1.4 möglich war. Jetzt müssen Sie einen Ordner und eine Datei angeben -.- – marcus3006

2

Wenn Sie include the PhoneGap source as a subproject (Ich habe 1,7 und die Anweisungen funktionierte immer noch, siehe meine Notiz am Ende), können Sie ein paar Zeilen Code hinzufügen, damit PhoneGap externe URLs als startPage unterstützen.

Strecken Linie 133, werden Sie

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

Recht hinzufügen möchten, bevor if (startFilePath == nil) {

standardmäßig PhoneGap scheint nicht externe Startseite URLs ohne Javascript 'Hack' oben erwähnt zu unterstützen. Anders als das (und das), weiß ich keinen anderen Weg!

Lassen Sie mich wissen, wenn Sie weitere Fragen haben.

Hinweis: Wie oben erwähnt, fehlt in der exemplarischen Vorgehensweise ein Schritt. Ich habe den Artikel kommentiert, um den Autor wissen zu lassen, aber es wurde noch nicht genehmigt. Unten ist mein Kommentar:

Ein Schritt, der für mich fehlte, war das Hinzufügen von $ (CORDOVALIB)/Klassen zum Header-Suchpfad unter Build-Phasen (auch markieren, um es rekursiv zu suchen). Ansonsten schreibe grossartig!

2

Für iOS wäre es:

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

Die Namen sind verwirrend, weil die Startseite auch die URL ist.

+0

Ich habe Ihren Code umformatiert, aber versuchen Sie es in Zukunft richtig. – simonmorley

+0

danke, es war mein erster Kommentar in stackoverflow :-) –

+0

Ich mag das. Es ist prägnanter als die angenommene Antwort. – louielouie

0

Das Einstellen des wwwFolderName auf eine leere Zeichenfolge funktionierte nicht für mich, aber es funktionierte nicht.

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

Die einfachste Art und Weise I tat, xxxViewController: CDVViewController < ...>

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

so ist, dass alle.

Verwandte Themen