< Zpět na články

Jednoúčelové zařízení s použitím Android Management API

V Ackee se my, Android vývojáři, zabýváme převážně veřejně dostupnými aplikacemi. Ať už jde o sdílenou ekonomiku, oblast pohostinství či rozvážky, služby týkající se automotive, vzdělávání, hledání práce nebo inzerce: aplikace v těchto oblastech jsou obvykle snadno vyhledatelné a nebývají omezeny pro konkrétní organizaci, zařízení nebo účet. Občas ale naši klienti potřebují vyvinout interní aplikaci jen pro svou firmu - s různými úrovněmi přístupu, omezeními, vzdálenou konfigurací a silným zabezpečením. Ticketing, logistika nebo kurýrní navigace jsou typické příklady použití aplikací nedostupných běžné veřejnosti.

Splnění těchto požadavků se nijak výrazně nedotýká samotného vývoje aplikací, ale spíš MDM (Mobile device management - správa mobilních zařízení). Na trhu existuje mnoho různých řešení MDM a výběr závisí na každém jednotlivém případu a konkrétní firemní infrastruktuře.

V tomto příspěvku se zaměřím na Android Managment API, jednoduché a škálovatelné řešení od společnosti Google, které jsme si vybrali pro aplikaci ke kontrole vstupenek, kterou jsme nedávno vyvíjeli.

Prvním požadavkem zákazníka bylo omezit klientská zařízení pouze na aplikaci, kterou jsme vyvinuli (aby byla jediná dostupná na zařízení, nebo aby fungovala v kiosk módu s minimálním přístupem k ostatním funkcím). Dalším požadavkem byla možnost měnit konfiguraci zařízení na dálku bez přímého zásahu do zařízení. A nakonec požadoval zákazník možnost automatické instalace a aktualizací aplikace na všech cílových zařízeních.

A právě Android Management API umožňuje vše zmíněné. Zde jsou ještě další důvody, proč jsme se pro toto řešení rozhodli:

  • Produkt společností Google, což znamená bezproblémovou integraci se sadou Android SDK, odpadá tedy potřeba použít software od jiných výrobců.
  • Jednoduché, ale škálovatelné: základní konfigurace je opravdu snadná a nové funkce se v budoucnu přidávají jednoduše.
  • Podpora téměř všech zařízení Android od verze 6.0.
  • Není potřeba vlastní řešení backendu (ale může být integrován)

Nyní se podíváme na to, co je třeba udělat, aby se naše aplikace spustila v režimu jednoúčelového zařízení.

Android app

Android podporuje dva režimy pro jednoúčelová zařízení:

  • přísnější lock task režim (status bar a systémová tlačítka jsou skryta, aplikace úplně blokuje obrazovku)
  • app pinning režim (dočasné připnutí aplikace na domovskou obrazovku, uživatel může režim opustit).

V našem případě jsme se rozhodli pro první variantu, tedy zcela uzamknout obrazovku. Jediná věc, kterou musí vývojář provést, je povolit lock task režim buď spuštěním z kódu pro určitou aktivitu nebo nastavením atributu lockTaskMode na "if_whitelisted" nebo "always" v souboru AndroidManifest.xml.

Android Management API

To je klíčové místo, kde se dějí všechna ta kouzla. Chcete-li ve svém zařízení spustit Android Management API, musíte nejdříve provést několik věcí:

  1. Vytvořte enterprise. Enterprise reprezentuje účet organizace. Vše, co potřebujeme k vytvoření, je platný účet služby Gmail, který není spojen s žádným jiným enterprise. Například pokud je účet součástí jiné organizace, nebudete ho moci použít. Enterprise se skládá z policies a zařízení.
  2. Vytvořte policy. Jedná se o soubor pravidel definujících chování skupin zařízení, které jsou vázány na váš enterprise. Změny v policy, které se provádějí prostřednictvím Android Management API, se okamžitě projeví na zapojených zařízení bez jakýchkoli jiných zásahů.
  3. Zaregistrujte zařízení. Poslední částí je zapojit naše zařízení do právě vytvořené policy. Nejjednodušší způsob, jak to udělat, je vytvořit enrollment token, který je propojen s konkrétní policy a vaším enterprise. Chcete-li nastavit zařízení, mělo by být obnoveno do továrního nastavení. Potom může být vytvořený enrollment token  skenován v režimu čtení QR kódů. Chcete-li vstoupit do režimu čtení QR kódů, musíte šestkrát poklepat na stejné místo na uvítací obrazovce, pokud máte systém Android 7.0+, nebo zadáte afw#setup do přihlašovacího pole. A voilà, vaše zařízení je nyní podnikovým zařízením vázaným na konkrétní policy.

