Así que uso una aplicación de chat llamada WeChat y tengo dos teléfonos. Sólo me permite iniciar sesión en un teléfono a la vez. Pero puedo iniciar sesión en un iPad y en un teléfono al mismo tiempo. Es una aplicación universal, lo que significa que no hay una ipa específica para el iPad. Me gustaría saber cómo puedo poner WeChat en un sandbox y hacer que piense que mi iPhone es un iPad. Gracias.
¿Cuál es la herramienta que se utiliza para interceptar la comunicación entre una aplicación y iOS?
1 votos
Como desarrollador de aplicaciones para iOS, sé que básicamente sólo tienes que preguntar "¿qué estilo de dispositivo es este?" y te devolverá
.Pad
o.Phone
. Lo determina en base al sistema preinstalado; por supuesto, iOS es diferente en iPhones y iPads y viene precargado con un pequeño "qué soy yo" que el usuario (tú) no puede cambiar. Aquí no tienes suerte.0 votos
@JohnRamos Lo que quieres decir es que el
UIRequiredDeviceCapabilities
que sospecho que puede ser falsificada si sabemos cómo.0 votos
Hay varias formas de determinar el dispositivo en el que se ejecuta la aplicación: primero,
UIDevice.CurrentDevice
devuelve algo así comoiPhone 6,2
oiPad 5,1
y segundo,UI_USER_INTERFACE_IDIOM()
que devuelve.Pad
o.Phone
. Ambos están rooteados en la versión de iOS que recibe tu dispositivo, y realmente no se pueden cambiar sin un Jailbreak. AUIRequiredDeviceCapabilities
es diferente: eso hace una cosa, que es impedir que una aplicación se instale en un dispositivo sin una determinada característica. Así que WeChat podría impedir que su aplicación se instalara en el iPad con eso; ¡no es lo que está pasando aquí!0 votos
Cita de la documentación de Apple sobre
UIRequiredDeviceCapabilities
: "No añadas una clave UIRequiredDeviceCapabilities a menos que necesites activamente restringir la instalación de tu aplicación basándote en la disponibilidad o falta de disponibilidad de una característica del dispositivo". Así que para concluir, no puedes engañar a WeChat para que piense que tu iPhone es un iPad.0 votos
¿Existe un método para interceptar
UIDevice.CurrentDevice
oUI_USER_INTERFACE_IDIOM()
en un iPhone con jailbreak?0 votos
He encontrado esto, aunque no tengo ni idea de si funcionará: m.reddit.com/r/Jailbreak/comments/2mhp2e/ipad_apps_on_iphone
0 votos
@JohnRamos Eso es realmente para que las aplicaciones del iPad sólo funcionen en los iPhones. Para las apps universales, el permanente ya es el 0775.
0 votos
De acuerdo, realmente no sé cómo podrías falsificar eso. Dudo que puedas, pero para llamar más la atención podrías plantear eso como una nueva pregunta o modificarlo en esta pregunta y plantear una recompensa. Además, ¿has probado a solicitar el sitio de escritorio de la versión web de WeChat en tu segundo teléfono?
0 votos
@aeroxy Sí, puedes interceptar básicamente cualquier cosa en un dispositivo con jailbreak.
0 votos
@JohnRamos funciona pero la función en un sitio de escritorio es limitada. No hay videollamadas ni llamadas de audio disponibles, y muchas otras características como wechat pay. También la interfaz de usuario del sitio de escritorio en un teléfono móvil es prácticamente inutilizable.
0 votos
@AndrewLarsson ¿cómo puedo interceptar
UIDevice.CurrentDevice
oUI_USER_INTERFACE_IDIOM()
?0 votos
@aeroxy sí, es comprensible. Huh.
0 votos
@aeroxy Tienes que escribir una aplicación con Mobile Substrate.
0 votos
@AndrewLarsson ¿cómo puedo interceptar
UIDevice.CurrentDevice
oUI_USER_INTERFACE_IDIOM()
con sustrato móvil? ¿Lo has hecho personalmente antes?0 votos
@aeroxy No esas llamadas en particular, pero tengo un par de aplicaciones de Mobile Substrate en GitHub github.com/developersBliss Sin embargo, es mejor que lleves esto a StackOverflow.
0 votos
@aeroxy Así que pensando de nuevo, creo que es posible que WeChat podría estar empleando un tercer método aquí: la consulta del sistema para el tamaño de la pantalla (que se puede pedir en mm) y deducir de eso si se trata de un iPad o iPhone. Esto puede ser confuso y poco fiable si el iPad está en vista dividida, o si es un iPhone 6s Plus frente a un iPad Mini, pero creo que teóricamente podría funcionar para ellos también.
0 votos
Si hablamos de llamadas específicas, son
UIScreen.mainScreen().applicationFrame.size.width
yUIScreen.mainScreen().applicationFrame.size.height
para encontrar el tamaño de la ventana de la aplicación, así comoUIScreen.mainScreen().bounds.width
yUIScreen.mainScreen().bounds.height
para encontrar el tamaño de toda la pantalla.0 votos
Yo echaría un vistazo a la sobrecarga de las llamadas a sysctl - es de muy bajo nivel y sería consultado por la mayoría de los métodos de alto nivel, como UIDevice, etc. Se ha hecho en este retoque del sustrato .
0 votos
Si tienes dos iPhones, ¿has considerado la posibilidad de registrar dos cuentas y tener una para cada uno? Asumo que uno es un teléfono del trabajo. Sé que sería molesto añadir tus contactos al otro perfil.