liberar - Recuperando el nombre del operador del iPhone mediante programación
liberar iphone 5s gratis 2017 (7)
En iOS 4, el marco CoreTelephony es utilizable, aquí hay un fragmento para obtener el nombre del operador:
CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [netinfo subscriberCellularProvider];
NSLog(@"Carrier Name: %@", [carrier carrierName]);
[netinfo release];
Enlace contra CoreTelephony e incluya en sus encabezados:
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#import <CoreTelephony/CTCarrier.h>
¿Hay alguna manera de conocer el soporte de la célula en un iPhone programáticamente?
** actualización **
Estoy buscando el nombre del operador al que está conectado el iPhone.
No hay una API pública para obtener el nombre del operador. Si no necesita publicar en la App Store, puede utilizar aplicaciones privadas.
VVCarrierParameters.h
en el paquete VisualVoiceMail parece tener un método de clase carrierServiceName
que podría ser lo que necesita. Suelta ese encabezado en tu proyecto y llama a [VVCarrierParameters carrierServiceName]
.
Tenga en cuenta que su aplicación probablemente será rechazada si hace esto .
Obtener el nombre del operador de la barra de estado en caso de que Corephony devuelva "Carrier"
func getCarrierName() -> String? {
var carrierName: String?
let typeName: (Any) -> String = { String(describing: type(of: $0)) }
let statusBar = UIApplication.shared.value(forKey: "_statusBar") as! UIView
for statusBarForegroundView in statusBar.subviews {
if typeName(statusBarForegroundView) == "UIStatusBarForegroundView" {
for statusBarItem in statusBarForegroundView.subviews {
if typeName(statusBarItem) == "UIStatusBarServiceItemView" {
carrierName = (statusBarItem.value(forKey: "_serviceString") as! String)
}
}
}
}
return carrierName
}
Para usuarios rápidos, puedes probar esto:
import CoreTelephony
static var carrierName:String? {
let networkInfo = CTTelephonyNetworkInfo()
let carrier = networkInfo.subscriberCellularProvider
return carrier?.carrierName
}
Solo para anotar aquí ... Probé esta API en diferentes tarjetas SIM y parece que el nombre del operador al que está bloqueado el iPhone se devuelve con [carrer carrierName] !!
Probé esto en 2 iPhones, uno bloqueado y el otro no, y para el bloqueado, independientemente del proveedor de SIM, devuelve el nombre del operador que está bloqueado cada vez que ejecuto mi aplicación de prueba. ¡Sin embargo, tenga en cuenta que el MNC sí cambia!
Sin embargo, existe una forma de hacerlo, solo está disponible en iOS 4, por lo que no podrá usarlo en versiones anteriores. Y esto probablemente también rompa tu compatibilidad con versiones anteriores.
Mientras desarrollaba Alpha , encontré el mismo problema. El proyecto en sí no estaba limitado a usar API pública, así que primero probé la solución de @Jason Harwig. Como no podía hacer que funcionara, pensé en otra opción.
Mi solución usa API privada para acceder al _serviceString
ivar de la etiqueta ( UIStatusBarServiceItemView
) que se muestra en la barra de estado.
Se basa en la barra de estado que tiene un valor de operador y solo necesita UIKit
para funcionar.
- (NSString *)carrierName
{
UIView* statusBar = [self statusBar];
UIView* statusBarForegroundView = nil;
for (UIView* view in statusBar.subviews)
{
if ([view isKindOfClass:NSClassFromString(@"UIStatusBarForegroundView")])
{
statusBarForegroundView = view;
break;
}
}
UIView* statusBarServiceItem = nil;
for (UIView* view in statusBarForegroundView.subviews)
{
if ([view isKindOfClass:NSClassFromString(@"UIStatusBarServiceItemView")])
{
statusBarServiceItem = view;
break;
}
}
if (statusBarServiceItem)
{
id value = [statusBarServiceItem valueForKey:@"_serviceString"];
if ([value isKindOfClass:[NSString class]])
{
return (NSString *)value;
}
}
return @"Unavailable";
}
- (UIView *)statusBar
{
NSString *statusBarString = [NSString stringWithFormat:@"%@ar", @"_statusB"];
return [[UIApplication sharedApplication] valueForKey:statusBarString];
}
Solo probé el método con aplicaciones que tienen una barra de estado visible. Devuelve la misma cadena que se muestra en la barra de estado, por lo que funciona correctamente incluso en itinerancia.
Este método no es seguro para la App Store.