প্রোগ্রামে আইওএসে নিজের ফোন নম্বর পান


330

আইফোন এসডিকে থেকে স্ট্যান্ডার্ড এপিআই দ্বারা নিজস্ব ফোন নম্বর পাওয়ার কোনও উপায় আছে কি?


অন্যদের জন্য এমন কোনও সমাধান অনুসন্ধান করতে কার্যকর হতে পারে যা প্রাইভেট এপি-র কীভাবে স্কোয়ার-কার্ডকেস-অ্যাপ-ব্যবহার না করে - ব্যবহারকারী নাম ক্যাপচার করতে ডিভাইসের নাম ব্যবহার করুন কেবল ফোন নম্বর বা অন্যান্য বিশদ যথাযথ হিসাবে ক্যাপচার করতে সংশোধন করুন
নিক বার্নস

ডেভিডজৌং একটি কার্যনির্বাহী সমাধান সরবরাহ করেছে। এটি কবর দেওয়া হয়েছে (কিছু উর্ধ্বে প্রয়োজন)।
পি আই

এটা এখন ভালো Xcode মধ্যে সম্ভব stackoverflow.com/a/54004224/536214
aqavi_paracha

উত্তর:


318

নেতিবাচক চিহ্ন পাওয়ার ঝুঁকিতে, আমি পরামর্শ দিতে চাই যে সর্বোচ্চ র‌্যাঙ্কিং সমাধান (বর্তমানে প্রথম প্রতিক্রিয়া) সর্বশেষতম এসডিকে চুক্তিটি লঙ্ঘন করে 5 নভেম্বর, 2009-এ আমাদের আবেদনটি ব্যবহার করার জন্য কেবল প্রত্যাখ্যাত হয়েছিল। অ্যাপলের প্রতিক্রিয়া এখানে:

"সুরক্ষার কারণে, আইফোন ওএস একটি অ্যাপ্লিকেশন (তার পছন্দ এবং ডেটা সহ) ফাইল সিস্টেমের একটি অনন্য স্থানে সীমাবদ্ধ করে This এই বিধিনিষেধটি অ্যাপ্লিকেশনটির" স্যান্ডবক্স "নামে পরিচিত সুরক্ষা বৈশিষ্ট্যের অংশ The দানযুক্ত নিয়ন্ত্রণগুলি ফাইল, পছন্দ, নেটওয়ার্ক সংস্থান, হার্ডওয়্যার এবং এগুলিতে কোনও অ্যাপ্লিকেশনটির অ্যাক্সেসকে সীমাবদ্ধ করে। "

আপনার অ্যাপ্লিকেশনটির ধারকটির মধ্যে ডিভাইসের ফোন নম্বর উপলব্ধ নেই। আপনার অ্যাপ্লিকেশনটি কেবলমাত্র আপনার ডিরেক্টরি কন্টেইনারটিতে পড়তে হবে এবং অ্যাপ্লিকেশন স্টোরটির জন্য আপনার অ্যাপ্লিকেশনটির পুনর্বিবেচনা করার জন্য আপনার বাইনারিটি আইটিউনস কানেক্টে পুনরায় জমা দিতে হবে।

এটি ব্যবহারকারীর নিজস্ব ফোন নম্বর প্রবেশ করানো থেকে বাঁচাতে চেয়ে আমরা প্রকৃত হতাশা পেয়েছি।


83
স্ন্যাপচ্যাট কীভাবে এটি করে?
rgbrgb

1
@ ডিলান: আপনার অ্যাপ্লিকেশনটি কখন প্রত্যাখ্যান করা হয়েছিল? সম্ভবত গাইডলাইনগুলি সংশোধন করা হয়েছে? ডকুমেন্টেশন দরকারী লিঙ্ক সরবরাহ করুন। যাইহোক, আমি আপনার উত্তর প্রশংসা করি।
অভিষেক বেদি

1
আমি যেখানে অ্যাপল.ডিভলপার ডকুমেন্টেশন লিঙ্কটি এখানে উল্লেখ করেছি তা পেতে পারি?
গণেশ এবি - অ্যান্ড্রয়েড

