2012-04-23 17 views
5

¿es posible cargar un index.html externo (con cordova.js incluido) en lugar del local?Establecer una página de inicio externa con Cordova 1.6 en iOS

he encontrado en el appdelegate.m este código:

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

he intentado hacer referencia a una URL externa pero sin suerte ... Alguien sabe una solución para esto?

p.s.

con Android es fácil:

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

Respuesta

4

he hecho esto para mi proyecto (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]; 

Como ya se mencionó, el sitio que está intentando el acceso tiene que ser en la lista blanca.

Funciona muy bien. Mi sitio externo está en IIS local y tiene el cordova.js, así como algunos complementos. ¡Ahora solo tengo que ver si consigo que Apple apruebe mi aplicación!

+0

Lo estoy intentando también, para tener una url externa al inicio de mi aplicación. No estaba seguro de cómo cargaría los complementos para las notificaciones push, por ejemplo. entonces, ¿debería tenerlos cargados externamente a la url también? –

1

La forma más simple que hice es decir, incluye bloque siguiente secuencia de comandos en un archivo index.html y retirar otro código si no se requiere:

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

e incluyen el anfitrión en el mapa ExternalHosts en PhoneGap.plist archivo, compruebe también OpenAllWhitelistURLsInWebView se establece en YES en el archivo plist

+0

gracias, está funcionando! pero no es la forma en que se hace en Android. hay una mejor manera? – marcus3006

+0

aunque no sé la razón exacta, pero phonegap usa los controles nativos para crear el contenedor requerido, en cuyo caso Android podría soportarlo, pero el contenedor iOS podría no serlo. Además, si miras detenidamente en el caso de Android, proporcionamos la URL absoluta para cargar el recurso local, mientras que en iOS establecemos el nombre de la carpeta y el nombre del archivo por separado. – dhaval

+0

sí, tienes razón. No estoy seguro, pero creo que fue posible con el teléfono 1.4. ahora tiene que especificar una carpeta y archivo -.- – marcus3006

2

Si include the PhoneGap source as a subproject (utilicé 1.7 y las instrucciones siguen funcionando, vea mi nota al final), puede agregar algunas líneas de código para permitir que PhoneGap admita direcciones URL externas como startPage.

alrededor de la línea 133, tendrá que añadir

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

justo antes if (startFilePath == nil) {

Por defecto, PhoneGap no parece apoyar URL startpage externos sin javascript 'Hack mencionado anteriormente. Aparte de esto (y eso), ¡no sé de otra manera!

Deseo saber si tiene más preguntas.

Nota: como mencioné anteriormente, al tutorial le falta un paso. Comenté sobre el artículo para que el autor lo supiera, pero aún no ha sido aprobado. A continuación se muestra mi comentario:

Un paso que faltaba para mí fue la adición de $ (CORDOVALIB)/Clases a la ruta de búsqueda de cabecera en las fases de construcción (también marcándolo para buscar de forma recursiva). Aparte de eso, genial escribir!

2

Para iOS sería:

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

Los nombres son confusos debido a la página de inicio es también la URL.

+0

He reformateado su código, pero intente hacerlo correctamente en el futuro. – simonmorley

+0

gracias, fue mi primer comentario en stackoverflow :-) –

+0

Me gusta esto. Es más conciso que la respuesta aceptada. – louielouie

0

Establecer el wwwFolderName en la cadena vacía no funcionó para mí, pero no funcionó.

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

La forma más simple que hice es decir, xxxViewController: CDVViewController < ...>

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

así, eso es todo.

Cuestiones relacionadas