Snazším způsobem, jak dokončit všechny tyto kroky, je projít skrz quickstart guide, který poskytuje Google. Jinak musíte všechny tyto REST příkazy volat ručně nebo pomocí APIs Explorer. Další možností pro větší projekty je zapojit Android Management API do firemního backendu. Tento přístup umožňuje dokonalejší přizpůsobení a integraci s organizačními procesy. Pro možnost volání API ze serveru je třeba vytvořit service account.

Jednoduchý příklad  policy:

"applications": [  
 {  
   "packageName": "cz.ackee.example",  
   "installType": "FORCE_INSTALLED",  
   "lockTaskAllowed": true,  
   "defaultPermissionPolicy": "GRANT"  
 }  
],  
"persistentPreferredActivities": [  
   {  
     "receiverActivity": "cz.ackee.example/.cz.ackee.example.MainActivity",  
     "actions": [  
       "android.intent.action.MAIN"  
     ],  
     "categories": [  
       "android.intent.category.HOME",  
       "android.intent.category.DEFAULT"  
     ]  
   }  
],  
"installAppsDisabled": true,  
"dataRoamingDisabled": true,  
"kioskCustomLauncherEnabled": true  

Další příklady použití policies pro jednoúčelová zařízení naleznete zde. Všechny parametry pro policies jsou zde.

Google Play

Po registraci zařízení jsme jej propojili s naší policy. Ale i když máme naši aplikaci povolenou v policy (cz.ackee.example ve výše uvedeném příkladu), musíme ji do našeho zařízení nějak nainstalovat.

Samozřejmě, že to můžeme udělat manuálně nebo prostřednictvím distribučních kanálů třetích stran, ale pak to tak musíme provést pro každé zařízení zvlášť a každou novou aktualizaci zpracovat ručně. Tudíž taková volba pro nás vůbec nepřicházela v úvahu. Ale na druhou stranu jsme nechtěli, aby byla naše aplikace volně přístupná a viditelná v Play Storu.

Řešení je nakonec opravdu jednoduché. Tuto aplikaci lze umístit do Google Play jako  private app (soukromou aplikaci), která je omezena pouze na naši organizaci. Pokud je tedy zařízení propojeno s naší organizací, bude aplikace dostupná prostřednictvím managed Google Play.

Chcete-li to provést takto, musíme aplikaci nahrát do služby Google Play a poté v části Přítomnost v Obchodě -> Cena a distribuce -> Uživatelské programy -> Spravovaný obchod Google Play, zaškrtněte možnost Zapnout rozšířené funkce spravovaného obchodu Google Play -> Soukromě tuto aplikaci zacílit na seznam organizací a vyberte vaši organizaci. Pokud je účet organizace a účet služby Play Store stejný, zobrazí se tato volba, jinak musíme přidat organizaci podle identifikačního čísla.

Můžeme to otestovat dokonce v kanálech Alpha/Beta. Jediné, co musíme udělat, je doplnit naši organizaci v sekci Spravovat testery -> Organizace.

V tuto chvíli, pokud máme parametr aplikace installType nastavený na FORCE_INSTALLED v naší policy, bude aplikace automaticky nainstalována a aktualizována.

Závěr

Jak jsme si ukázali, je opravdu jednoduché zajistit fungování s tou nejjednodušší konfigurací. Na druhou stranu, jak můžete také vidět, policies umožňují přesně řídit konfiguraci zařízení a dokonce změnit jeho účel dálkově jen v několika kliknutích.

API je sice dobře zdokumentované, ale bohužel ještě není dostatek příkladů a osvědčených postupů. Navíc má Google pár podobných produktů (například Google Play EMM API) a je snadné nechat se zmást při výběru řešení a vyhledávání informací na webu.

Georgiy Shur
Georgiy Shur
Android Developer

Máte zájem o spolupráci? Pojďme to probrat osobně!