Jak najlepiej przechowywać dane na urządzeniach mobilnych?

0

Cześć,

Mam taki problem, że nie mam pomysłu gdzie powinienem przechowywać dane użytkownika.
Mam aplikacje na androida/IOS, w której nie jest wymagane logowanie. Wystawiam również usługę z bazą danych, z którą aplikacja się łączy.Jedną z funkcjonalności aplikacji jest, że użytkownik może do niej dodawać różne elementy, które go interesują, dodawać do ulubionych itp.
No i nie wiem, gdzie powinienem przechowywać informację o jego elementach, ulubionych itp. Opcje nad którymi myślałem to:

  1. Przechowywać lokalnie w bazie danych SQLite. Miałbym tam różne id danych z bazy danych na serverze. Problem jaki tu mam to musiałbym cała implementacje dodawanie, usuwanie, aktualizacja robić po stronie androida/IOS. Ogólnie logika dużo bardziej będzie skomplikowana.
  2. Przechowywać wszystkie dane na serverze. Byłoby prościej, bo wtedy wszystkie usługi mam w jednym miejscu i nie muszę dodatkowej bazy danych robić (Użytkownika rozpoznawałbym po id urządzenia). ALE wtedy chyba nie będę mieć możliwości usunięcia danych, jeśli użytkownik usunie aplikacje lub wyczyści pamięć wewnętrzną aplikacji. Chyba, że jest jakaś opcja obsługi tego :)

Pytanie: Co byłoby lepszą opcją? A może istnieje jakiś inny sposób?

0

Chcesz by aplikacja była offline, online, czy taki i tak? Jeśli opcja 1. to sqlite, jak 2. to ja bym się pokusił o synchro z serwera, 3. też serwera.

Możesz go pingowac co jakiś czas, a jak apka nie odpowiada to pewnie usunięta xd ale to opcja tylko przy full online

0

Aplikacja będzie musiała być online, jeśli użytkownik będzie chciał cokolowiek zrobić.
Czy dawanie takiego pinga nie bedzie mało wydajne? Gorzej jak będzie błąd sieci, to nawet przy 3 próbach odpowiedzi, może użytkownikowi usunąć dane :D

0

jak **musi **dzialac online to niech aplikacja bedzie tylko warstwa reprezatytwa

https://stackoverflow.com/questions/10829371/sync-data-between-android-app-and-webserver

0

@Piotr P (Piciux) pinguj raz/dwa razy dziennie. Jeśli przez tydzień ci nie odpowie to kasuj.

0

@Dregorio: A masz jakiegoś linka, z parametrami jaki powinny pójść w pingu? (Bo przyznam, że nigdy tego nie robiłem). Wydaje mi się, że powinno iść id urządzenia i id apki mojej oraz użytkownik musi mieć w tym momencie dostęp do internetu, aby dostać pozytywną odpowiedź? Bo wtedy nawet dobry pomysł :D

@fasadin w tym linku z tego co czytałem to głównie piszą o synchronizacji między danymi. To w takim wypadku musiałbym również po stronie aplikacji android/IOS wprowadzić bazę SQLite? Czy może czegoś tam nie doczytałem? :)

0

@Piotr P (Piciux): Jak aplikacja się instaluje i jest pierwsze synchro to wysyłam deviceId. Zawsze czas pingowania możesz wydłużyć do miesiąca. Jeśli po miesiącu ani jeden ping nie będzie miał odpowiedzi to kasujesz dane z bazy. Ja trzymam i tak w backupie 5lat dane. Na wszelki wypadek.

0

@Dregorio: A co sądzisz, o pomyśle, aby stworzyć unikalny token dla urządzenia i aplikacja. Token byłby trzymany lokalnie. I wtedy łatwo byłoby wykryć, czy użytkownik usunął aplikacje lub wyczyścił dane (Wtedy po prostu tworzony zostałby nowy token przy kolejnym włączeniu aplikacji). I po stronie backendu mógłbym sprawdzać token i id urządzenia, jeśli są różne to znaczy, że użytkownik właśnie usunął aplikacje lub wyczyścił dane i przez to stare dane po stronie serwera mógłbym usunąć. Tylko pytanie na ile to bezpieczne :D
Oczywiście twoją część z pingiem też bym wprowadził, żeby zabezpieczyć się w sytuacji jeśli użytkownik usunął aplikację i nigdy więcej jej nie zainstalował :)

0

Nie wiem :p ja tylko używałem z pingiem bo dla mnie wydawała się ta metodą najprostsza do zaimplementowania i "najmniej" inwazyjna

1 użytkowników online, w tym zalogowanych: 0, gości: 1