3
আমি এটিতে কোনও নথিপত্র পাইনি, তবে এটি দেখতে পছন্দ করব। এটি সেই অঞ্চলগুলির মধ্যে একটি যেখানে অ্যাপল আমার কাছে অস্বচ্ছ রয়ে গেছে। এর পর থেকে আমি কোনও আবেদন জমা দেওয়ার চেষ্টা করিনি।
ডিলান

1
@ আরজিবিআরবিবি আমি স্ন্যাপচ্যাট ব্যবহার করি না, আপনি কি দয়া করে তাদের অভিজ্ঞতাটি ব্যাখ্যা করতে পারেন যা এতই রহস্যজনক?
উইলিয়াম এন্টারিকেন

138

না, এটি করার কোনও আইনী এবং নির্ভরযোগ্য উপায় নেই।

আপনি যদি কোনও উপায় খুঁজে পান তবে ভবিষ্যতে এটি অক্ষম হয়ে যাবে, যেমনটি প্রতিটি পদ্ধতির আগে ঘটেছিল।


2
নিক বার্নের উত্তর দেখুন: stackoverflow.com/a/8415162/292166 - এটি করার একটি উপায় আছে (সাজানো)!
জোসেফ এইচ

4
অ্যাপলের ব্যবহারকারীর ফোন নম্বরটিতে অনুমতি-ভিত্তিক অ্যাক্সেসটিকে অস্বীকার করার জন্য আপনি কী সেরা কারণটি দেখেছেন? অ্যাপল ইতিমধ্যে পরিচিতি, ফটো, অবস্থান এবং ব্যবহারকারীর ক্যামেরা এবং মাইক্রোফোনে অনুমতি-ভিত্তিক অ্যাক্সেসের অনুমতি দেয়। ফোন নম্বর কেন নয়? অবশ্যই একটি ভাল কারণ থাকতে পারে, তবে এটি অবিলম্বে পরিষ্কার নয়। এটি দুর্ভাগ্যজনক কারণ অ্যাক্সেস নিষিদ্ধ করার ফলে কোনও ব্যবহারকারীর ফোন নম্বর যাচাই করার জন্য ডিভগুলি অনেক সময় এবং অর্থ ব্যয় করতে পারে।
ক্রশলোট

86

আপডেট: সক্ষমতা iOS 4 বা এর চারপাশে অ্যাপল দ্বারা সরানো হয়েছে বলে মনে হয়


কেবলমাত্র পূর্ববর্তী উত্তরে প্রসারিত করার জন্য, এরকম কিছু আমার জন্য তা করে:

NSString *num = [[NSUserDefaults standardUserDefaults] stringForKey:@"SBFormattedPhoneNumber"];

দ্রষ্টব্য : এটি আইফোনটির আইটিউনস অ্যাক্টিভেশন চলাকালীন প্রবেশ করা "ফোন নম্বর" পুনরুদ্ধার করে এবং এটি নাল বা একটি ভুল মান হতে পারে। এটা না SIM কার্ড থেকে পড়া।

কমপক্ষে এটি ২.১-এ ঘটে। এনএসইউসারডেফাল্টসে আরও কয়েকটি আকর্ষণীয় কী রয়েছে যা সম্ভবত শেষ নাও হতে পারে। (এটি আমার অ্যাপে যা ইউআইবিউব ভিউ ব্যবহার করে)

WebKitJavaScriptCanOpenWindowsAutomatically
NSInterfaceStyle
TVOutStatus
WebKitDeveloperExtrasEnabledPreferenceKey

ইত্যাদি।

নিশ্চিত না, কিছু হলে অন্যরা কী করে।


1
: এই ক্ষমতা পিছনে নিরাপত্তা উদ্বেগ সম্বন্ধে কিছু সাম্প্রতিক সংবাদ আছে এর theregister.co.uk/2009/09/30/iphone_security
JeffH

