Files
peko-ios/YuMi/Tools/YYUtility/YYUtility+Carrier.m
2023-11-20 14:25:47 +08:00

92 lines
2.6 KiB
Objective-C

//
// 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;
}
+(NSString *)getMobileCountryCode{
CTCarrier *carrier = [[CTTelephonyNetworkInfo alloc] init].subscriberCellularProvider;
NSString *code = carrier.mobileCountryCode;
return code;
}
+ (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