شناسه منحصر به فرد برای تعیین هویت دستگاه
سلام
من میخوام در برنامم ، علاوه بر اینکه بازار میاد در هر بار اجرای برنامه ، درون پرداخت رو چک میکنه ، منم از طریق سرورم وضعیت خرید رو چک کنم ( با استفاده از IMEI ) . ولی بعد فهمیدم که IMEI رو هر دستگاهی نداره ( خیلی از تبلت ها که سیم کارت خور نیستن ) ، این لینک رو هم خوندم و استاد اطلاعات خوبی توش قرار دادن و تلاش بر این بوده که یه چیز منحصر به فرد رو از دستگاه خارج کنن . ولی در مورد شماره سریال دستگاه چیزی ذکر نشده !
من فکر میکردم شماره سریال همون IMEI هست ، ولی بعد دیدم در اندروید کد استخراج هر کدوم فرق میکنه ، گفتم تست کنم ببینم هر کدوم چی میده بیرون ! تست کردم و متفاوت بود !
سوالم اینه که :
اگه شماره سریال دستگاه با IMEI فرق داره ، و با توجه به اینکه شماره سریال رو هر دستگاهی داره ، پس این میتونه یه شماره منحصر به فرد باشه دیگه ؟ درسته ؟
و اگه جواب منفی هست ، پس چه چیزی رو شما پیشنهاد میدین برای اینکه هر دستگاه رو تشخیص بدیم و یه چیز یکتا از هر کدوم استخراج کنیم ؟
ممنون .

باید یک کد یکتا درست کنید ، خیلی از دستگاه ها مک آدرس رو نمیدهند و خیلی ها IMEI ندارند میتونید بصورت زیر استفاده کنید :
public static String getUUID() {
TelephonyManager telephonyManager = (TelephonyManager) G.context.getSystemService(Context.TELEPHONY_SERVICE);
WifiManager manager = (WifiManager) G.context.getSystemService(Context.WIFI_SERVICE);
WifiInfo info = manager.getConnectionInfo();
String macAddress = info.getMacAddress();
String imei = telephonyManager.getDeviceId();
String imsi = telephonyManager.getSubscriberId();
String androidID = Secure.getString(G.context.getContentResolver(), Secure.ANDROID_ID);
return imei + "-" + macAddress + "-" + androidID;
}
androidID بعد از ریستارت شدن یا فکر کنم ریست فکتوری شدن عوض میشه ! (تجربه داشتم بعد از تمام شدن باطری و خاموش شدن گوشیم این اتفاق افتاد روی HTC ) و در مورد imsi به اندازه کافی سرچ نکردم ! اما روی سرور فعلا این رو استفاده میکنم و به اندازه کافی داره خوب جواب میده

معمولا تا زمانی گوشی روشن هست و داره کار میکنه androidID تغییر نمیکنه و این مدت هم به اندازه کافی مناسب هست توی همون مدت که روشن هست میشد عملیات رو انجام داد و مشکلی پیش نمیومد ! چنتا فاتور مهم رو باید از کاربر بگیرید مثلا اینکه کاربر روت هست ؟ اخرین زمان فعالیت کاربر در برنامه و androidID رو داشته باشید اما میتونید همیشه استفاده نکنید مگر زمانی که IMEI نداشته باشید و مقدار Null و یا کاملا خالی هست ، ولی چیزی که من تجربه کردم تا 3200 کاربر هیچ مشکلی در استفاده از androidID نبود ، و فقط یک مورد تغییر در androidID بود که قابل تشخیص بود چون اون دستگاه IMEI داشت ولی خیلی زیاد کاربر هایی بودند که مشکل داشتند و مقادیر به این صورت بود : null-null-c15d6d8c75fe6a15 که فقط اندروید ایدی داریم ! و یا به این صورت 00000000000000-null-26e642e9b9766ba9 که مقدار IMEI کاملا 0 هست و یا null-08:00:27:ae:4d:4f-8f24feca9e77bbd9 ، اونجاهایی که IMEI نیست باید حساس شد
برای تغییر androidID بصورت زیر ممکن هست و همچنین MacAddress اگر وافای خاموش باشه داده نمیشه !
How to Change Android id Without Root | Non Root :
Open Your Phone’s Settings
Scroll Down & Click on Phone or Device
You Will See Backup And reset,
Then Click On Factory Data reset.Android Id change factory reset
And Reset your Phone, It will change Your Android Id
در مورد کاری که میخاید انجام بدید باید بیشتر فکر کنید و ببینید چقد میتونه توی کارتون اختلال ایجاد کنه ولی چیزی که بصورت تجربه کسب میکنید واقعا متفاوت از چیزی هست که از قبل دارید طراحی میکنید ! و میبینید که کارتون داره انجام میشه
در مورد آموزش استاد در قسمت DeviceInfo میشه قسمت هایی ثابت از گوشی رو هم استفاده کرد مثلا مدل گوشی و یا Board یکسری از مقادیر ممکنه ثابت باشند که با درکنار هم گذاشتن اونها میشه کد رو یکتا کرد ( البته سرچ نکردم که توی چه شرایطی میشه تغییرشون داد ) مثلا بصورت زیر
HTC-board46-IEMI-MAC-ANDROIDID
بعد اگر IMEI نداشتید سایر قسمت هارو استفاده کنید
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .