inspeero
inspeero

Reputation: 75

iOS: Measure call quality/signal Strength

I am building an app like RootMetrics - Cell Phone Coverage link https://itunes.apple.com/us/app/cell-phone-coverage-map/id399701910 here or OpenSignal - https://itunes.apple.com/app/opensignal/id598298030

I need help to understand how they measure call/voice quality. As far as I understand such APIs are private and apps using them, would not be authorized on App Store. Can anyone tell me how to measure signal strength in such cases.

Upvotes: 3

Views: 1218

Answers (1)

Daniel Larsson
Daniel Larsson

Reputation: 6394

I do not believe this is possible without the use of private API:s. And as you said, Apple's bots will probably (definitely) find out when you try to upload the app to App Store.

If you still want to use a private API, this method for measuring carrier signal strength should to the trick:

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

I would suggest taking the average value of about 10 measurements since I believe that these can differ a lot.

Upvotes: 2

Related Questions