Войти и войти с Retrofit - PullRequest
       20

Войти и войти с Retrofit

0 голосов
/ 14 апреля 2020

Я создал простой localhost API с базой данных JSON на моем компьютере. Я уже реализовал функции, в которых хосты могут создавать новый профиль или входить в существующий.

"hosts": [
    {
      "id": 1,
      "login": "drey95music",
      "password": "8526000Qq",
      "email": "shtandrinity@gmail.com",
      "eventName": "FDC Open Mic",
      "latitude": 41.924676,
      "longitude": -87.700266
    }],
"artists": [
    {
      "id": 1,
      "name": "MDQ",
      "phone": 7738375513,
      "isLocated": "true",
      "userId": 1
    }]

Мой вопрос заключается в том, как лучше всего сохранить / запомнить / проверить, вошел ли пользователь в систему, чтобы он / у нее будет больше функциональности?

Спасибо.

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

На самом деле вы можете получить реализацию разными способами в зависимости от вашего варианта использования. Лично я чувствовал бы, что если пользовательская информация очень мала или вам просто нужно сохранить токен, чтобы передать ее последующим запросам API, то сохранение этого токена в SharedPreferences может быть хорошей идеей. Чтобы к нему можно было получить доступ из любого места приложения, а также это хранилище является постоянным - то есть, даже если вы закрываете приложение и снова открываете его, оно говорит в постоянной памяти.

При этом, если вам нужно хранить много информации, я бы рекомендовал хранить ее в базе данных SQLite. SharedPreferences не рекомендуется для хранения больших объемов данных.

Надеюсь, это поможет!

0 голосов
/ 15 апреля 2020

Обычно разработчик использует Shared Preference для хранения некоторого значения поведения указанного ключа c. Я создал общий класс предпочтений c и использую его каждый проект android без каких-либо колебаний.

public class SaveInSharedPreference {

public static final String IS_LOGIN = "isLogin";

private final SharedPreferences pref;
private final SharedPreferences.Editor editor;

// shared pref mode
private final int PRIVATE_MODE = 0;

// Shared preferences file name
private static final String PREF_NAME = "PREF_NAME";

@SuppressLint("CommitPrefEdits")
public SaveInSharedPreference(Context context) {
    pref = context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
    editor = pref.edit();
}

public void setBoolean(String key, boolean value){
    editor.putBoolean(key, value);
    editor.commit();
}

public boolean getBoolean(String key) {
    return pref.getBoolean(key, false);
}

public void setString(String key, String value) {
    editor.putString(key, value);
    editor.commit();
}

public String getString(String key) {
    return pref.getString(key, "");
}

public void setInteger(String key, int value) {
    editor.putInt(key, value);
    editor.commit();
}

public Integer getInteger(String key) {
    return pref.getInt(key, 0);
}

public void clearSavedInSharedPreference(){
    editor.clear();
    editor.commit();
}

}

После успешной аутентификации пользователь использует эту строку для добавления / обновления значения ключа с помощью :

 new SaveInSharedPreference(this).setBoolean(IS_LOGIN, true);

И вы можете получить значение ключа следующим образом:

 new SaveInSharedPreference(this).getBoolean(IS_LOGIN);

Общие предпочтения хранятся только в String, Boolean, Long, Float, Integer. Если вы хотите сохранить JsonObject в общих настройках, вы также можете это сделать. Но вы должны изменить свой JsonObject на строку, затем сохранить его и получить значение из общего предпочтения в строке, а затем подключить его к вашему JsonObject, указанному ниже:

Сохранить / обновить данные

 new SaveInSharedPreference(this).setString("user_data", new Gson().toJson(put_your_model_here));

Получить данные

  new Gson().fromJson(new SaveInSharedPreference(this).getString("user_data"));

Вы также можете сохранить свой список в общих настройках.

...