2012-04-23 8 views
5

è possibile caricare un index.html esterno (con cordova.js incluso) anziché quello locale?Impostazione di una pagina iniziale esterna con Cordova 1.6 su iOS

ho trovato nel appdelegate.m questo codice:

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

ho cercato di fare riferimento a un URL esterno, ma senza fortuna ... Qualcuno sa una soluzione per questo?

p.s.

con Android è facile:

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

risposta

4

ho fatto per il mio progetto (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]; 

Come accennato altrove, il sito che si sta tentando l'accesso deve essere inseriti nella whitelist.

Funziona bene. Il mio sito esterno è su IIS locale e ha il cordova.js e alcuni plugin. Ora devo solo vedere se ottengo che Apple approvi la mia app!

+0

Ci sto provando anch'io, per avere un URL esterno all'inizio della mia app. Non ero sicuro di come caricare i plugin per le notifiche push, ad esempio. quindi dovrei averli anche caricati esternamente all'URL? –

1

Il modo più semplice che ho fatto è, comprendono seguente blocco di script in un file index.html e rimuovere altri codici se non richieste:

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

e comprendono l'host nella mappa ExternalHosts nel file PhoneGap.plist, anche controllare OpenAllWhitelistURLsInWebView è impostato su YES nel file plist

+0

grazie, funziona! ma non è il modo in cui è fatto su Android. C'è un modo migliore? – marcus3006

+0

anche se non conosco il motivo esatto, ma phonegap utilizza i controlli nativi per creare il contenitore richiesto, nel qual caso Android potrebbe supportarlo ma il contenitore iOS potrebbe non esserlo. Inoltre, se si guarda attentamente nel caso di Android, viene fornito un URL assoluto per caricare la risorsa locale mentre in iOS viene impostato separatamente il nome della cartella e il nome del file. – dhaval

+0

sì, hai ragione. non sono sicuro, ma penso che fosse possibile con PhoneGap 1.4. ora devi specificare una cartella e un file -.- – marcus3006

2

Se hai include the PhoneGap source as a subproject (ho usato 1.7 e le istruzioni funzionano ancora, vedi la mia nota alla fine), puoi aggiungere alcune righe di codice per consentire a PhoneGap di supportare URL esterni come startPage.

Intorno linea 133, si vorrà aggiungere

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

destra prima if (startFilePath == nil) {

Per impostazione predefinita, PhoneGap non sembra supportare gli URL StartPage esterni senza un javascript 'Hack' di cui sopra. Oltre a questo (e quello), non conosco altro modo!

Fatemi sapere se avete altre domande.

Nota: come accennato in precedenza, la procedura dettagliata manca un passaggio. Ho commentato l'articolo per far sapere all'autore, ma non è stato ancora approvato. Qui di seguito è il mio commento:

Un passo che mancava per me è stata l'aggiunta di $ (CORDOVALIB)/Classes all'intestazione percorso di ricerca in fasi di creazione (anche la marcatura per la ricerca in modo ricorsivo). A parte questo, ottimo scrivi!

2

Per iOS sarebbe:

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

I nomi sono confusa, perché lo StartPage è anche l'URL.

+0

Ho riformattato il codice ma cerco di farlo correttamente in futuro. – simonmorley

+0

grazie, è stato il mio primo commento in StackOverflow :-) –

+0

Mi piace. È più conciso della risposta accettata. – louielouie

0

L'impostazione di wwwFolderName su stringa vuota non ha funzionato per me, ma non ha funzionato.

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

Il modo più semplice che ho fatto è, xxxViewController: CDVViewController < ...>

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

modo, questo è tutto.

Problemi correlati