2012-09-18 8 views
14

マイアプリのiOS 4にroamming検出するための方法の下に使用し、5iOS 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]); 

しかし、このコードは常に(でも私はローミングしていないのです、それは常にfalseを返す)iOS6にfalseを返し、私はそれは多分plistを考えますアップルによってファイルの場所が変更され、誰もが同じ問題に直面している、誰も私にこれを助けることができますか?

ありがとうございました。

+0

私にとっては同じ問題です!誰かが解決策を見つけた場合。 operatorPListSymLinkPathがnilの原因である:エラー257、操作が許可されていない – Vassily

+0

[iPhoneがローミング中であるかどうかを判断する方法はありますか?](http://stackoverflow.com/questions/900547/is-there-anyway- iphone-is-the-iphone-is-roamingを判断する) –

+3

リンクされた質問の解決策がなくなったiOS 6についての(古い)リンクされた質問の複製ではありません。 – Nate

答えて

6

これは私がappleから得た答えです:確かに

」残念ながら、これらのファイルはなど、サードパーティのアプリケーションによって使用されるように意図されていませんでした、パブリックAPIとして文書化、決してた例たくさんで。このような制限は、技術的にはiOSサンドボックスによって、または管理者によるApp Reviewによって強制されますが、これらのプロセスは完璧ではなく、アプリが実行してはいけないことが終わる機会があります。

iOS上の唯一の公衆電話のAPIはpであるが、直接的な回避策はありません。コアテレフォニーフレームワークによってもたらされます。そのCTTelephonyNetworkInfoクラスはありません彼らがローミングしているネットワークについて、あなたは、ユーザーの「ホーム」携帯サーバーに関する情報を提供します。」

彼らはあなたが地理IPチェックを使用することをお勧め。

1

iOS6ので、ここで同じ問題に直面してそのバージョン/var/mobile/Library/Preferences/com.apple.operator.plist SYM-リンクはこれ以上reversableあるので、ベータ1、。

なしのデバイスの唯一の方法一方で、今公開されていますTraousi Thor氏が言ったように、geo-ip経由でipをチェックすることです。または、ipクラスがある場合はチェックしてください単一のキャリアのためのアプリを擁護しています。

関連する問題