2012-04-18 8 views
9

Hice una pregunta here pero la respuesta me guía para abrir un nuevo tema. En breve, quiero lanzar una aplicación gratuita en Appstore desde mi aplicación, pero la aplicación que deseo iniciar no tiene URL Scheme. Los comentarios sobre mi otra pregunta dicen que usar algunas API especiales como SBSLaunchApplicationWithIdentifier o clases como UIDocumentInteractionController lo hacen posible. ¿Alguien puede ayudarme a cómo iniciar una aplicación desde mi aplicación? Gracias de antemanoAPI especial para iniciar una aplicación desde mi aplicación

Respuesta

15

Déjame decir primero que este método es jailbreak solamente! Utiliza API privadas que Apple puede dejar de admitir en cualquier momento en una versión futura.

Vamos a llegar a ella, este método utiliza la [UIApplication launchApplicationWithIdentifier:suspended:] método privado:

[[UIApplication sharedApplication] launchApplicationWithIdentifier:@"com.apple.Preferences" suspended:NO]; 

Por lo que he probado llamar a este método desde una aplicación no se está ejecutando como root es inútil, al parecer SpringBoard (o LaunchServices) solo permite que las aplicaciones raíz inicien otras aplicaciones utilizando este método.

Por lo tanto, primero necesita hacer un jailbreak en su iPhone, luego necesita que su aplicación se ejecute como root.

para obtener su aplicación funcionando como root necesita para colocarlo en /Applications/YourApp.app en lugar del habitual/usuario/Aplicaciones/UUID /YourApp.app.

Puede instalar OpenSSH usando Cydia y usar SSH para acceder al caparazón de su teléfono.

Entonces, después de tener su aplicación en el lugar correcto debe configurar los permisos, por ejemplo:

enter image description here

me gustaría utilizar los mismos que Cydia:

chown -R root:wheel /Applications/YourApp.app 

A continuación, un pequeño truco El binario necesitará la setuid bit:

chmod 4755 /Applications/YourApp.app/YourApp 

Y para el último paso, no lo hace trampolín aplicaciones abiertas con el bit setuid, pero se abre un script (que puede abrir otra aplicación)! Sólo cambia el nombre del binario a algo así como YourApp_:

mv /Applications/YourApp.app/YourApp /Applications/YourApp.app/YourApp_ 

y crear un nuevo archivo con el nombre YourApp en la carpeta de aplicación con el siguiente script:

#!/bin/bash 
CrrDir=$(dirname "$0") 
exec "${CrrDir}"/YourApp_ 

Ahora, sólo respring (hay una aplicación para eso en Cydia) y estás listo para ir.

Lo siento si esto parece difícil, no lo es, no recuerdo dónde lo aprendí, pero fue hace mucho tiempo. Este método funciona bien en todas las versiones de iOS y acabo de probarlo con iOS 5.1.

Nuevamente, SU APLICACIÓN NO SERÁ APROBADA POR APPLE SI HACE ESTO.

+0

Gracias de antemano. Lo leí y lo estudiaré ahora.No importa si es difícil :) – ilhnctn

+0

Np, espero que esta respuesta ayude a más personas, he visto esta pregunta varias veces en SO. – fbernardo

+0

Una segunda pregunta, ¿tengo que hacer jailbreak a mi dispositivo para hacer éstos (like..install OpenSSH usando Cydia y utilizar SSH para acceder a la concha de su teléfono) – ilhnctn

Cuestiones relacionadas