Pregunta sobre CTCarrier de CoreTelephony. Escuché que debería usar serviceSubscriberCellularProviders en lugar de subscriberCellularProvider en iOS 12 porque subscriberCellularProvider quedaría obsoleto. Así que escribí los siguientes códigos.

import UIKit
import CoreTelephony

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        
        let telephony = CTTelephonyNetworkInfo()
        if #available(iOS 12.0, *) {
            let carrier = telephony.serviceSubscriberCellularProviders
            print(carrier)
        }
        else {
            let carrier = telephony.subscriberCellularProvider
            print(carrier)
        }
        
    }

}

SubscriberCellularProvider devuelve correctamente la información correcta de la tarjeta SIM, sin embargo, serviceSubscriberCellularProviders solo devuelve un valor nulo.

¿Sabes por qué pasa así? por favor, ayúdame

7
HyunJin Yoon 17 oct. 2018 a las 05:40

2 respuestas

La mejor respuesta

Es un error en iOS 12.0.xy se ha corregido en iOS 12.1

4
santos 22 nov. 2018 a las 14:05

Creo que es un error de Apple. Prueba esto:

    CTTelephonyNetworkInfo *networkStatus = [[CTTelephonyNetworkInfo alloc] init];
if (@available(iOS 12.0, *)) {
    NSDictionary *info = networkStatus.serviceSubscriberCellularProviders;
    NSLog(@"%@", [networkStatus valueForKey:@"serviceSubscriberCellularProvider"]);
}

Funciona bien en iPhone XS Max (tarjetas SIM dobles) y parece ser un método privado.

-1
yonglu li 18 oct. 2018 a las 08:56