PDA

View Full Version : بهترین راه بدست اوردن آی دی گوشی (*#06#) برای پرداخت درون برنامه ای



sermoni
چهارشنبه 05 شهریور 1393, 01:40 صبح
سلام دوستان
میخواستم بدونم بهترین راه بدست اوردن ای دی گوشی برای استفاده در پرداخت درون برنامه ای چیه ؟
جهت جلوگیری از اجرای نسخه ی اصلی برنامه روی چندین گوشی با یک اکانت.

c0mmander
چهارشنبه 05 شهریور 1393, 02:48 صبح
فکر کنم منظورت IMEI هست ..:
اضافه کردن اجازه زیر:


<uses-permission android:name="android.permission.READ_PHONE_STATE" />

در نهایت استفاده از سورس زیر(سورس در جاوا)



TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String device_id = tm.getDeviceId();


سورس کد در C#‎‎‎‎‎‎ مونودروید:


TelephonyManager tm = this.GetSystemService(Context.TelephonyService) as TelephonyManager;
string deviceId = tm.DeviceId;

sermoni
چهارشنبه 05 شهریور 1393, 02:58 صبح
بله منظورم همون ایمیل است (Device_id)
من با سر چ در نت پاسخی مشابه پاسخ شما دیدم
فقط در اونجا نوشته بود که این کد روی تبلت ها جواب نمیده، درسته ؟
شما خودتون از این کد استفاده میکنین ؟
فرقش با کد زیر که به افزوردن دسترسی نیاز نداره چیه ؟

String payload = Secure.getString(getBaseContext().getContentResolv er(),
Secure.ANDROID_ID);

از eclipse استفاده میکنم.

c0mmander
چهارشنبه 05 شهریور 1393, 03:07 صبح
عزیزم اینجا بچه ها میدونن که من با مونو کار میکنم! اطلاعی از جاوا ندارم اما برای ایمیل که مقوله متفاوته .. اما تنها روشی که بصورت مطمین بشه شناسه گوشی IMEI (نه ایمیل!) رو استفاده کرد از همون اندورید سرویس هست. خیر مشکلی با تبلت نداره شما میتونید با جنی موشن تست کنید.

sermoni
چهارشنبه 05 شهریور 1393, 03:52 صبح
نمیدونم چرا وقتی ازTelephonyManager استفاده میکنم برنامه ارور force closed میده ! با اینکه permission را به manifest اضافه کردم :ناراحت:

keyhan.taktaz
پنج شنبه 06 شهریور 1393, 00:48 صبح
روی تبلت ممکنه به مشکل بخوری چون IMEI روی تبلت های بدون سیمکارت وجود نداره

c0mmander
پنج شنبه 06 شهریور 1393, 02:51 صبح
روی تبلت ممکنه به مشکل بخوری چون IMEI روی تبلت های بدون سیمکارت وجود نداره

تایید میشه .. اتفاقا در گوشی های دو سیم کارت هم دوتا شماره imei دارید!

نتها راه اینکه بتونید مطمین باشید که کاربر پرداخت درون برنامه رو انجام داده باشه اینکه یک سیستم لوگن داشته باشید. با استفاده از یک نام کاربری و یک پسورد و یک ایمیل

r_khan
پنج شنبه 06 شهریور 1393, 09:19 صبح
اندروید ای دی مطمئن نیست؟!


Android.Provider.Settings.Secure.GetString(Applica tion.Context.ContentResolver, Android.Provider.Settings.Secure.AndroidId)

من از این استفاده میکنم.

c0mmander
پنج شنبه 06 شهریور 1393, 13:26 عصر
اندروید ای دی مطمئن نیست؟!


Android.Provider.Settings.Secure.GetString(Applica tion.Context.ContentResolver, Android.Provider.Settings.Secure.AndroidId)

من از این استفاده میکنم.

اینم معادل C#‎‎‎‎‎‎ MonoDroid :


var id = Settings.Secure.GetString(Application.Context.Cont entResolver, Settings.Secure.AndroidId);

r_khan
پنج شنبه 06 شهریور 1393, 16:14 عصر
اینم معادل C#‎ MonoDroid :


var id = Settings.Secure.GetString(Application.Context.Cont entResolver, Settings.Secure.AndroidId);

سوالم این بود که این کد مطمئنه، میشه جهت جلوگیری ازاستفاده د چند دستگاه یا همون پرداخت درون برنامه استفاده کرد؟

c0mmander
پنج شنبه 06 شهریور 1393, 20:39 عصر
سوالم این بود که این کد مطمئنه، میشه جهت جلوگیری ازاستفاده د چند دستگاه یا همون پرداخت درون برنامه استفاده کرد؟

ببخشید دفعه اول متوجه سوالت نشدم ببنی این توضیحی هست که خود گوگل برای android id داده:


A 64-bit number (as a hex string) that is randomly generated when the user first sets up the device and should remain constant for the lifetime of the user's device.

منبع: http://developer.android.com/reference/android/provider/Settings.Secure.html

معنیش این میشه که یک شماره هست که بصورت رندم وقتی اولین بار کاربر گوشی رو بالا میاره ساخته میشه و باید برای طول عمر دستگاه کاربر ثابت باقی می ماند.

در کل بصورت مستقم از برنامه نمیشه این رو تغییر داد.. یک احتمالی وجود داره که یک در میلیارده اما در کل ممکنه که به وجود بیاد اونم اینکه این شماره در دو دستگاه یکی باشه پس بهتره که از یک چیز دیگه مهم استفاده کنید مثل Build Device .. در کل میشه بصورت زیر استفاده کرد. به نظرم مطمین تره:

سورس در مونو


public static string GetDeviceId(Context context)
{
string deviceId;
try
{
TelephonyManager telephonyMgr = context.GetSystemService(Context.TelephonyService) as TelephonyManager;
deviceId = telephonyMgr.DeviceId == null ? "UNAVAILABLE" : telephonyMgr.DeviceId;
}
catch
{
deviceId = "UNAVAILABLE";// زهر مار که فعال نیستی
}
var device = Build.Device;
var id = Settings.Secure.GetString(Application.Context.Cont entResolver, Settings.Secure.AndroidId);
return deviceId+" " + id.ToString() + " " + device.ToString(); ;
}


زیاد سخت نگیرید حواستون باشه که برنامه باگ نداشته باشه اما از نظر فعال سازی زیاد نمیخواد سخت بگیرید که جیک پیک کاربر رو از عکس های خصوصی شماره تلفن و هزار چیز دیگه استفاده کنید یک روش متعارف کفایت میکنه. مردم دزد نیستن. یک دسته ادم مثل من و شما و دوستان شاید بشنن بینن سورس چطور کار میکنه اما در نهایت دزد نیست که کرک کنن برنامه رو بفروشند.

اما بازم میگم که با اطمینان ترین روش به نظر من استفاده از سیستم عضویت کاربران هست که به کاربر یک رمز عبور و کلمه عبور داده میشه و باید به سیستم لوگن کنه.

یه چیز دیگه هم یادم اومد برنامه هایی هستن که برای هر بار اجرا باید به اینتر وصل شد من 90 درصد این کاربرای برنامه ها رو دیدم که بعد از یک مدتی برنامه حذف میکنن یا از برنامه جایگزین استفاده میکنن پس این رو هم باید در نظر داشت که اینترنت این کشور مال عهد اخراع بوقه!! و بوجه همه نمیرسه که همیشه از طریق موبایل انلاین باشند