2012-09-18 23 views
14

Ứng dụng của tôi sử dụng phương pháp dưới đây để phát hiện roamming trong iOS 4 và 5.Có cách nào để phát hiện trạng thái chuyển vùng trên iOS 6 không?

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

Nhưng mã này luôn trả về false trên iOS6 (thậm chí tôi không chuyển vùng, nó luôn luôn trả về false), tôi nghĩ rằng nó có thể là plist vị trí tập tin thay đổi bởi Apple, không ai phải đối mặt với cùng một vấn đề, bất cứ ai có thể giúp tôi về điều này?

Cảm ơn.

+0

cùng một vấn đề đối với tôi! nếu ai đã tìm được giải pháp. operatorPListSymLinkPath là nguyên nhân không: lỗi 257, Hoạt động không được phép – Vassily

+0

có thể trùng lặp của [Có cách nào để xác định xem iphone có chuyển vùng không?] (http://stackoverflow.com/questions/900547/is-there-any-way- để xác định if-the-iphone-is-roaming) –

+3

đây không phải là bản sao của câu hỏi được liên kết (cũ), vì câu hỏi này là về iOS 6, nơi giải pháp trong câu hỏi được liên kết không còn hoạt động nữa. – Nate

Trả lời

6

Đây là một câu trả lời tôi nhận được từ táo:

"Thật vậy Thật không may những tập tin này không bao giờ được ghi nhận như API công cộng và, như vậy, không bao giờ có ý định sẽ được sử dụng bởi các ứng dụng của bên thứ ba Trong rất nhiều trường hợp.. các hạn chế như vậy được thực thi, hoặc về mặt kỹ thuật bởi iOS sandbox hoặc quản lý bởi App Review, tuy nhiên, không phải các quá trình này là hoàn hảo và đôi khi các ứng dụng sẽ làm những việc mà chúng không nên thực hiện. vị trí khó khăn khi việc thực thi được cải thiện, như đã xảy ra trong trường hợp này.

Cách giải quyết trực tiếp thực sự không phải là cách duy nhất.Các API điện thoại công cộng duy nhất trên iOS là p rovided bởi khung Core Telephony. lớp CTTelephonyNetworkInfo của nó cung cấp cho bạn thông tin về 'nhà' máy chủ di động của người dùng, không phải về mạng mà họ đang chuyển vùng trên."

Họ đề nghị bạn sử dụng séc geo-ip.

1

Đối mặt với cùng một vấn đề ở đây từ iOS6 beta 1, kể từ phiên bản đó /var/mobile/Library/Preferences/com.apple.operator.plist liên kết sym không thể đảo ngược được nữa.

Hiện không có cách nào khác chỉ có thiết bị công cộng, trong khi đó giải pháp duy nhất là kiểm tra ip qua geo-ip, như Trausti Thor đã nói, hoặc kiểm tra lớp học ip nếu bạn bị bỏ loping một ứng dụng cho một tàu sân bay duy nhất.

Các vấn đề liên quan