Estoy trabajando en una aplicación de iPhone y realmente me gustaría determinar si el dispositivo está en itinerancia para que pueda evitar de forma inteligente costosas conexiones de mis usuarios si están fuera de su red doméstica.¿Hay alguna forma de determinar si el iphone está en itinerancia?
La aplicación que estoy escribiendo es para teléfonos jailbreak, sin embargo, preferiría usar SDK estándar si es posible.
Esto es lo que ya he encontrado:
1. SDK de Apple: En la documentación de manzana, me encontré con la promesa de API SCNetworkReachability de Apple. La API proporciona acceso a cosas tales como si está en una red WIFI o de teléfono celular, si una conexión de red está actualmente establecida, etc. Sin embargo, al buscar en la referencia de API de SCNetworkReachability, 'roam' o 'roaming' aparecen nulos. Lo mismo ocurre con su código de muestra.
2. Grep de un iPhone con Jailbreak FS: Las preferencias -> General -> pestaña de redes es que los usuarios pueden activar o desactivar la itinerancia. Buscando en el archivo plist para esto ("/Applications/Preferences/Network.plist") yo era capaz de encontrar las siguientes referencias:
PostNotification = "com.apple.commcenter.InternationalRoamingEDGE.changed";
cell = PSSwitchCell;
default = 1;
defaults = "com.apple.commcenter";
key = InternationalRoamingEDGE;
label = "EDGE_ROAMING_TOGGLE";
requiredCapabilities = (
telephony
);
Ésta es sin duda una ventaja, ya que parece que puedo inscribirse para recibir notificaciones que el usuario ha cambiado la configuración de InternationalRoaming. Aún así, no estoy seguro de cómo convertir esto en el conocimiento de que de hecho están vagando actualmente.
3. Comprobar la clase vierten fuentes de trampolín: He vertido las clases de trampolín usando class-dump. No he podido encontrar ninguna referencia a 'roaming' o 'itinerancia'
4. Obviamente, se inició revisando al SO para esto: No se pudo encontrar nada relacionado.
Otros pasos: ¿Alguien tiene algún consejo aquí? Sé que esto es posible. Apple claramente ha hecho que sea muy difícil de encontrar sin embargo. Dudo mucho que esto sea posible sin usar un marco privado. (como CoreTelephony). Como esta es una aplicación jailbroken, puedo recurrir a raspar la pantalla del nombre del operador con el código insertado en el SpringBoard, pero preferiría no seguir esa ruta. Cualquier consejo muy apreciado. Gracias.
Puede probar el [Apple Developer Forums] (http://devforums.apple.com/). –