क्या आईफोन पर सेल वाहक को प्रोग्रामिक रूप से जानने का कोई तरीका है?आईफोन से कैरियर नाम पुनर्प्राप्त करना प्रोग्रामेटिक रूप से
** अद्यतन **
मैं वाहक नाम जो iPhone से जुड़ा है के लिए देख रहा हूँ।
क्या आईफोन पर सेल वाहक को प्रोग्रामिक रूप से जानने का कोई तरीका है?आईफोन से कैरियर नाम पुनर्प्राप्त करना प्रोग्रामेटिक रूप से
** अद्यतन **
मैं वाहक नाम जो iPhone से जुड़ा है के लिए देख रहा हूँ।
आईओएस 4 में, CoreTelephony ढांचे useable है, यहाँ एक टुकड़ा वाहक नाम पाने के लिए है: CoreTelephony के खिलाफ
CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [netinfo subscriberCellularProvider];
NSLog(@"Carrier Name: %@", [carrier carrierName]);
[netinfo release];
लिंक और अपने हेडर में शामिल हैं:
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#import <CoreTelephony/CTCarrier.h>
वाहक का नाम प्राप्त करने के लिए कोई सार्वजनिक API नहीं है। यदि आपको ऐप स्टोर पर प्रकाशित करने की आवश्यकता नहीं है तो आप निजी एपीआई का उपयोग कर देख सकते हैं।
VVCarrierParameters.h
विजुअलवॉइसमेल पैकेज में carrierServiceName
क्लास विधि है जो आपको चाहिए जो हो सकता है। अपने प्रोजेक्ट में हेडर ड्रॉप करें और [VVCarrierParameters carrierServiceName]
पर कॉल करें।
नोट करें कि यदि आप यह करते हैं तो आपके ऐप को अस्वीकार कर दिया जाएगा।
एक ऐसे रास्ते लेकिन यह तो आप पिछले संस्करणों पर इसका इस्तेमाल करने में सक्षम नहीं होगा आईओएस 4 पर ही उपलब्ध है नहीं है। और यह शायद आपकी पिछड़ी संगतता भी तोड़ देता है।
बस बनाने के लिए एक यहां ध्यान दें .. मैंने इस एपीआई को विभिन्न सिम्स पर परीक्षण किया और ऐसा लगता है कि ऑपरेटर का नाम आईफोन लॉक किया गया है [कैरियर कैरियर नाम] के साथ वापस आ गया है !!
मैंने सिम प्रदाता की परवाह किए बिना 2 आईफोन, एक लॉक और दूसरा नहीं, और लॉक के लिए इसका परीक्षण किया, यह ऑपरेटर का नाम देता है जब भी मैं अपना टेस्ट ऐप चलाता हूं। ध्यान दें कि एमएनसी बदलता है!
अच्छी टिप्पणी। इस जवाब को तब तक नहीं पता था जब तक कि मैंने यह जवाब नहीं देखा। पुष्टि कर सकता हूं कि मुझे वही व्यवहार मिल रहा है - वाहकनाम लॉक वाहक का नाम देता है, सिम वाहक नहीं। –
आईओएस 7 पर परीक्षण किया गया, अनलॉक फोन: हमेशा "वाहक "वाहक नाम के रूप में। इसलिए यह पता लगाना संभव नहीं है कि कौन सा ऑपरेटर फोन में है। स्ट्रिंग रेटू rned सेटिंग्स -> सामान्य -> कैरियर के अंतर्गत के बारे में प्रदर्शित स्ट्रिंग के बराबर है। हालांकि संस्करण संख्या खो गई है। – Legoless
यह सही है। एमएनसी सीटी कैरियर से वाहक का एकमात्र सटीक परीक्षण है। हम एमएनसी वैल्यू को भी कैश करते हैं, क्योंकि यदि उपयोगकर्ता के पास नेटवर्क कनेक्शन नहीं है, तो यह शून्य वापस आ जाएगा, हवाई जहाज मोड में है, या अपनी सिम हटा दी है। – NSAlexC
Alpha विकसित करते समय, मुझे एक ही समस्या का सामना करना पड़ा। यह परियोजना केवल सार्वजनिक एपीआई का उपयोग करने तक ही सीमित नहीं थी, इसलिए मैंने पहले @ जेसन हरविग के समाधान की कोशिश की। क्योंकि मैं इसे काम नहीं कर सका, मैंने एक और विकल्प सोचा।
मेरे समाधान लेबल (UIStatusBarServiceItemView
) है कि स्थिति पट्टी में प्रदर्शित किया जाता है की _serviceString
इवर तक पहुँचने के लिए निजी API का उपयोग करता।
यह कैरियर मूल्य वाले स्टेटस बार पर निर्भर करता है और केवल काम करने के लिए UIKit
की आवश्यकता है।
- (NSString *)carrierName
{
UIView* statusBar = [self statusBar];
UIView* statusBarForegroundView = nil;
for (UIView* view in statusBar.subviews)
{
if ([view isKindOfClass:NSClassFromString(@"UIStatusBarForegroundView")])
{
statusBarForegroundView = view;
break;
}
}
UIView* statusBarServiceItem = nil;
for (UIView* view in statusBarForegroundView.subviews)
{
if ([view isKindOfClass:NSClassFromString(@"UIStatusBarServiceItemView")])
{
statusBarServiceItem = view;
break;
}
}
if (statusBarServiceItem)
{
id value = [statusBarServiceItem valueForKey:@"_serviceString"];
if ([value isKindOfClass:[NSString class]])
{
return (NSString *)value;
}
}
return @"Unavailable";
}
- (UIView *)statusBar
{
NSString *statusBarString = [NSString stringWithFormat:@"%@ar", @"_statusB"];
return [[UIApplication sharedApplication] valueForKey:statusBarString];
}
मैंने केवल उन अनुप्रयोगों के साथ विधि का परीक्षण किया जिनके पास स्टेटस बार दिखाई देता है। यह वही स्ट्रिंग देता है क्योंकि यह स्टेटस बार में प्रदर्शित होता है, इसलिए रोमिंग के दौरान भी यह सही तरीके से काम करता है।
यह विधि ऐप स्टोर सुरक्षित नहीं है।
तेज उपयोगकर्ताओं के लिए आप इस कोशिश कर सकते हैं:
import CoreTelephony
static var carrierName:String? {
let networkInfo = CTTelephonyNetworkInfo()
let carrier = networkInfo.subscriberCellularProvider
return carrier?.carrierName
}
यदि कोर टेलीफोनी रिटर्न "कैरियर" मामले में स्थिति पट्टी से वाहक नाम जाओ
func getCarrierName() -> String? {
var carrierName: String?
let typeName: (Any) -> String = { String(describing: type(of: $0)) }
let statusBar = UIApplication.shared.value(forKey: "_statusBar") as! UIView
for statusBarForegroundView in statusBar.subviews {
if typeName(statusBarForegroundView) == "UIStatusBarForegroundView" {
for statusBarItem in statusBarForegroundView.subviews {
if typeName(statusBarItem) == "UIStatusBarServiceItemView" {
carrierName = (statusBarItem.value(forKey: "_serviceString") as! String)
}
}
}
}
return carrierName
}
क्या, तुम मतलब है वहाँ iPhone हैं एटी एंड टी के अलावा वाहक? –
क्या आप इस बारे में बात कर रहे हैं कि फोन किस समय सेवा से जुड़ा हुआ है (यानी रोमिंग हो सकता है), या वाहक कौन है जिसके पास आपको बिल मिलते हैं? – crashmstr
आपने शायद इसके बारे में नहीं सुना होगा, लेकिन दुनिया के अन्य देश हैं। और दिलचस्प बात यह है कि उनके पास मोबाइल तकनीक है। – mentat