10
এটা করবেন না। কীপ্যাড বা যোগাযোগের নির্বাচকের মাধ্যমে নম্বরটির জন্য ব্যবহারকারীকে জিজ্ঞাসা করুন। আপনার যেকোন তথ্য সংগ্রহের ব্যবহারকারীর কাছে যতটা সম্ভব স্পষ্ট করা উচিত। এটি সর্বাধিক সুবিধাজনক নাও হতে পারে তবে সংখ্যাটি সংরক্ষণ করা খুব সহজ, সুতরাং আপনাকে কেবল একবার এটি চাইতে হবে।
ডেভিড কানারেক

3
অ্যাপ্লিকেশনগুলিকে প্রত্যাখ্যান করা একটি সমাধান কোনও সমাধান নয়।
আরিদেব

27

প্রাইভেট এপিআই ব্যবহার করে আপনি নিম্নলিখিত উপায়ে ব্যবহারকারীর ফোন নম্বর পেতে পারেন:

extern NSString* CTSettingCopyMyPhoneNumber();


+(NSString *) phoneNumber {
NSString *phone = CTSettingCopyMyPhoneNumber();

return phone;
}

আপনার প্রকল্পে কোরটেলফোন.ফ্রেমওয়ার্কও অন্তর্ভুক্ত করুন।


এই ফোরামে অন্য উত্তরগুলি পড়ার পরে, আমি ভাবছিলাম এটি সম্ভব নয় তবে আপনি নিখুঁত কাজটি করেছেন
মেহুল ঠাকর

1
আইওএস 7 এটা এনটাইটেলমেন্ট দ্বারা সুরক্ষিত হচ্ছে stackoverflow.com/questions/19504478/...
creker

আমি যখন এটি চেষ্টা করি তখন ফোনটি শূন্য হয়
C0D3

22

আপনি সম্ভবত প্রস্তুত সবাই জানেন যে আপনি নিম্নলিখিত কোডের লাইনটি ব্যবহার করেন কিনা, আপনার অ্যাপল অ্যাপল দ্বারা প্রত্যাখ্যান করা হবে

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.

আশাকরি এটা সাহায্য করবে!


9
ইউনিকআইডেন্টিফায়ার আইওএস 5-তেও অবহিত করা হয় পরিবর্তে ম্যাক ঠিকানা ব্যবহার করুন।
র‌্যাটার

15
ম্যাকের ঠিকানাটি আইওএস dep-এ নষ্ট হয়েছে [UIDevice identifierForVendor]instead
জাব

17

ফোন নম্বর ক্যাপচারের জন্য আপনি একা আইওএস এপিআই ব্যবহার করতে পারবেন না (এমনকি প্রাইভেট এপিআই সহ বেসরকারী অ্যাপ্লিকেশনটিতেও), কারণ এটি করার সমস্ত পরিচিত পদ্ধতিগুলি আইওএস ১১ হিসাবে প্যাচ এবং ব্লক করা হয়েছে 11 এমনকি যদি কোনও নতুন শোষণ পাওয়া যায় তবে অ্যাপল তৈরি করেছে পরিষ্কার করুন যে এগুলি করার জন্য প্রাইভেট API গুলি ব্যবহার করার জন্য তারা অ্যাপ স্টোর থেকে কোনও অ্যাপ্লিকেশন প্রত্যাখ্যান করবে। বিস্তারিত জানতে @ ডিলানের উত্তর দেখুন।

তবে, কোনও ব্যবহারকারীর ডেটা এন্ট্রি ছাড়াই ফোন নম্বর ক্যাপচার করার কোনও আইনি উপায় রয়েছে । এটি স্ন্যাপচ্যাট যা করে তার অনুরূপ, তবে সহজ, কারণ এটি ব্যবহারকারীর নিজস্ব ফোন নম্বর টাইপ করার প্রয়োজন হয় না।

এই অ্যাপ্লিকেশনটির অ্যাপ্লিকেশনটির অনন্য ইনস্টলেশন কোড সহ কোনও সার্ভারে একটি এসএমএস বার্তা প্রেরণ করা উচিত The অ্যাপটি একই সার্ভারটি এই অনন্য অ্যাপ্লিকেশন ইনস্টলেশন কোডটি সহ কোনও ডিভাইস থেকে কোনও এসএমএস বার্তা পেয়েছে কিনা তা দেখতে সেটিকে জিজ্ঞাসা করতে পারে। যদি এটি থাকে তবে এটি যে ফোন নম্বর পাঠিয়েছিল তা এটি পড়তে পারে। প্রক্রিয়া দেখানো একটি ডেমো ভিডিও এখানে । আপনি দেখতে পাচ্ছেন, এটি কবজির মতো কাজ করে!

