2012-04-15 6 views
7

私は現在の接続を検出するためにリーチャビリティAPIを使用していますが、私はWIFIと3Gのみを区別できます。iOS SDKを使用してLTE接続を検出することはできますか?

私は以下のフラグを取得します:

LTE:kSCNetworkReachabilityFlagsIsLocalAddress|kSCNetworkReachabilityFlagsIsWWAN|kSCNetworkReachabilityFlagsTransientConnection|kSCNetworkReachabilityFlagsReachable

WIFI:kSCNetworkReachabilityFlagsIsDirect|kSCNetworkReachabilityFlagsReachable

問題は、LTEは3G接続と同じフラグを返すことです。ユーザーが現在LTEまたは3Gを使用しているかどうかを判断する方法はありますか?

+0

ネットワークに付属するより高い帯域幅に関心がありますか、それともネットワーク自体のタイプですか?前者の回避策はありますが、後者の回避策はありません。 – bendu

+0

回避策は単に何かをダウンロードして速度を追跡しようとしていると思いますか? –

答えて

3

この隠されたCore Telephony APIが、あなたがLTEに接続しているのか遅い技術に接続しているのかを判断するのに十分な情報を提供できるのだろうかと思います。

CTRegistrationGetCurrentMaxAllowedDataRate(); 

実験する価値があります。ここではプライベートAPIを使用する方法について

より:iPhone mobile number using Core telephony

をしかし、私はあなたがプライベートAPIを使用する場合は、あなたのアプリがアップルによって拒否されることを読みました。

15

iOS 7では、CoreTelephonyフレームワークでCTTelephonyNetworkInfocurrentRadioAccessTechnologyプロパティを使用してこれを見つけることができます。

#import <CoreTelephony/CTTelephonyNetworkInfo.h> 

CTTelephonyNetworkInfo *networkInfo = [CTTelephonyNetworkInfo new]; 

if ([networkInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) { 
    // ... 
} 
+2

誰かが 'currentRadioAccessTechnology'メソッドに関する文書がない理由を知っていますか? https://developer.apple.com/library/ios/documentation/NetworkingInternet/Reference/CTTelephonyNetworkInfo/Reference/Reference.html – Robert

+0

このメソッドはiOS7.0を追加しましたが、ドキュメントを追加しませんでした。 ヘッダーファイル "CTTelephonyNetworkInfo.h"を確認してください。 '' 'oc @property(非原子性、読み取り専用、保持)NSString * currentRadioAccessTechnology __OSX_AVAILABLE_STARTING(__ MAC_NA、__ IPHONE_7_0); '' ' – TopChul

+1

これは正式に文書化されておらず、私は緊張しています。私はそれが取り除かれる場合、私はいくつかのデフォルトの動作をすることができますように試してキャッチに入れてください。 –

関連する問題