Is there any ways to detect the roaming status on iOS 6?
Asked Answered
R

2

14

My application using below methods to detect roamming in iOS 4 and 5.

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]); 

But this code always return false on iOS6 (even i am not roaming, it always return false), i think it maybe the plist file location changed by Apple, does any one face the same issue, can anyone help me on this?

Thanks.

Ruffner answered 18/9, 2012 at 8:51 Comment(3)
same probleme for me ! if anybody has found a solution. operatorPListSymLinkPath is nil cause : error 257, Operation not permittedYettie
possible duplicate of Is there any way to determine if the iphone is roaming?Escapism
this is not a duplicate of the (old) linked question, as this question is about iOS 6, where the solution in the linked question no longer works.Mundt
S
6

This is an answer I got from apple :

"Indeed. Unfortunately these files were never documented as public API and, as such, were never intended to be used by third party apps. In a lot of cases such restrictions are enforced, either technically by the iOS sandbox or administratively by App Review. However, neither of these processes is perfect, and there are occasions where apps end up doing things they shouldn't be doing. Unfortunately this puts these apps in a difficult position when the enforcement improves, as has happened in this case.

As to direct workarounds there really isn't one. The only public telephony APIs on iOS are provided by the Core Telephony framework. Its CTTelephonyNetworkInfo class gives you information about the user's 'home' cellular server, not about the network that they are roaming on."

They suggest you use geo-ip check.

Shilashilha answered 26/9, 2012 at 14:49 Comment(0)
W
1

Facing the same problem here since iOS6 beta 1, since that version /var/mobile/Library/Preferences/com.apple.operator.plist sym-link is no more reversable.

No other device-only way are public now, in the meanwhile the unique solution is to check for the ip via geo-ip, as Trausti Thor said, or checking for the ip class if you are developing an app for a single carrier.

Wohlen answered 3/10, 2012 at 10:35 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.