آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

گذاشتن محدوده زمانی برای برنامه

mosafer  9 سال پیش  9 سال پیش
0 0

با سلام

من میخوام برای برنامم یه محدوده زمانی بذارم که زمانی که کاربر برنامه رو روی گوشی نصب کرد به مدت 30 روز کار کنه و بعد از این مدت پیغامی به کاربر نمایش بده که محدوده زمانی به پایان رسیده.

بهترین روش چی میتونه باشه؟

+2 0
چیزی که به ذهن من میرسه اینه یه متغییر در اولین اجرا بگیر و بعد با هر بار اجرا ببین چقدر از اون گذشته البته به نظرم اگه می خوای با کلیر دیتا هم پاک نشه روی حافظه یک فایل بساز که مخفی باشه دیتا را از اون بخون (9 سال پیش)
+1 0
می تونی با Shared Preferences این کارو بکنی ولی اگه کاربر به تنظیمات گوشی بره و روی برنامت Clear Data بزنه یا برنامه رو حذف و دوباره نصب کنه می تونه که ازش دوباره استفاده کنه ولی همونطور که @احمد گفتند می تونید تعداد دفعاتی که کاربر وارد برنامه شده رو توی یک فایل ذخیره کنید که برای این کار ویدیوی فایل فرمت های اختصاصی رو ببینید. (9 سال پیش)
+2 0
بهترین و نطمین ترین راه ارسال imei به دیتابیس mysql (9 سال پیش)
+1 0
آقا مسعود imei چیه؟؟؟ (9 سال پیش)
+1 0
هر دیوایسی یه کد 15 رقمی به اسم IMEI داره که فقط مختص خودشه. (9 سال پیش)
+1 0
یه کد هستش که موقع ساخت گوشی بهش اختصاص میدن و هیچجوره تغییر نمیکنه. شما این کد رو سمت سرور بفرست و ذخیره کن و ... (9 سال پیش)
0 0
باید در اولین لاگین یک کد یونیک از دستگاه به سرور ارسال کنید و با اون زمان بندی رو انجام بدید. هر روشی که انلاین نباشه توسظ کاربر قابل دور زدن و دستکاری هستش (9 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
Criss  9 سال پیش
+3 0

برنامه شما باید بصورت پیشفرض غیر قابل باز شدن باشه ، یعنی در حالت افلاین کاملا غیر فعال باشه و از صفحه Splash رد نشه و حداقل یکبار برای بررسی تنظیمات به سرور وصل بشه

استفاده از IMEI میتونه مفید باشه ، شما باید یک درخواست به سرور ارسال کنید و روی سرور time رو بگیرید و در صورتی که IMEI تکراری نباشه اون رو ذخیره کنید بعد در غیر این صورت اگر تکراری باشه باید فیلد رو بخونید و با زمان حاضر تفاوت رو محاسبه کنید در صورتی که از 30 روز بیشتر بود برنامه از Splash رد نشه

 

یک جمله از استاد هست عین اون رو میذارم واقعا مفید هستش : UUID چیست :

UUID چیست ( جواب یکی از سئوالات ) :

کد یکتایی است که توسط ما قابل تولید است. توجه داشته باشید که:

    شماره سیم کارت در ایران قابل برداشتن نیست ( به آن دسترسی نداریم ).
    کد IMEI همیشه وجود ندارد ( در خیلی از Tablet ها )
    کد Android ID هم خیلی جاها وجود ندارد.
    MAC ADDRESS قابل جعل شدن است

پس UUID ترکیب این سه عبارت است ( به هر شکل ترکیب شود مهم نیست ):

imei-android_id-mac_address

حتی می تواند ترکیب Encode شده غیر قابل بازگشتی مثل sha1 آن باشد.

 

0 0
کریس جان مثالی ازش داری که قابل استفاده باشه (9 سال پیش)
0 0
آره اگه بشه مثالی بزنی خیلی خوب میشه. چون میخواستم برای بالا بردن امنیت برنامم یه چنین چیزی بکار ببرم. ولی دقیق نمیدونم چکار باید کنم. (9 سال پیش)
پاسخ به سوال 
احمد  9 سال پیش
+1 0

شاید این کد خوبی باشه

 	private String getMACAddress(String interfaceName) {
		try {
			List<NetworkInterface> interfaces = Collections
					.list(NetworkInterface.getNetworkInterfaces());
			for (NetworkInterface intf : interfaces) {
				if (interfaceName != null) {
					if (!intf.getName().equalsIgnoreCase(interfaceName))
						continue;
				}
				byte[] mac = intf.getHardwareAddress();
				if (mac == null)
					return "";
				StringBuilder buf = new StringBuilder();
				for (int idx = 0; idx < mac.length; idx++)
					buf.append(String.format("%02X:", mac[idx]));
				if (buf.length() > 0)
					buf.deleteCharAt(buf.length() - 1);
				return buf.toString();
			}
		} catch (Exception ex) {
		}
		return "";
	}

private String getUUID() { TelephonyManager teleManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); String tmSerial = teleManager.getSimSerialNumber(); Log.i(G.APP_LOG, "tmSerial:" + tmSerial); String tmDeviceId = teleManager.getDeviceId(); Log.i(G.APP_LOG, "tmDeviceId:" + tmDeviceId); String androidId = android.provider.Settings.Secure.getString( getContentResolver(), android.provider.Settings.Secure.ANDROID_ID); Log.i(G.APP_LOG, "androidId:" + androidId); String macwifi = getMACAddress("wlan0"); // using wifi Log.i(G.APP_LOG, "macwifi:" + macwifi); String macethernet = getMACAddress("eth0"); // using ethernet Log.i(G.APP_LOG, "macethernet:" + macethernet); if (tmSerial == null) { tmSerial = "1"; } if (tmDeviceId == null) { tmDeviceId = "1"; } if (androidId == null) { androidId = "1"; } if (macwifi == null | macwifi.equals("")) { macwifi = "1"; } if (macethernet == null | macethernet.equals("")) { macethernet = "1"; } String mac = macwifi + macethernet; UUID deviceUuid = new UUID(androidId.hashCode() + mac.hashCode(), ((long) tmDeviceId.hashCode() << 32) | tmSerial.hashCode()); String uniqueId = deviceUuid.toString(); return uniqueId; }

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .