< Zpět na články

Novinky z WWDC 2020: Apple App Clips

Jako všichni iOS fanoušci a vývojáři jsme se i my v Ackee na WWDC 2020 velmi těšili. Už od poslední Keynote se na internetu objevovaly články a z Applu unikaly informace o tom, co firma v dalších verzích systémů pravděpodobně chystá. Letošní konference možná nepřinesla mnoho velkých novinek a někteří z nás možná byli zklamaní, ale vznikla spousta drobných vylepšení, které později určitě oceníme. V tomto blogu bych se rád zaměřil na jednu, která dle mého rozhodně stojí za zmínku – App Clips. 

Co to jsou App Clips a jak fungují?

Apple App Clips
Zdroj: https://developer.apple.com/wwdc20/10146
App Clips jsou rozšíření aplikace podporovaná od iOS 14, která umožní uživatelům spustit pouze její část, aniž by si ji museli stáhnout a nainstalovat celou. App Clip by měl být vždy zaměřen na jeden úkol (např. rezervace pokoje, zaplacení parkování, objednání produktu). Jedním z hlavních cílů App Clipu je zvýšení pocitu bezpečí uživatele. Jedna aplikace může mít více App Clips, což nám umožňuje rozdělit ji na více částí. App Clips není možné vydat samostatně, vždy je potřeba vydat celou aplikaci, proto musí být clip schopen vykonat stejnou funkci jako část aplikace. App clip se skládá ze samotného App Clipu a tzv. App Clip Card. Tato karta je první interakcí, kterou bude uživatel s App Clipem mít, a měla by mu vysvětlit jeho funkci. Také obsahuje odkaz na aplikaci a pokud váš App Clip využívá například polohové služby, uživatel uvidí i informaci, že App Clip bude tyto služby používat a toto nastavení si může případně upravit. Způsobů jak spustit App clip je několik, ve všech případech se používá URL, která je s daným App Clipem svázaná. Systém zjistí, jestli je k dané URL přiřazen nějaký App Clip, a také zda uživatel má aplikaci nainstalovanou nebo ne. Pokud ji nainstalovanou nemá, systém spustí App Clip. Způsobů, jak App Clip spustit, je několik:
  • kliknutím na odkaz
  • načtením QR Kódu nebo NFC Tagu
  • přes Safari App Banner
  • App clip lze svázat i s určitým místem a poté lze v aplikaci mapy na detailu místa vidět proklik na app clip

Pokud aplikaci nainstalovanou má, spustí přímo ji.

U NFC tagů a QR kódů není jisté, co se nám po jejich načtení otevře. Apple si je tohoto nedostatku vědom, a proto představil tzv. App Clip Codes. Tento “kód” v sobě má kombinovat funkci NFC tagu a QR kódu, a navíc bude jednoznačně identifikovatelný. V průběhu roku Apple představí i nástroje, pomocí kterých budeme tyto kódy moci vytvářet.

Apple App Clips code
Zdroj: https://developer.apple.com/wwdc20/10174

Omezení App Clips

V současné době není možné vytvořit identifikátor pro App Clip pod Enterprise účtem, proto je pravděpodobné, že nás čeká stejný postup jako v případě Sign in with Apple a budeme muset migrovat naše projekty pod běžný účet a nahrávat všechny testovací buildy na TestFlight.

Aby se App Clip spustil co nejrychleji, je jeho velikost omezena na 10 MB.

Přístup k poloze:

  • nelze vyžádat trvalý přístup k poloze
  • pokud uživatel zvolí možnost “Při používání aplikace”, pak toto povolení platí jen do následujícího rána (4:00) 

App Clips sice mají přístup ke stejným frameworkům jako běžné aplikace, nicméně některé jejich funkce nejsou dostupné. App clip půjde zkompilovat, ale API těchto frameworků mohou házet errory, žádná data nebo hodnoty indikující nedostupnost. Mezi takové frameworky se řadí:  CallKit, CareKit, CloudKit, HealthKit, HomeKit, ResearchKit, SensorKit, Speech.

V App Clips můžeme zobrazovat reklamy a doporučovat jiné aplikace, sledování uživatele je kvůli ochraně soukromí omezeno.

App Clips nemají přístup k těmto datům:

  • fitness data
  • Apple music a média
  • data z Kontaktů, Připomínek, Zpráv a Fotek

App Clip může sdílet data pouze s aplikací, ke které je přidružen.

App Clips Guidelines

Rád bych vypíchnul několik bodů, které by App Clip měl podle guidelines splňovat:

  1. Měl by být jednoduchý a rychlý, komplikovanější funkce by měly zůstat v aplikaci.
  2. Neměl by mít taby, komplexní navigaci ani nastavení.
  3. Ujistěte se, že uživatel může App Clip používat ihned.
  4. Neměl by se příliš lišit od aplikace – App Clip by měl mít velmi podobné UI a UX.
  5. Nenuťte uživatele instalovat aplikaci – nechte ho App Clip vyzkoušet (nabídněte mu stažení aplikace ideálně na konci flow). Jasně uživateli popište, co stažením aplikace získá.
  6. Používejte pouze notifikace, které uživateli pomohou k dokončení procesu (vyřízení objednávky, potvrzení rezervace, blížící se konec parkování apod.). 

