2017-01-20 4 views
1

Я планирую внедрить систему вознаграждения в своем приложении для Android, где пользователи приложения могут получать 100 баллов каждый день для открытия приложения. Пользователи могут получать только 100 очков за один день, независимо от того, сколько раз больше, чем когда-то они открывают приложение. Я не знаю, как я могу идти об этом, например, приложение под названием WhatsChat, дать пользователям кредиты на открытие приложение каждый день:Внедрение системы вознаграждения

enter image description here Я пытаюсь внедрить подобную систему, но вместо того, чтобы только дать пользователям 100 очки за открытие приложения каждый день. Я понимаю, что мне нужно будет отслеживать день и, возможно, хранить его в локальном хранилище с использованием sharedpreference и вести учет дат каждого дня, а затем увеличивать переменную, которая записывает точки на 100.

В псевдокоде он будет выглядеть что-то вроде этого (я думаю);

Set CreditsGained to 0 

IF app launched for the first time on Current date THEN 
CreditsGained = CreditsGained + 100 
Else 
Do nothing 

Возможно, кто-нибудь поможет мне в том, как я могу реализовать такую ​​систему в своем приложении.

ответ

1

Вы делаете это на сервере. В первый раз, когда они делают сетевой запрос каждый день, добавьте 100 баллов к их итогу. Невозможно сделать эту безопасную клиентскую сторону.

+0

Я делаю прототип, в настоящее время у меня нет серверов. Поэтому в основном я хочу реализовать эту систему, используя локальное хранилище для тестирования/тестирования пользователей. – SumOne

+1

Если вы не делаете это по-настоящему, вам не нужно делать все правильно. Просто напишите работу, которая дает им 100 очков каждый день в полночь. –

+0

Но я хочу, чтобы они запускали приложение хотя бы раз в день, чтобы получить очки. – SumOne

0

Я рекомендую не использовать Shared Preferences для сохранения данных, как вы хотите. Потому что они могут его модифицировать.

Только один способ, которым вы можете его защитить, должен иметь свой собственный сервер, чтобы его сохранить. Локальное хранение также небезопасно.

Но если вы хотите узнать, как проверить это, вы можете использовать Shared Preferences.

Шаг1: получить текущее время в string:

SimpleDateFormat sdf = new SimpleDateFormat("d-m-Y"); 
Calendar cal = Calendar.getInstance(); 
String dateInStr = sdf.format(cal.getTime()); 

Шаг2: Проверка на активности запуска. После onCreate()

SharedPreferences pre=getSharedPreferences("my_sp", MODE_PRIVATE); 
SharedPreferences.Editor edit=pre.edit(); 

if (pre.getBoolean(dateInStr, false)){ 
    //they checked today 
}else{ 
    //not today 
    // use check function here 
    edit.putBoolean(dateInStr, true); 
    edit.commit(); 
} 

Хорошо, поставить шаг 1 выше код шаг 2 кода, я только отдельные его для облегчения понимания.

Шаг 3: После того, как вы можете проверить, есть ли у них контрольно-пропускной пункт более одного раза или нет. Давайте добавим их 100 точек, если это первый раз в день их проверки.

Put это в другое заявление, выше edit.putBoolean(dateInStr, true);

//get prev_score from SP 
long previous_score = pre.getLong("score", 0); 
//add 100 
previous_score = previous_score + 100; 
//save back to SP 
edit.putLong("score", previous_score); 
+0

Я делаю прототип, в настоящее время у меня нет серверов. Поэтому в основном я хочу реализовать эту систему, используя локальное хранилище для тестирования/тестирования пользователей. – SumOne

+0

@SumOne проверить мое решение – TruongHieu

+0

Привет, код с шага 1, следует ли вставить это в mainactivity? – SumOne

 Смежные вопросы

  • Нет связанных вопросов^_^