क्या iPhone SDK से मानक API द्वारा अपना फ़ोन नंबर प्राप्त करने का कोई तरीका है?
क्या iPhone SDK से मानक API द्वारा अपना फ़ोन नंबर प्राप्त करने का कोई तरीका है?
जवाबों:
नकारात्मक अंक प्राप्त करने के जोखिम पर, मैं सुझाव देना चाहता हूं कि उच्चतम रैंकिंग समाधान (वर्तमान में पहली प्रतिक्रिया) 5 नवंबर, 2009 के अनुसार नवीनतम एसडीके समझौते का उल्लंघन करता है। हमारे आवेदन का उपयोग करने के लिए सिर्फ खारिज कर दिया गया था। यहाँ Apple से प्रतिक्रिया है:
"सुरक्षा कारणों से, iPhone OS एक एप्लिकेशन (इसकी प्राथमिकताओं और डेटा सहित) को फ़ाइल सिस्टम में एक अद्वितीय स्थान पर प्रतिबंधित करता है। यह प्रतिबंध एप्लिकेशन के" सैंडबॉक्स "के रूप में जाना जाने वाले सुरक्षा सुविधा का हिस्सा है। सैंडबॉक्स ठीक-ठाक सेट है। दानेदार नियंत्रण एक एप्लिकेशन की फाइलों, वरीयताओं, नेटवर्क संसाधनों, हार्डवेयर और इतने पर पहुंच को सीमित करता है। "
आपके एप्लिकेशन के कंटेनर में डिवाइस का फ़ोन नंबर उपलब्ध नहीं है। आपको केवल अपने निर्देशिका कंटेनर में पढ़ने के लिए अपने एप्लिकेशन को संशोधित करना होगा और ऐप स्टोर के लिए पुनर्विचार करने के लिए अपने बाइनरी को iTunes Connect से पुनः कनेक्ट करना होगा।
यह एक वास्तविक निराशा थी क्योंकि हम उपयोगकर्ता को अपना फोन नंबर दर्ज करने से रोकना चाहते थे।
नहीं, ऐसा करने का कोई कानूनी और विश्वसनीय तरीका नहीं है।
यदि आपको कोई रास्ता मिल जाता है, तो यह भविष्य में अक्षम हो जाएगा, जैसा कि पहले हर विधि के साथ हुआ है।
अद्यतन: क्षमता iOS 4 पर या उसके आसपास Apple द्वारा हटा दी गई प्रतीत होती है
बस पहले वाले उत्तर पर विस्तार करने के लिए, ऐसा कुछ मेरे लिए है:
NSString *num = [[NSUserDefaults standardUserDefaults] stringForKey:@"SBFormattedPhoneNumber"];
नोट : यह "फ़ोन नंबर" को पुनर्प्राप्त करता है जो iPhone के iTunes सक्रियण के दौरान दर्ज किया गया था और यह गलत या गलत हो सकता है। यह सिम कार्ड से पढ़ा नहीं है ।
कम से कम 2.1 में करता है। NSUserDefaults में कुछ अन्य दिलचस्प कुंजियाँ हैं जो शायद अंतिम न हों। (यह मेरे ऐप में है जो UIWebView का उपयोग करता है)
WebKitJavaScriptCanOpenWindowsAutomatically
NSInterfaceStyle
TVOutStatus
WebKitDeveloperExtrasEnabledPreferenceKey
और इसी तरह।
निश्चित नहीं है कि अगर कुछ भी हो, तो बाकी लोग करें।
निजी एपीआई का उपयोग करके आप निम्नलिखित तरीके से उपयोगकर्ता फोन नंबर प्राप्त कर सकते हैं:
extern NSString* CTSettingCopyMyPhoneNumber();
+(NSString *) phoneNumber {
NSString *phone = CTSettingCopyMyPhoneNumber();
return phone;
}
अपने प्रोजेक्ट में CoreTelephony.framework भी शामिल करें।
जैसा कि आप शायद सभी तैयार जानते हैं कि यदि आप निम्नलिखित लाइन ऑफ़ कोड का उपयोग करते हैं, तो आपका ऐप Apple द्वारा अस्वीकार कर दिया जाएगा
NSString *num = [[NSUserDefaults standardUserDefaults] stringForKey:@"SBFormattedPhoneNumber"];
यहाँ एक संदर्भ है
http://ayeapi.blogspot.com/2009/12/sbformatphonenumber-is-lie.html
आप इसके बजाय निम्नलिखित जानकारी का उपयोग कर सकते हैं
NSString *phoneName = [[UIDevice currentDevice] name];
NSString *phoneUniqueIdentifier = [[UIDevice currentDevice] uniqueIdentifier];
और इसी तरह
@property(nonatomic,readonly,retain) NSString *name; // e.g. "My iPhone"
@property(nonatomic,readonly,retain) NSString *model; // e.g. @"iPhone", @"iPod Touch"
@property(nonatomic,readonly,retain) NSString *localizedModel; // localized version of model
@property(nonatomic,readonly,retain) NSString *systemName; // e.g. @"iPhone OS"
@property(nonatomic,readonly,retain) NSString *systemVersion; // e.g. @"2.0"
@property(nonatomic,readonly) UIDeviceOrientation orientation; // return current device orientation
@property(nonatomic,readonly,retain) NSString *uniqueIdentifier; // a string unique to each device based on various hardware info.
उम्मीद है की यह मदद करेगा!
[UIDevice identifierForVendor]
किया गया है।
आप फोन नंबर (यहां तक कि निजी एपीआई के साथ एक निजी ऐप में) पर कब्जा करने के लिए अकेले आईओएस एपीआई का उपयोग नहीं कर सकते हैं, क्योंकि ऐसा करने के सभी ज्ञात तरीकों को आईओएस 11 के रूप में पैच किया गया है और अवरुद्ध किया गया है। स्पष्ट है कि वे ऐसा करने के लिए निजी एपीआई का उपयोग करने के लिए ऐप स्टोर से किसी भी ऐप को अस्वीकार कर देंगे। विवरण के लिए @ डायलन का उत्तर देखें।
हालांकि, किसी भी उपयोगकर्ता डेटा प्रविष्टि के बिना फोन नंबर पर कब्जा करने का एक कानूनी तरीका है । यह स्नैपचैट के समान है, लेकिन आसान है, क्योंकि इसके लिए उपयोगकर्ता को अपने फोन नंबर को टाइप करने की आवश्यकता नहीं है।
यह विचार है कि एप्लिकेशन को प्रोग्राम के लिए ऐप के अद्वितीय इंस्टॉलेशन कोड के साथ सर्वर पर एक एसएमएस संदेश भेजा जाए। ऐप उसी सर्वर को क्वेरी कर सकता है यह देखने के लिए कि क्या उसने हाल ही में इस अद्वितीय ऐप इंस्टॉलेशन कोड के साथ डिवाइस से एसएमएस संदेश प्राप्त किया है। यदि यह है, तो यह उस फोन नंबर को पढ़ सकता है जिसने इसे भेजा था। यहां एक डेमो वीडियो प्रक्रिया को दिखाया गया है। जैसा कि आप देख सकते हैं, यह एक आकर्षण की तरह काम करता है!
यह सेट अप करने के लिए सुपर आसान नहीं है, लेकिन इसे कुछ घंटों में मुफ्त एडब्ल्यूएस टियर पर किसी भी शुल्क पर कॉन्फ़िगर किया गया है, यहां ट्यूटोरियल में दिए गए नमूना कोड के साथ ।
आपको फ़ोन नंबर प्राप्त करने के लिए आप एक प्लिस्ट फ़ाइल पढ़ सकते हैं। यह गैर-जेलब्रेक iDevices पर काम नहीं करेगा:
NSString *commcenter = @"/private/var/wireless/Library/Preferences/com.apple.commcenter.plist";
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:commcenter];
NSString *PhoneNumber = [dict valueForKey:@"PhoneNumber"];
NSLog([NSString stringWithFormat:@"Phone number: %@",PhoneNumber]);
मुझे नहीं पता कि Apple इसकी अनुमति देता है लेकिन यह iPhones पर काम करता है।
कोई आधिकारिक एपीआई ऐसा करने के लिए नहीं। निजी एपीआई का उपयोग करके आप निम्नलिखित विधि का उपयोग कर सकते हैं:
-(NSString*) getMyNumber {
NSLog(@"Open CoreTelephony");
void *lib = dlopen("/Symbols/System/Library/Framework/CoreTelephony.framework/CoreTelephony",RTLD_LAZY);
NSLog(@"Get CTSettingCopyMyPhoneNumber from CoreTelephony");
NSString* (*pCTSettingCopyMyPhoneNumber)() = dlsym(lib, "CTSettingCopyMyPhoneNumber");
NSLog(@"Get CTSettingCopyMyPhoneNumber from CoreTelephony");
if (pCTSettingCopyMyPhoneNumber == nil) {
NSLog(@"pCTSettingCopyMyPhoneNumber is nil");
return nil;
}
NSString* ownPhoneNumber = pCTSettingCopyMyPhoneNumber();
dlclose(lib);
return ownPhoneNumber;
}
यह JB और विशेष हस्ताक्षर के बिना iOS 6 पर काम करता है।
जैसा कि जेबी के साथ iOS 7 पर क्रेकर का उल्लेख है, आपको इसे काम करने के लिए एंटाइटेलमेंट का उपयोग करने की आवश्यकता है।
यह आप एंटाइटेलमेंट के साथ कैसे कर सकते हैं: आईओएस 7: निजी एपीआई के माध्यम से अपना नंबर कैसे प्राप्त करें?
AppStore इसे अस्वीकार कर देगा, क्योंकि यह एप्लिकेशन कंटेनर के बाहर पहुंच रहा है।
ऐप्स को अपने बंडलों में आत्म-निहित होना चाहिए, और निर्दिष्ट कंटेनर क्षेत्र के बाहर डेटा को पढ़ना या लिखना नहीं हो सकता है
धारा 2.5.2: https://developer.apple.com/app-store/review/guidelines/#software-requitions