Dodatkowe funkcjonalności Androida, których nikt nie wspiera

Paweł Dedio Programowanie 2018-12-29

Witajcie w kolejnym odcinku. Dzisiaj poruszę temat, o który prosiliście w komentarzach pod wcześniejszymi artykułami. Tytuł jest trochę clickbaitowy, jednak sami przyznacie, że brzmi lepiej niż: Dodatkowe funkcjonalności Androida, które wspierają tylko wybrane firmy, posiadające większy budżet lub czerpiące korzyści z tych funkcjonalności. Przy okazji tego długiego tytułu streściłem wam powód, dlaczego niektóre funkcjonalności nie są powszechnie wspierane. Jeśli jednak chcecie dowiedzieć się więcej — zapraszam do przeczytania całości.

Jak wygląda proces tworzenia aplikacji?

Na wstępie muszę opowiedzieć, jak wygląda cała otoczka związana z tworzeniem aplikacji w firmach. Powstawanie aplikacji mógłbym porównać do budowy domu. Zanim pracownicy budowlani rozpoczną pracę, muszą zapoznać się z całą dokumentacją domu — planami, zastosowanymi materiałami i tak dalej. Nie ma tutaj miejsca na samowolkę, każda zmiana musi zostać potwierdzona przez kierownika budowy, a niektóre zmiany wymagają nawet przerobienia planów domu przez biuro projektowe. Również żadna firma nie zrobi nic poza tym, za co zapłaci klient. Nie wyobrażam sobie sytuacji, w której jakaś firma zrobi przed domem podjazd z kostki brukowej bez potwierdzenia i sfinansowania takiej potrzeby przez klienta.

No dobrze, ale gdzie tutaj podobieństwa do programowania? Wbrew pozorom jest ich sporo. Zanim rozpoczniemy projekt, musimy się zapoznać z dokumentacją. Na tym etapie dobieramy również odpowiednią architekturę, frameworki i tak dalej. Podobnie jak w przypadku budowy domu, tutaj też nikt nie zrobi nic poza to, co wymaga klient. Jest to spowodowane kwestią finansową — godzina praca programisty jest bardzo kosztowna i nikt nie będzie niczego sponsorował bez powodu. Również wszystkie zmiany muszą zostać przedyskutowane i potwierdzone przez klienta. Każdy bardzo dokładnie pilnuje swojego budżetu i nie ma tutaj miejsca na żadne odstępstwa. Jak tak sobie myślę, to jest jeszcze jedno podobieństwo — również w programowaniu zdarzają się czarne owce z takim podejściem jak na powyższym memie.

 

Dlaczego klienci nie chcą nowych funkcjonalności?

Wyżej powiedzieliśmy sobie, że każda zmiana musi zostać zaakceptowana przez klienta. W każdej firmie, w której pracowałem, uświadamialiśmy klientów o różnych ciekawych funkcjonalnościach, mogących poprawić odbiór aplikacji przez użytkowników. Dlaczego więc klienci są niechętni do dodatkowych funkcjonalności? Pewnie nie będzie niespodzianką, że chodzi o… pieniądze. Klienci patrzą na to wszystko bardzo praktycznie, inwestują ogromne fundusze w aplikację i oczekują zwrotu z tej inwestycji. Dlatego ciężko im przekazać, w jaki sposób przykładowo zaimplementowanie funkcji Aplikacji błyskawicznej (instant app) może wpłynąć na powiększenie zysków. Mam nadzieję, że udało mi się Was wprowadzić w całą otoczkę związaną z tworzeniem aplikacji, więc teraz możemy przejść do konkretnych funkcjonalności.

 

Aplikacja błyskawiczna (instant app)

Tutaj chciałbym zaznaczyć, że ten termin to nie jest moje wesołe tłumaczenie, lecz oficjalna nazwa używana przez Google. Pewnie większość z Was wie, co to jest, ale dla pewności przypomnę. Dzięki tej funkcji możemy uruchomić jakąś funkcję aplikacji, bez potrzeby instalacji. Możecie to przetestować, uruchamiając jakikolwiek film w portalu Vimeo.com (musicie korzystać z co najmniej Androida 6.0 Marshmallow).

