Obtener la fuerza de la señal del dispositivo

Estoy tratando de obtener la intensidad de la señal en dBm para el operador, wifi, 3g y 4g.

Actualmente estoy usando este código para obtener el proveedor y el wifi de la barra de estado y me gustaría saber si hay otra forma o una mejor. Además, ¿cómo podría obtenerlo por 3g y 4g?

UIApplication *app = [UIApplication sharedApplication];
NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];
NSString *dataNetworkItemView = nil;
NSString *wifiNetworkItemView = nil;

for (id subview in subviews) {
    if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarSignalStrengthItemView") class]]) {
        dataNetworkItemView = subview;
    }
    if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {
        wifiNetworkItemView = subview;
    }
}

int carrierSignalStrength = [[dataNetworkItemView valueForKey:@"signalStrengthRaw"] intValue];
int wifiSignalStrength = [[wifiNetworkItemView valueForKey:@"wifiStrengthRaw"] intValue];

No importa si los métodos que uso son privados o no.

Respuestas a la pregunta(2)

Su respuesta a la pregunta