已经有一些关于此的问题,但其中似乎没有提供准确的结果。我需要简单地确定手机是否在给定时刻连接到手机网络。
此类似乎记录不正确,返回未在手机上安装 SIM 卡的 mobileCountryCode、isoCountryCode 和 mobileNetworkCode 的值。如果手机已解锁,则运营商名称表示“家庭”网络或以前的家庭网络。
我还查找了一些人声称以下工作,它使用 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;
}
谢谢。
编辑:该应用程序已连接到内部 wifi 并且必须保持连接,这使得可达性检查更加困难。