2012-11-27 32 views
4

有什麼辦法從移動網絡獲取國家代碼。我們可以通過代碼獲取設備中SIM的國家名稱嗎?在編程中使用iPhone中的移動運營商識別國家代碼?

請幫我拿出一些工作代碼。我檢查了CoreTelephony框架,但ddnt獲得成功。

在此先感謝!

+0

確定使用位置的用戶的位置ns API。使用一些web服務來解決該國家,因此解決該地點的國家代碼。 –

+2

但我的要求是從不使用GPS位置的移動運營商獲取國家代碼。 –

+1

有沒有辦法做到這一點,無論如何不'合法'..如果你試圖嗅探大多數用戶的模擬信息,蘋果很可能會拒絕你的應用程序。 –

回答

17

編輯:在Xcode 6,只需添加這行,即使連接框架的項目是自動完成的:

@import CoreTelephony; 

原:添加CoreTelephony.framework到您的項目。 你的類中添加這兩條線:

#import <CoreTelephony/CTCarrier.h> 
#import <CoreTelephony/CTTelephonyNetworkInfo.h> 

這是代碼:

CTTelephonyNetworkInfo *networkInfo = [[CTTelephonyNetworkInfo alloc] init]; 
CTCarrier *carrier = [networkInfo subscriberCellularProvider]; 


// Get carrier name 
NSString *carrierName = [carrier carrierName]; 
if (carrierName != nil) 
    NSLog(@"Carrier: %@", carrierName); 

// Get mobile country code 
NSString *mcc = [carrier mobileCountryCode]; 
if (mcc != nil) 
    NSLog(@"Mobile Country Code (MCC): %@", mcc); 

// Get mobile network code 
NSString *mnc = [carrier mobileNetworkCode]; 

if (mnc != nil) 
    NSLog(@"Mobile Network Code (MNC): %@", mnc); 

注意,國家代碼是數字代碼,你可以找到列表here

+0

我見過其他問題上的意見,表明返回的信息是手機鎖定的運營商,而不是漫遊時使用的運營商。例如:http://stackoverflow.com/questions/853467/retreiving-carrier-name-from-iphone-programmatically嗯..進一步閱讀表明mnc確實在漫遊時改變。 –

+0

我試過我的iPhone 4S設備上面的代碼,它工作正常 –

+0

@Giusseppe iPichy ..你是否正在漫遊到另一家運營商? –

1

這裏面CoreTelephony

CTTelephonyNetworkInfo *networkInfo = [[CTTelephonyNetworkInfo alloc] init]; 
CTCarrier *carrier = [networkInfo subscriberCellularProvider]; 
相關問題