No dobrze, ale w czym jest problem? Funkcjonalność ta nie jest jakaś bardzo trudna do implementacji, o ile bierze się ją pod uwagę od samego początku tworzenia aplikacji. Jeśli zaczniemy ją implementować już pod koniec, to pojawia się kilka problemów. Przede wszystkim Instant app wymusza pisanie aplikacji w sposób, który nie jest jakoś bardzo popularny. Mianowicie każdą funkcjonalność musimy wydzielać do osobnego modułu, bo tylko wtedy ta funkcjonalność będzie mogła występować jako instant app. Kolejnym dość dotkliwym ograniczeniem jest limit wielkości pliku apk — wynosi on zaledwie 4 MB (na szczęście Google planuje podniesienie limitu do 10 MB). Co prawda limit ten nie dotyczy całej aplikacji, lecz tylko jednej funkcjonalności, ale i tak jest to dość problematyczne. Na szczęście pojawiło się sporo badań wykazujących korzystny wpływ tej funkcji na liczbę użytkowników aplikacji. Dzięki temu już teraz możemy zobaczyć, że coraz więcej firm decyduje się na implementację tej funkcjonalności. W przyszłości na pewno zachęci ich też podniesiony limit wielkości pliku apk.

 

Multi-Window

Funkcjonalność ta została zaprezentowana w Androidzie 7.0 Nougat. W przeciwieństwie do Instant App jest ona obsługiwana przez większość aplikacji i jest nawet włączona domyślnie. Jednak jest to obsługa na bardzo podstawowym poziomie, czyli możemy sobie jedynie powiększać i zmniejszać okienko z aplikacją. Czasami możemy zobaczyć, że interfejs w ogóle nie został przygotowany na taką sytuację i przy bardzo małym okienku, wszystko zaczyna się rozjeżdżać. Dodatkowo Android oferuje obsługę przenoszenia różnych elementów bezpośrednio z jednej aplikacji do drugiej, ale niestety mało która aplikacja to wspiera. Jest to jedna z tych funkcjonalności, która nie przekłada się bezpośrednio na zyski, więc ciężko namówić klienta na zainwestowanie czasu w usprawnienie obsługi multi-window.

 

Picture in picture

Jest to rozszerzenie funkcji Multi-Window, ale w przeciwieństwie do niej, nie jest domyślnie włączona. No dobrze, ale co to tak właściwie jest? Pewnie wielokrotnie zauważyłeś, że po wyjściu z nawigacji Google (nawigacja musi być w trakcie prowadzenia) na ekranie pojawia się małe okienko z miniaturową mapą. To jest właśnie tryb picture in picture. Całość wygląda dość prosto, więc dlaczego tak mało aplikacji udostępnia tę funkcjonalność? Tutaj znowu chodzi o czas potrzebny do obsługi trybu PiP. Okienko z aplikacją jest bardzo małe i nie możemy po prostu zostawić aplikację w takim samym stanie, w jakim jest normalnie. Aby wszystko wyglądało ładnie, musimy dostosować interfejs specjalnie pod ten tryb. Dodatkowo nie każdy rodzaj aplikacji nadaje się do otworzenia w trybie PiP. Przykładowo jakie zastosowanie mogłaby mieć ta funkcjonalność w aplikacji do kupowania biletów? To rozwiązanie zostało stworzone głównie z myślą o aplikacjach do rozmów, odtwarzających filmy i tak dalej.

 

Obracanie ekranu

O tej funkcjonalności pisałem już trochę w odcinku o tworzeniu interfejsu użytkownika. Pewnie zauważyliście, że mało jest programów, które wspierają obracanie ekranu, mimo że ta funkcjonalność jest domyślnie włączona podczas tworzenia nowego projektu aplikacji. Tutaj główną trudność sprawiają dwie rzeczy: po pierwsze musimy dostosować interfejs do poziomego trybu, a po drugie musimy być gotowi, że w każdym momencie nasza aplikacja zostanie zrestartowana. Oczywiście nie jest to coś niewykonalnego i wbrew pozorom jest to nawet proste. Jednak użyteczność tego trybu w zwykłych aplikacjach nie jest zbyt wysoka, więc klienci wolą spożytkować zasoby na jakieś bardziej widoczne funkcjonalności. Oczywiście dużo zależy od przeznaczenia aplikacji, bo przykładowo nikt nie wyobraża sobie odtwarzacza filmów nieobsługującego rotacji ekranu.

 

App shortcuts

