2012-06-28 19 views
5

Estoy tratando de instalar una aplicación iOS desde un plist en el sistema de archivos del dispositivo.Instalar aplicaciones iOS desde un plist local (nulo) desea instalar

NSString *launchNewPlistURL = [NSString stringWithFormat:@"itms-services://?action=download-manifest&url=file://%@",[self saveFilePath]]; 
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:launchNewPlistURL]]; 

Y me piden que "(null) quiera instalar {myappname}". Normalmente (nulo) es el nombre de dominio del que proviene el plist, pero en este caso es nulo ya que es un archivo local.

¿Hay alguna forma de especificar el título en el plist o pasar un nombre de dominio falso en la url?

Gracias, Dan

Respuesta

3

Puede utilizar el proyecto MongooseDaemon para crear un servidor local HTTP.

Con un dominio similar a: http://192.168.xxx.xxx/yourplist.plist para instalarlo.

De todos modos, creo que no se puede usar con una IPA grande. He intentado con mi IPA superior a 15 MB y es muy, muy lento para iniciar la instalación.

+0

El tamaño del archivo no debería ser un gran problema, ya que solo el plist debería estar alojado por MongooseDaemon, y la IPA podría seguir viviendo en otro lugar de la web. – fischerdan

2

Estaba en una situación similar, y seguí la ruta del uso de Mongoose originalmente, pero hoy tropecé con CocoaHttpServer.

Con Mongoose, solo obtenía una tasa de éxito del 20% que proporcionaba archivos plist/IPA locales. Algunas veces, el diálogo localhost would like to install nunca apareció, a veces la instalación comenzó y falló a la mitad, y en ocasiones funcionó. Peor aún, una vez que una aplicación falló, tuve que desinstalarla completamente y volver a instalarla, por lo que se perdieron todos los datos. Nunca pude "arreglar" con éxito una instalación fallida.

Hasta el momento, con casi 10-15 minutos de pruebas, el CocoaHttpServer no ha fallado todavía. Sé que este es un tamaño de muestra muy pequeño, pero mi tasa de éxito de Mongoose fue de alrededor del 10%.

self.httpServer = [[HTTPServer alloc] init]; 
[self.httpServer setType:@"_http._tcp."]; 
[self.httpServer setPort:8080]; 
//This is just a path where I save my IPA and Plist file locally. 
//In my case it's /{NSDocumentDirectory}/install/ 
[self.httpServer setDocumentRoot:[self pathForLocalInstallFiles]]; 

A continuación, el URL para el plist en el disco:

NSURL *plistUrl = [NSURL URLWithString:@"itms-services://?action=download-manifest&url=http://localhost:8080/appname.plist"]; 
[[UIApplication sharedApplication] openURL:plistUrl]; 

Dentro de la plist, donde tiene su dirección URL que apunta al archivo IPA local, me tuvo éxito utilizando file:// o http://localhost/.

Cuestiones relacionadas