これについてはすでにいくつかの質問がありますが、正確な結果を提供するものは何もないようです。特定の瞬間に電話が携帯電話ネットワークに接続されているかどうかを簡単に判断する必要があります。
SIM が電話にインストールされていない場合、このクラスは、mobileCountryCode、isoCountryCode、および mobileNetworkCode の値を返すため、正しく文書化されていないようです。携帯電話のロックが解除されている場合、carrierName は「ホーム」ネットワークまたは以前のホーム ネットワークを示します。
また、調べてみると、CoreTelephony フレームワークの文書化されていない方法を使用する次の方法が機能すると主張する人もいましたが、結果は役に立たず、おそらくそれ自体が一貫して更新されていない、一見ランダムな数字を報告しています。
-(int) getSignalStrength
{
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();
dlclose(libHandle);
return result;
}
ありがとう。
編集: アプリは内部 Wi-Fi に接続されており、そのままにしておく必要があるため、到達可能性チェックがより困難になります。