iOS:测量通话质量/信号强度

时间:2014-01-09 09:49:26

标签: ios iphone

我正在构建类似RootMetrics的应用 - 手机覆盖率链接https://itunes.apple.com/us/app/cell-phone-coverage-map/id399701910 或OpenSignal - https://itunes.apple.com/app/opensignal/id598298030

我需要帮助才能了解他们如何衡量通话/语音质量。据我所知,这些API是私有的,使用它们的应用程序,将不会在App Store上获得授权。在这种情况下,谁能告诉我如何测量信号强度。

1 个答案:

答案 0 :(得分:2)

如果不使用私有API,我不相信这是可能的:s。正如你所说,当你尝试将应用程序上传到App Store时,Apple的机器人可能(肯定)会发现。

如果你仍想使用私有API,这种测量载波信号强度的方法应该是诀窍:

-(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;
}

我建议取大约10次测量的平均值,因为我认为这些测量值可能差别很大。