Projekt i implementacja aplikacji mobilnej czytnika kanaw RSS
Projekt i implementacja aplikacji mobilnej – czytnika kanałów RSS dla smartfonów z systemem operacyjnym i. OS oraz synchronizacją danych w chmurze Aleksandra Skierbiszewska 19. 05. 2016 r. Warszawska Wyższa Szkoła Informatyki
Dziedzina • Kanał internetowy (lub kanał informacyjny) – dokument (w formacie XML lub JSON), służący do publikacji często zmieniających się treści, takich jak wpisy blogów, wiadomości. Zawiera tytuł, streszczenie wiadomości albo jej pełny tekst i odnośnik do powiązanej z nią strony www. • Czytniki kanałów (ang. feed reader lub news aggregator) – programy do supskrybowania kanałów internetowych, dzięki którym użytkownik łatwo może przeglądać treści, bez konieczności otwierania przeglądarki internetowej i wyszukiwania kolejno każdej z interesujących go stron
Dziedzina Dwa najpopularniejsze formaty kanałów internetowych to: RSS – ang. Really Simple Syndication (RSS 2. 0) ATOM (standard) – standard kanałów informacyjnych mający zastąpić RSS
Dziedzina • UX (doświadczenie użytkownika ang. user experience). • użyteczność (ang. usability) • dostępność (ang. accessibility) Dostosowanie do wytycznych • WCAG 2. 0 (Web Content Accessibility Guidelines)
Cel • Projekt i wykonanie systemu w architekturze klient – serwer złożonego z aplikacji: • klienta działającej na urządzeniach mobilnych służącej do czytania kanałów internetowych • serwera udostępniającego usługę sieciową do synchronizacji listy kanałów. W sposób szczególny zostaną uwzględnione potrzeby osób niewidomych i słabowidzących.
Istniejące rozwiązania- Unread
Istniejące rozwiązania - Flippboard
Istniejące rozwiązania - Flippboard
Wymagania funkcjonalne • Wyświetlanie listy wpisów dla kanału RSS • Czytanie wpisów • tryb pełny • tryb uproszczony • Przechowywanie stanu wpisu (przeczytany/nieprzeczytany) • Zapisywanie listy kanałów RSS w formie adresów URL • Synchronizacja listy zapisanych kanałów pomiędzy urządzeniami • wymaga autoryzacji użytkownika • Dostosowanie aplikacji do potrzeb osób niewidomych i słabowidzących
Wymagania pozafunkcjonalne • Dane użytkowników przechowywane w bazie danych po stronie serwera • Kompatybilność aplikacji klienckiej – i. OS w wersji 8. 0 i wyższej • Zapewnienie działania aplikacji klienckiej w trybie offline • Bezpieczeństwo • dane użytkowników (login, hasło) szyfrowane po stronie aplikacji klienckiej z wykorzystaniem AES o długości klucza minimum 256 bitów • komunikacja aplikacji klienckiej z serwerem odbywa się z wykorzystaniem połączenia szyfrowanego
Architektura systemu
Usługa sieciowa • szkielet (framwork) Spark. Java • mapowanie ścieżek z wykorzystaniem wyrażeń lambda z Java 8 • mapowania obiektowo relacyjne (biblioteka ORMLite) • automatyczna serializacja obiektów Java do formatu JSON (biblioteka Gson) • warstwa utrwalania: baza danych My. SQL
Usługa sieciowa • Zorientowana na zasoby (RESTful) • Udostępnia reprezentacje abstrakcyjnych zasobów zamiast zdalnego wywołania procedur • Wykorzystuje metody protokołu HTTP • Każdy zasób udostępniany pod innym adresem URL
Aplikacja kliencka projekt interfejsu użytkownika Makieta Projekt graficzny Ekran aplikacji
Wybrane mechanizmy autoryzacja użytkowników • Zaimplementowany mechanizm sesji z wykorzystaniem żetonu (token) • Wykorzystanie mechanizmu filtrów zapytań w szkielecie Spark Java • Określony czas trwania sesji i wygasanie sesji • Po wygaśnięciu sesji automatyczne logowanie w tle na potrzeby synchronizacji
Wybrane mechanizmy synchronizacja danych • Przyrostowe synchronizowanie listy kanałów RSS • Po stronie serwera przechowywana jest informacja o czasie ostatniej synchronizacji • Po stronie urządzenia oznaczane są wpisy, które zostały dodane, zmienione lub usunięte od ostatniej synchronizacji • Wymieniane są jedynie dane, które zostały zmodyfikowane • zmniejszenie ilości przesyłanych danych • zmniejszenie liczby operacji zarówno po stornie aplikacji klienckiej i serwerowej
Wybrane mechanizmy połączenie szyfrowane HTTPS • Wygenerowanie pary kluczy i umieszczenie ich w aplikacji serwerowej • keytool -keystore rss-server -alias rss-server -genkey -keyalg RSA • Konfiguracja obsługiwana przez szkielet Spark Java • secure("ssl/rss-server", "password", null)
Wybrane mechanizmy bezpieczne przechowywanie danych po stronie aplikacji klienckiej • Przechowanie nazwy użytkownika i hasła w pęku kluczy (Keychain) • systemowa, szyfrowana strukturę, która przechowuje hasła do aplikacji i usług na danym urządzeniu • aplikacja ma dostęp tylko do tych danych w pęku kluczy, które sama w nim zapisała • dane użytkownika wykorzystywane są do logowania w tle przy synchronizacji, jeśli wygasła sesja na serwerze
Wybrane mechanizmy budowa interfejsu użytkownika w aplikacji klienckiej • Wykorzystano mechanizm Interface Builder środowiska Xcode • Interfejs użytkownika budowany z palety kontrolek • Związanie kontrolki z kodem aplikacji w sposób wizualny • brak konieczności tworzenia identyfikatorów • wykorzystanie mechanizmu „przeciągnij i upuść”
Aplikacja kliencka Interfejs użytkownika Ekran z listą kanałów Dostosowanie wielkości tekstu do preferencji użytkownika Odświeżenie danych • potrząśnięcie urządzeniem • gest „przeciągnij i upuść” Zrzuty ekranów osadzone w zdjęciach obudowy telefonu za pomocą mockuphone. com
Aplikacja kliencka Interfejs użytkownika Ekran szczegółów posta Widok pełnej strony www oraz widok uproszczony. Zrzuty ekranów osadzone w zdjęciach obudowy telefonu za pomocą mockuphone. com
Podsumowanie • Powstanie działającego systemu • Poznanie technik zwiększających dostępność aplikacji z interfejsem użytkownika • Aplikacja kliencja – próba eliminacji wad w obsłudze czytnika ekranu znalezionych w aplikacjiach dostępnych na rynku
Dziękuję za uwagę
- Slides: 23