Рекомендации по сохранению состояния при паузе / выходе из мобильного приложения в Ionic 4 - PullRequest
0 голосов
/ 18 октября 2019

Мне интересно, какое лучшее решение для сохранения состояния в кроссплатформенных мобильных приложениях, использующих Ionic Framework.

В настоящее время я использую провайдера "GlobalService" с переменными, которые я получаю из Firestore, например: - userRole (member / administrator / none) - userOrganization (12345678)

Проблема заключается в том, что во время разработки или запуска приложения на реальном устройстве все эти переменные очищаются при «возобновлении приложения»или при перекомпиляции во время разработки. И я часто использую эти переменные в разных компонентах.

Я бы хотел все время избегать API-вызовов Firestore для обновления этих данных. Может ли кто-нибудь объяснить мне, как мне следует поступить так?

Я пробовал ионное хранилище и помещал это в свои публичные переменные, но, тем не менее, этот код затем должен был бы выполняться в каждом "корневом" компоненте. в "резюме приложения".

Я думаю, должен быть способ сохранить состояние в app.module.ts или аналогичном?

Спасибо.

1 Ответ

0 голосов
/ 18 октября 2019

Почему бы не использовать cordova-sqlite-storage? Он интегрирован с ионным. Вы можете проверить здесь: https://ionicframework.com/docs/building/storage. Он предоставляет просто получить / установить / удалить по ключу, основанный на обещаниях API.

Хранилище создает локальное хранилище, в котором хранятся данные - если вы не очистите их явно (например,при очистке «Данные приложения»). Это также хорошо работает в браузерах при тестировании. Вы можете найти его без приложения -> Хранилище -> IndexedDb

Пример использования:

import { Injectable} from '@angular/core';
import { Storage } from '@ionic/storage';

@Injectable()
export class StateService{

constructor(private storage: Storage){
}
set<T>(key: string, data: T){
    this.storage.set(key, data)
    .then(() => {})
    .catch(() => {});
}

get<T>(key: string): Promise<T>{
    return this.storage.get(key)
    .then((data:T) => {
        return data;
    })
    .catch(() => null);
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...