2012-09-18 13 views
14

Mi solicitud mediante el siguiente métodos para detectar roamming en IOS 4 y 5.¿Hay alguna forma de detectar el estado de roaming en iOS 6?

NSString *carrierPListSymLinkPath = @"/var/mobile/Library/Preferences/com.apple.carrier.plist"; 
NSString *operatorPListSymLinkPath = @"/var/mobile/Library/Preferences/com.apple.operator.plist"; 

NSFileManager *fm = [NSFileManager defaultManager]; 
NSError *error = nil; 

NSString *carrierPListPath = [fm destinationOfSymbolicLinkAtPath:carrierPListSymLinkPath error:&error];  

NSString *operatorPListPath = [fm destinationOfSymbolicLinkAtPath:operatorPListSymLinkPath error:&error]; 

return (![operatorPListPath isEqualToString:carrierPListPath]); 

Pero este código siempre vuelven falsa en iOS6 (ni siquiera yo estoy en roaming, siempre return false), creo que tal vez el plist la ubicación del archivo modificada por Apple, ¿alguien enfrenta el mismo problema? ¿Alguien puede ayudarme con esto?

Gracias.

+0

mismo problema para mí! si alguien ha encontrado una solución. operatorPListSymLinkPath es nil causa: error 257, operación no permitida – Vassily

+0

posible duplicado de [¿Hay alguna manera de determinar si el iphone está en itinerancia?] (http://stackoverflow.com/questions/900547/is-herehereanyway) to-determination-if-the-iphone-is-roaming) –

+3

esto no es un duplicado de la (antigua) pregunta vinculada, ya que esta pregunta es sobre iOS 6, donde la solución en la pregunta vinculada ya no funciona. – Nate

Respuesta

6

Ésta es una respuesta que obtuve de manzana:

"De hecho Desafortunadamente estos archivos nunca se documentaron como API pública y, como tal, nunca fueron destinados a ser utilizados por aplicaciones de terceros En muchos de los casos.. tales restricciones son impuestas, ya sea técnicamente por el entorno limitado de iOS o administrativamente por App Review. Sin embargo, ninguno de estos procesos es perfecto, y hay ocasiones en que las aplicaciones terminan haciendo cosas que no deberían estar haciendo. Desafortunadamente, esto pone a estas aplicaciones en una posición difícil cuando la aplicación mejora, como ha sucedido en este caso.

En cuanto a las soluciones directas, realmente no hay una. Las únicas API de telefonía pública en iOS son p proporcionada por el marco de Core Telephony. Su clase CTTelephonyNetworkInfo le da información acerca del servidor celular del usuario 'casa', no se trata de la red que están en itinerancia en."

Sugieren que utiliza el cheque de geo-ip.

1

frente al mismo problema aquí desde iOS6 beta 1, ya que la versión /var/mobile/Library/Preferences/com.apple.operator.plist sim-enlace no es más reversible.

ningún otro dispositivo única manera pública son ahora, en el mientras tanto el Una solución única es verificar el IP vía geo-ip, como dijo Trausti Thor, o verificar la clase ip si está desarrollando Loping una aplicación para un solo operador.

Cuestiones relacionadas