Moim zdaniem jedna z ciekawszych funkcjonalności, niestety również pomijana. Sam staram się zachęcać klientów do rozważenia tej funkcjonalności, ale ciężko wskazać im czysto biznesową korzyść z takiego rozwiązania. No dobrze, ale co to właściwie jest? Są to specjalne skróty, widoczne po przytrzymaniu ikonki aplikacji. Jak w większości takich nowości, na pewno znajdziemy je w aplikacjach od Google — przykładowo w Chrome mamy do wyboru dwie skróty: Nowa karta oraz Karta incognito. To nie wszystko, aplikacja może również tworzyć dynamiczne skróty. Na przykład aplikacja bankowa może stworzyć skrót, który przeniesie Cię od razu do historii jednego z Twoich rachunków. Co więcej, w niektórych launcherach taki dynamiczny skrót możemy wyodrębnić jako osobną ikonę aplikacji.

Pewnie sobie teraz myślisz, gdzie jest haczyk, który powoduje, że tak mało aplikacji to wspiera. Już śpieszę z wytłumaczeniem. Mianowicie nie jest to wspierane domyślnie i obsługa tej funkcjonalności wiąże się z napisaniem dodatkowego kodu. Ponadto powszechne podejścia do programowania, polegające na używaniu tylko jednej aktywności, a wewnątrz niej fragmentów, lekko komplikuje przejście bezpośrednio do któregoś z ekranów z pominięciem poprzednich.

 

Asystent Google

asystent google

Asystent Google wielkimi krokami zbliża się do obsługi języka polskiego, lecz nieco mniejszymi krokami wchodzi do różnych aplikacji. Pewnie gdzieś obiło wam się o uszy, że Asystent Google może być integrowany do różnych aplikacji. Przykładowo, zamiast otwierać aplikację do kupowania biletów, mógłbyś porozmawiać z asystentem i on zrobiłby to za ciebie. Tutaj problemem nie jest brak perspektywy zysku, bo jednak można to traktować jako rozszerzenie kanałów sprzedaży. Głównymi problemami są oczywiście czasochłonność oraz integracja z systemami Google. Jeśli na etapie projektowania nikt nie zakładał autoryzacji poprzez serwery Google, może to być nieco problematyczne w późniejszym etapie. Jednak myślę, że wraz z wejściem Asystenta na nowe rynki, powiększy się lista obsługujących go usług.

 

Dzięki za dzisiaj! Zdaję sobie sprawę, że nie opisałem tutaj wszystkich takich funkcjonalności. Dlatego zachęcam Was do zgłaszania swoich propozycji w komentarzach. Widzimy się już za tydzień, gdzie opowiem co nieco o procesie kompilacji aplikacji. Do zobaczenia!

Zapraszam również na największe w Polsce forum dla programistów Android. Jeśli macie pytania odnośnie do kariery programisty — zapraszam do działu Kariera programowanie. Zachęcam również do przejrzenia działu Praca oraz zlecenia dla programistów — być może to właśnie tam znajdziesz swoją pierwszą pracę.

Poprzednie odcinki:

  1. Typowy dzień pracy programisty
  2. Wady pracy programisty
  3. Zalety pracy programisty
  4. [FAQ] Wszystko, co powinieneś wiedzieć, jeśli interesuje Cię praca programisty
  5. Co mnie zdziwiło w programowaniu?
  6. Motywacje – w jaki sposób nie stracić zapału do programowania?
  7. Jaką firmę wybrać na początku kariery programisty?
  8. Jak wygląda rozmowa o pracę na stanowisko programisty?
  9. Jak zacząć programować?
  10. Skąd czerpać wiedzę o programowaniu?
  11. Początki programowania — jaką technologię wybrać?
  12. Cykl życia aplikacji na Androida — co to takiego?
  13. Jak tworzymy interfejs użytkownika w aplikacjach na Androida?
  14. Jak system Android oszczędza energię?
  15. Jak działają i czym są powiadomienia push w Androidzie?
  16. W jaki sposób aplikacje pobierają dane z zewnętrznych serwisów i czym jest API?
  17. Jak działają pozwolenia w systemie Android?
  18. Śledzenie użytkowników — co wiedzą o nas aplikacje?
  19. Dlaczego aplikacje na Androida zajmują coraz więcej miejsca?
  20. Frameworki crossplatform – jak stworzyć aplikację na iOS i Androida jednocześnie?
  21. Jak obsłużyć kilka języków w aplikacji na Androida?




x