এটি সেট আপ করা খুব সহজ নয়, তবে এটি এখানে টিউটোরিয়ালে প্রদত্ত নমুনা কোড সহ একটি ফ্রি এডাব্লুএস স্তরে কোনও চার্জ ছাড়াই কয়েক ঘন্টার মধ্যে কনফিগার করা হবে ।


দুঃখিত। ভিডিওটি দুর্ঘটনাক্রমে ব্যক্তিগত ছিল। এটি এখন প্রকাশ্য।
ডেভিডজৌং

এটি দুর্দান্ত উপায়, তবে আপনি কি দয়া করে আপনার উত্তরটি কমপক্ষে বেসিক প্রয়োগের বিশদটি সমৃদ্ধ করতে পারেন? আপনার ফোন নম্বরটি না জেনে আপনি কীভাবে কোনও আইওএস ডিভাইস থেকে এসএমএস করবেন? প্রেরকের ফোন নম্বরটিতে অ্যাক্সেস রয়েছে এমন কোনও এসএমএস-গ্রহণকারী সার্ভার আপনি কীভাবে সেট আপ করবেন? কি সরঞ্জাম জড়িত? উপযুক্ততা?
মোটি শ্নের

@ মোটিশ্নোর, আপনি উত্তরে টিউটোরিয়াল লিঙ্কটি দেখতে পেয়েছেন? গিথুব রেপোতে এই সলিউশন সেট করার পাশাপাশি একটি কার্যকারী নমুনা অ্যাপ কোড সম্পর্কিত একটি সম্পূর্ণ টিউটোরিয়াল রয়েছে।
ডেভিডজৌং

2

আপনার ফোন নম্বর পেতে আপনি একটি প্লিস্ট ফাইলটি পড়তে পারেন। এটি জেল-ব্রোং নন আইডেস্কসগুলিতে কাজ করবে না:

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]);

অ্যাপল এটির অনুমতি দেয় কিনা জানি না তবে এটি আইফোনে কাজ করে।


জেলব্রোকড ফোনে অ্যাপল ওয়্যারেন্টি দেয় এবং একটি অ্যাপ্লিকেশনটির জন্য সমস্ত ব্যবহারকারীর সর্বব্যাপী ক্ষমতা থাকা দরকার।
কসমটার

2

এটি করার জন্য কোনও অফিসিয়াল এপিআই নেই। ব্যক্তিগত API ব্যবহার করে আপনি নিম্নলিখিত পদ্ধতিটি ব্যবহার করতে পারেন:

-(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;
}

এটি জেবি এবং বিশেষ স্বাক্ষর ছাড়াই আইওএস 6 এ কাজ করে।

জেবি সহ আইওএস 7- তে উল্লিখিত নির্মাতা হিসাবে এটির কাজ করার জন্য আপনাকে এনটাইটেলমেন্টগুলি ব্যবহার করতে হবে।

এনটাইটেলমেন্ট সহ এটি কীভাবে করবেন আপনি এখানে পেতে পারেন: আইওএস 7: কীভাবে ব্যক্তিগত এপিআইয়ের মাধ্যমে নিজের নম্বর পাবেন?


0

অ্যাপ স্টোর এটিকে প্রত্যাখ্যান করবে, কারণ এটি অ্যাপ্লিকেশন ধারকের বাইরে পৌঁছেছে।

অ্যাপ্লিকেশনগুলিকে তাদের বান্ডিলগুলিতে স্ব-অন্তর্ভুক্ত থাকা উচিত এবং তারা নির্ধারিত ধারক অঞ্চলের বাইরে ডেটা পড়তে বা লিখতে না পারে

বিভাগ ২.২.২: https://developer.apple.com/app-store/review/guidlines/#software-requirements

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.