Files
yinmeng-ios/xplan-ios/Base/Tool/YYUtility/YYUtility+Carrier.m

89 lines
2.5 KiB
Mathematica
Raw Normal View History

2021-09-06 18:47:38 +08:00
//
// YYUtility+Carrier.m
// YYFoundation
//
// Created by wuwei on 14-5-30.
// Copyright (c) 2014 YY Inc. All rights reserved.
//
#import "YYUtility.h"
#import <CoreTelephony/CTCarrier.h>
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#import "CarrierIdentifier.h"
/*
* The most update-to-date list of MNC&MCC is fetched
* from the website below: http://www.mcc-mnc.com
*/
// MCCs
static NSString * const kMobileCountryCode_China = @"460"; //
// MNCs
static NSSet * kMobileNetworkCodes_ChinaMobile; //
static NSSet * kMobileNetworkCodes_ChinaUnicom; //
static NSSet * kMobileNetworkCodes_ChinaTelecom; //
@implementation YYUtility (Carrier)
+ (void)load
{
if (self == [YYUtility self]) {
kMobileNetworkCodes_ChinaMobile = [NSSet setWithObjects:@"00", @"02", @"07", nil]; //
kMobileNetworkCodes_ChinaUnicom = [NSSet setWithObjects:@"01", @"06", nil]; //
kMobileNetworkCodes_ChinaTelecom = [NSSet setWithObjects:@"03", @"05", nil]; //
}
}
+ (NSString *)carrierName
{
return [self carrier].carrierName;
}
+ (NSInteger)carrierIdentifier
{
return [self identifierOfCarrier:[self carrier]];
}
+ (CTCarrier *)carrier
{
return [[CTTelephonyNetworkInfo alloc] init].subscriberCellularProvider;
}
+ (NSInteger)identifierOfCarrier:(CTCarrier *)carrier
{
CarrierIdentifier identifier = CarrierIdentifier_Unknown;
do {
if (carrier.mobileCountryCode == nil || carrier.mobileNetworkCode == nil)
{
identifier = CarrierIdentifier_Unknown;
break;
}
if ([carrier.mobileCountryCode isEqualToString:kMobileCountryCode_China])
{
if ([kMobileNetworkCodes_ChinaMobile containsObject:carrier.mobileNetworkCode])
{
identifier = CarrierIdentifier_ChinaMobile;
break;
}
else if ([kMobileNetworkCodes_ChinaUnicom containsObject:carrier.mobileNetworkCode])
{
identifier = CarrierIdentifier_ChinaUnicom;
break;
}
else if ([kMobileNetworkCodes_ChinaTelecom containsObject:carrier.mobileNetworkCode])
{
identifier = CarrierIdentifier_ChinaTelecom;
break;
}
}
identifier = CarrierIdentifier_Otherwise;
} while (0);
return identifier;
}
@end