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

قفل بخش هایی از برنامه برای پرداخت درون برنامه ای

Beny@min  10 سال پیش  10 سال پیش
+1 0

سلام خدمت همگی شما عزیزان

 

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

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

متشکر میشم اگر راهنماییم کنید چطور باید یک دکمه را قفل کنیم، که بعد از پرداخت آن قفل باز شود....

+1 0
یک متغیر بولین مثلا به نام isLock=True رو توی یک فایل فرمت بریزید و در کلیک شدن اینتنت رفتن به اکتیویتی بعدی رو توی یه شرط if بذارین که چک کنه isLock نباشه اون موقع اینتنت اجرا بشه و در غیر اینصورت یک Toast نشون داده بشه . وقتی کاربر پرداخت رو انجام داد اون موقع isLock , False بشه و روی فایل فرمت قبلی اون رو بریزید. (10 سال پیش)
0 0
جناب مجتبی ،میشه یه نمونه کدی قرار بدهید، من گیج شدم کلا همه چیزو قاطی کردم ، این پرداخت درون برنامه بازار هم عجب چیزیه که باعث میشه مخ آدم هنگ کنه ، یه جاییش رو درست میکنیم ، یه جای دیگش داغون میشه :)) (10 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
Hamedmtn  10 سال پیش
+1 0

دروود

  شما باید در یکی از listener های بازار که در زمان خریداری برنامه اجرا میشه یک sharedPrefrence با مقدار بولی(boolean ) ذخیره کنی:

SharedPreferences preferences =  PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("کلید دلخواه",true);

 سپس باید در بخش ویژه و یا در واقع قفل برای کاربر عادی چک کنی ببینی کاربر برنامه رو خریده یا نه؟ که با خوندن مقدار SharedPreference بالا میتونید از این موضوع اطلاع پیدا کنید:

boolean isPremium = preferences.getBoolean("کلید وارد شده در کد قبلی",false);

توجه داشته باشید که در کد بالا ، پارامتر آخر مقدار پیشفرض را در متغییر ذخیره میکند.

+1 0
اگه گوشی روت باشه کاربر میتونه مقدار متغیر ذخیره شده رو عوض کرد. (10 سال پیش)
0 0
کنه (10 سال پیش)
0 0
گفته ی دوستمون مجتبی درسته ، میخوام تا جایی که میشه از Preference ها استفاده نکنم که بشه تغییرش داد ... (10 سال پیش)
پاسخ به سوال 
MOJTABA  10 سال پیش
+3 0

2 تا متد Save و isLock میسازیم :

 private void Save(Boolean bool) {
        ObjectOutputStream outputStream = null;
        try {
            String filename = DIR_APP + "/sys.ucg";
            outputStream = new ObjectOutputStream(new FileOutputStream(filename));
            outputStream.writeBoolean(bool);
        }
        catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                outputStream.flush();
                outputStream.close();
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }
    }


    private Boolean isLock() {
        ObjectInputStream inputStream = null;
        try {
            String filename = DIR_APP + "/sys.ucg";
            inputStream = new ObjectInputStream(new FileInputStream(filename));
            boolean e = inputStream.readBoolean();
            return e;
        }
        catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                inputStream.close();
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

حالا طریقه استفاده کردن:

توی اولین باری که برنامه اجرا میشه باید متد (Save(true اجرا بشه و دیگه اجرا نشه . توی کلیک شدن هر دکمه ای که میخواد به اکتیویتی دیگه ای بره باید شرط زیر گذاشته بشه :

if(!isLock()){
//intent raftan be activity
}
else
{
// peyghame toast ke masalan : bayad noskhe talayi bekharid
}

چون من با درون پرداخت بازار تا حالا کار نکردم نمیدونم چه جوریه ولی وقتی کاربر پرداخت رو انجام داد اطلاعاتی مبنی بر موفقیت آمیز بودن پرداخت به برنامه میفرسته که اون رو چک میکنیم اگه درست بود اون موقع متد (Save(false رو صدا میزنیم.

خلاصه :

  Save را دو بار فقط صدا می زنیم ولی isLock رو برای کلیک شدن دکمه ها صدا می زنیم.

0 0
خیلی ممنون جناب مجتبی ، کمک بزرگی بود... (10 سال پیش)

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