10

このコードでキャリア名を取得しようとしました(CoreTelephonyを使用):

CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [netinfo subscriberCellularProvider];
NSLog(@"Carrier Name: %@", [carrier carrierName]);

「キャリア」を返します。iPhoneの設定に行くと、キャリアの名前は正しいです。私の電話の iOS は v4.2.1 です。

私は何を間違っていますか?

4

2 に答える 2

2

本当に文字列「Carrier」を取得しますか、それとも文字列は空ですか? ドキュメントには次のように記載されています。

次のいずれかに該当する場合、このプロパティの値は nil です。

デバイスは機内モードです。デバイスに SIM カードがありません。デバイスがセルラー サービスの範囲外にあります。

シミュレーターでも空です。

とにかく、名前が正しいことはめったにないため、 mobileNetworkCodeを確認する必要があります (少なくともヨーロッパでは、オペレーターが頻繁に名前を変更します)。

于 2012-01-06T12:55:04.667 に答える
0

これにより、モバイルネットワークコード、モバイル国コードを取得できます。これらの値から、これがどのシム名かを特定できます。

CTTelephonyNetworkInfo* info = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier* carrier = info.subscriberCellularProvider;
NSString *mobileCountryCode = carrier.mobileCountryCode;
NSString *carrierName = carrier.carrierName;
NSString *isoCountryCode = carrier.isoCountryCode;
NSString *mobileNetworkCode = carrier.mobileNetworkCode;

このパラメーターが属するネットワークのキャリア名を指定するための Web サービスを作成できます。これらのパラメーターは、このウィキペディアから一意に識別できます。

たとえば、私の国コードは「410」、キャリア ネットワークは「06」であり、キャリア名を正しく識別します。

私も同じ問題で立ち往生していましたが、解決しました

于 2014-05-17T11:20:02.393 に答える