キャリア名と信号強度を取得するために間違った値を取得する理由に興味があります。ここにコードがあります。
CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *car = [netinfo subscriberCellularProvider];
NSLog(@"Carrier Name: %@", car.carrierName);
[netinfo release];
使用するキャリアではなく、値「キャリア」を取得するのはなぜですか?
これは信号強度を取得するためのコードです
void *libHandle = dlopen("/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony", RTLD_LAZY);
int (*CTGetSignalStrength)();
CTGetSignalStrength = dlsym(libHandle, "CTGetSignalStrength");
if( CTGetSignalStrength == NULL) NSLog(@"Could not find CTGetSignalStrength");
int result = CTGetSignalStrength();
NSLog(@"Signal strength: %d", result);
dlclose(libHandle);
私が知っているように、信号強度はdBm値(負)ですが、なぜ上記の値は正の値を示し、信号強度を示しているのですか?dBmで信号強度を表示するための値マッピングはありますか
PS私は実際のiphoneデバイスでプログラムを実行しましたが、それでも間違った値を取得します。
どんな助けでもいただければ幸いです。
ありがとう。