بروز خطا
   [message]
اشتراک در سوال
پرسش و پاسخ

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

مدیریت گفتگو
Beny@min 10 سال پیش
آخرین تغییر: 10 سال پیش

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

 

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

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

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

نظرات

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

پاسخ‌ها 2

Hamedmtn 10 سال پیش

دروود

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

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

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

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

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

نظرات

MOJTABA 10 سال پیش
اگه گوشی روت باشه کاربر میتونه مقدار متغیر ذخیره شده رو عوض کرد.
Beny@min 10 سال پیش
گفته ی دوستمون مجتبی درسته ، میخوام تا جایی که میشه از Preference ها استفاده نکنم که بشه تغییرش داد ...
MOJTABA 10 سال پیش

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 رو برای کلیک شدن دکمه ها صدا می زنیم.

نظرات

Beny@min 10 سال پیش
خیلی ممنون جناب مجتبی ، کمک بزرگی بود...

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