Nastavení projektu

Pokud chcete App Clips přidat do existujícího projektu, je potřeba přidat nový Target a z nabídky možností vybrat App Clip. Poté vyplníte název, programovací jazyk a zda má clip využívat UIKit nebo SwiftUI. XCode poté vytvoří všechny potřebné soubory a App Clipu přidá novou schopnost/capability – On Demand Install Capable. Celý tento proces a rozhraní jsou naprosto identické s běžnou aplikací.

Jelikož se pro otevření App Clipu používá podobná technologie jako v případě Universal links, musí mít App Clip i aplikace přidanou capability Associated Domains Entitlement. Pro každou URL, kterou vaše aplikace podporuje, je potřeba přidat její doménu do Associated Domains Entitlement. Do pole vložte hodnotu ve formátu <prefix>:<fully qualified domain>. Pro app clip používáme prefix appclips a pro aplikaci applinks. Pokud je naše doména ackee.cz, pak přidáme tyto hodnoty:

applinks:ackee.cz appclips:ackee.cz

Aby systém po navštívení webové stránky poznal, jakou aplikaci má otevřít, je potřeba na web server do složky .wellknown přidat soubor apple-app-site-association, který obsahuje data ve formátu json, ale jeho název musí být bez přípony .json. Formát souboru a podrobnější návod lze najít zde.

Pro podporu App Clips, je potřeba do souboru přidat těchto pár řádek:

{
    "appclips": {
      	"apps": [“<bundle id app clipu>”]
    }
    ...
}

Na rozdíl od aplikací pro App Clip nedefinujeme v souboru žádnou cestu. Ta je potřeba nastavit v App Store connect.

Pro App Clip je na Developer portálu potřeba vytvořit identifikátor a profily. Tento proces se od běžné aplikace neliší, a proto stačí jen následovat instrukce na portálu. App Clip i aplikaci by tímto měli být nastavené a už jen stačí do App Clipu přidat potřebnou logiku a assety. Na závěr nesmíme, zapomenout připravit App Clip Card, která se opět nastavuje v App Store connect. Samotný proces nastavení v App Store Connect jsem si neměl možnost vyzkoušet. I přesto, že Apple dovoluje nahrávat buildy sestavené pomocí bety XCode 12, nedovolí vám nahrát aplikaci která obsahuje widgety nebo App Clips. Vývojáři ukazují celý postup nastavení ve videu Configure and Link your App Clips.

Testování

Než váš App Clip vypustíte do světa, je potřeba ho otestovat. App clip lze spustit samostatně přímo z XCode. Jestli jste někdy implementovali Universal Links, pak jistě víte, že testování deeplinků nebylo zrovna pohodlné. Naštěstí Apple přišel s novinkou, jak tento proces zpříjemnit a zjednodušit: když v XCode zvolíte váš App clip a kliknete na “Edit Schemes”, můžete si povšimnout proměnné _XCAppClipURL. Do této proměnné stačí jen vložit URL, zaškrtnout checkbox a spustit App Clip. Výhodou je, že můžeme použít jakoukoliv URL a není tedy potřeba mít pro testování web server.

Jak už jsem zmiňoval výše, nepodařilo se mi vytvořit identifikátor pro App Clip pod Enterprise účtem. Nejpoužívanějším a nejjednodušším způsobem distribuce App Clipů mezi testery tak pravděpodobně bude App Store Connect. Jediné, co je potřeba, je nahrát celý balík aplikace. Po otevření detailu buildu byste měli vidět novou sekci pojmenovanou App Clip Invocations, kde můžeme nastavit až tři URL (v tuto chvíli nelze otestovat, ale měla by stačit i smyšlená). Testeři potom v Testflightu v detailu aplikace uvidí novou sekci App Clips, ze které mohou jednoduše otestovat otevření App Clipu.

Bohužel vzhled App Clip Card lze otestovat až po vydání aplikace a invocation urls je potřeba nastavit pro každý build zvlášť. ????

App clips lze distribuovat přes Firebase App Distribution a podobné služby, ale je potřeba App Clipy zbuildit zvlášť a nahrát na danou službu. Osobně tento způsob distribuce nedoporučuji. App Clip sice půjde nainstalovat a spustit, ale bez invocation URLs toho váš tester moc neotestuje.

Závěr

App Clips jsou zajímavou technologií a nabízí mnohem více novinek a funkcí. Pokud máte aplikaci, která podporuje Universal links a jste schopni již teď spustit jen určitou část aplikace na základě deeplinku, nebo používáte modulární architekturu, pak určitě App Clips doporučuji implementovat (samozřejmě pokud to pro danou aplikaci dává smysl). Samotná implementace App Clips vám pak nezabere více než den. Bohužel si celý proces budeme moci vyzkoušet až později a určitě by stálo za to, se k App Clips vrátit a shrnout si poznatky z reálné implementace, review processu, nebo třeba nastavení connectu. Takže stay tuned!

Karel Leinhaupl
Karel Leinhaupl
iOS developer

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