2012-09-18 45 views
14

我用下面的方法應用到檢測roamming中的iOS 4和5有什麼方法可以檢測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]); 

但這個代碼總是在iOS6的返回false(即使我不是漫遊,它總是返回false),我認爲這也許是的plist文件位置由Apple更改,任何人都面臨同樣的問題,任何人都可以幫助我嗎?

謝謝。

+0

對我來說同樣有問題!如果有人找到了解決方案。 operatorPListSymLinkPath是零原因:錯誤257,操作不允許 – Vassily

+0

可能重複[有什麼方法可以確定iPhone是否在漫遊?](http://stackoverflow.com/questions/900547/is-there-any-way-以確定如果iphone是漫遊) –

+3

這不是一個(舊)鏈接問題的重複,因爲這個問題是關於iOS 6,其中鏈接問題的解決方案不再起作用。 – Nate

回答

6

這是一個答案,我從蘋果得到:

「的確不幸的是這些文件從未被記錄爲公共API和,因此,從來沒有打算通過第三方應用程序可以使用在很多情況下。這些限制在技術上由iOS沙箱或App Review實施,但這些過程都不是完美的,有時應用程序最終會做自己不應該做的事情,不幸的是,這會將這些應用程序置於在這種情況下,強制執行改善時的困難位置

至於直接的解決方法,實際上並沒有一個,iOS上唯一的公共電話API是p被核心電話框架所鼓舞。它CTTelephonyNetworkInfo類爲您提供有關用戶的「家」移動服務器的信息,不是他們漫遊的網絡。」

他們建議您使用地理IP檢查。

1

這裏面臨着同樣的問題,因爲iOS6的Beta 1中,因爲該版本/var/mobile/Library/Preferences/com.apple.operator.plist符號鏈接是沒有更多的可逆式。

沒有其他設備,唯一的辦法是公開的,現在,在這段時間裏獨特的解決方案是通過geo-ip來檢查IP,如Trausti Thor所述,或者如果您正在檢查ip class爲單個運營商提供應用程序。

相關問題