Sdílet prostřednictvím


PassKit v Xamarin.iOS

Aplikace Peněženka pro iOS umožňuje uživatelům ukládat digitální průchody na svých zařízeních. Tyto průchody vygenerují obchodníci a posílají zákazníkovi e-mailem, adresami URL nebo vlastní aplikací pro iOS daného obchodníka. Tyto průchody mohou představovat různé věci, od filmových lístků až po karty věrnosti až po palubu průchodů. Architektura PassKit umožňuje vývojářům pracovat s předáváním prostřednictvím kódu programu.

Tento dokument představuje peněženku a použití rozhraní API PassKitu s Xamarin.iOS.

Peněženka ukládá a organizuje všechny průchody na telefonu

Požadavky

Funkce PassKitu popsané v tomto dokumentu vyžadují iOS 6 a Xcode 4.5 spolu s Xamarin.iOS 6.0.

Úvod

Klíčovým problémem, který PassKit řeší, je distribuce a správa čárových kódů. Mezi příklady použití čárových kódů v reálném světě patří:

  • Nákup filmových lístků online – Zákazníci obvykle e-mailem e-mailem e-mailem čárový kód, který představuje jejich vstupenky. Tento čárový kód se vytiskne a převeze do kina, kde se má naskenovat vstup.
  • Věrnostní karty – Zákazníci mají v peněžence nebo kabelce řadu různých karet specifických pro obchod, pro zobrazení a skenování při nákupu zboží.
  • Kupóny – Kupóny se distribuují e-mailem, jako tisknutelné webové stránky, prostřednictvím poštovních schránek a čárových kódů v novinách a časopisech. Zákazníci je přinesou do obchodu pro skenování, dostanou zboží, služby nebo slevy vratce.
  • Boarding průchody – podobně jako nákup lístku na film.

PassKit nabízí alternativu pro každý z těchto scénářů:

  • Vstupenky na film – Po zakoupení zákazník přidá lístek události (prostřednictvím e-mailu nebo odkazu na web). Jak se čas pro film blíží, pass se automaticky objeví na zamykací obrazovce jako připomenutí, a při příjezdu do kina pass je snadno načten a zobrazen v Peněženka pro skenování.
  • Partnerské karty – místo (nebo kromě) poskytování fyzické karty mohou obchody vydávat (e-mailem nebo po přihlášení na webu) kartu Storu. Obchod může poskytovat další funkce, jako je například aktualizace zůstatku účtu při průchodu prostřednictvím nabízených oznámení a použití služeb geografické polohy, které pass může automaticky zobrazit na zamykací obrazovce, když se zákazník nachází poblíž místa obchodu.
  • Kupóny – Kupóny lze snadno generovat s jedinečnými vlastnostmi, které pomáhají se sledováním a distribuovány prostřednictvím e-mailu nebo webových odkazů. Stažené kupóny se můžou automaticky objevit na zamykací obrazovce, když se uživatel nachází poblíž konkrétního umístění nebo v daném datu (například když se blíží datum vypršení platnosti). Vzhledem k tomu, že kupóny jsou uloženy na telefonu uživatele, jsou vždy užitečné a nejsou chybně umístěné. Kupóny můžou zákazníkům povzbuzovat ke stažení doprovodných aplikací, protože odkazy z App Storu je možné začlenit do passu a zvýšit tak zapojení zákazníka.
  • Boarding pass – Po online check-inu obdrží zákazník průchod z paluby e-mailem nebo odkazem. Doprovodná aplikace poskytovaná poskytovatelem dopravy může zahrnovat proces vrácení se změnami a také umožnit zákazníkovi provádět další funkce, jako je volba sedadla nebo jídla. Poskytovatel přenosu může k aktualizaci průchodu použít nabízená oznámení, pokud je přenos zpožděný nebo zrušený. Když se přechod blíží, zobrazí se na zamykací obrazovce jako připomenutí a k zajištění rychlého přístupu k průchodu.

V jádru poskytuje PassKit jednoduchý a pohodlný způsob, jak ukládat a zobrazovat čárové kódy na zařízení s iOSem. Díky dodatečné integraci zamykací obrazovky a polohy nabízí nabízená oznámení a doprovodná aplikace základ pro velmi sofistikované prodeje, lístky a fakturační služby.

Ekosystém PassKit

PassKit není jen rozhraní API v CocoaTouchu, ale je součástí většího ekosystému aplikací, dat a služeb, které usnadňují bezpečné sdílení a správu čárových kódů a dalších dat. Tento diagram vysoké úrovně znázorňuje různé entity, které mohou být zapojeny do vytváření a používání průchodů:

Tento diagram vysoké úrovně znázorňuje entity zapojené do vytváření a používání průchodů.

Každá část ekosystému má jasně definovanou roli:

  • Peněženka – integrovaná aplikace apple pro iOS, která ukládá a zobrazuje průchody. Toto je jediné místo, kde jsou průchody vykresleny pro použití v reálném světě (tj. čárový kód se zobrazí spolu se všemi lokalizovanými daty v průchodu).
  • Doprovodné aplikace – aplikace pro iOS 6 vytvořené předáváním poskytovatelům za účelem rozšíření funkcí, které vydávají, například přidání hodnoty na kartu obchodu, změna sedadla na palubě nebo jiné funkce specifické pro firmy. Doprovodné aplikace nejsou potřeba, aby byl průchod užitečný.
  • Váš server – zabezpečený server, kde je možné vygenerovat průchody a podepsat pro distribuci. Vaše doprovodná aplikace se může připojit k vašemu serveru a vygenerovat nové průchody nebo požádat o aktualizace stávajících průchodů. Volitelně můžete implementovat rozhraní API webové služby, které peněženka volá za účelem aktualizace.
  • Servery APNS – Váš server má možnost informovat peněženku o aktualizacích na předání na dané zařízení pomocí služby APNS. Odešlete oznámení do peněženky, která se pak bude obrátit na váš server s podrobnostmi o změně. Doprovodné aplikace nemusí pro tuto funkci implementovat APNS (mohou naslouchat PKPassLibraryDidChangeNotification ).
  • Conduit Apps – Aplikace, které přímo manipulují s průchody (jako jsou doprovodné aplikace), ale které můžou zlepšit jejich nástroj rozpoznáváním průchodů a povolením jejich přidání do peněženky. Poštovní klienti, prohlížeče sociálních sítí a jiné aplikace pro agregaci dat můžou narazit na přílohy nebo odkazy na průchody.

Celý ekosystém vypadá složitě, takže stojí za zmínku, že některé komponenty jsou volitelné a mnohem jednodušší implementace PassKitu jsou možné.

Co je pass?

Pass je kolekce dat představujících lístek, kupón nebo kartu. Může být určeno pro jedno použití jednotlivcem (a proto obsahují podrobnosti, jako je číslo letu a přidělení sedadla), nebo může mít více tokenů použití, které může sdílet libovolný počet uživatelů (například slevový kupón). Podrobný popis je k dispozici v dokumentu Apple About Pass Files .

Typy

Aktuálně pět podporovaných typů, které lze v aplikaci Peněženka odlišit rozložením a horním okrajem průchodu:

  • Lístek události – malý středník výřez.
  • Palubní průchod – zářezy na straně, ikonu specifickou pro dopravu lze zadat (např. autobus, vlak, letadlo).
  • Karta storu – zaokrouhlená nahoru, jako je kreditní nebo debetní karta.
  • Kupón – perforovaný podél horní části.
  • Obecný – stejný jako karta obchodu, zaokrouhlený nahoře.

Na tomto snímku obrazovky se zobrazuje pět typů průchodů (v pořadí: kupón, obecný, karta obchodu, průchod na palubě a lístek události):

Tento snímek obrazovky ukazuje pět typů průchodů.

Struktura souborů

Pass file je ve skutečnosti archiv ZIP s příponou .pkpass , která obsahuje některé konkrétní soubory JSON (povinné), různé soubory obrázků (volitelné) i lokalizované řetězce (také volitelné).

  • pass.json – povinné. Obsahuje všechny informace o průchodu.
  • manifest.json – povinné. Obsahuje hodnoty hash SHA1 pro každý soubor s výjimkou souboru podpisu a tohoto souboru (manifest.json).
  • podpis – povinný. Vytvořili jste ho manifest.json podepsáním certifikátu vygenerovaného na portálu zřizování pro iOS.
  • logo.png – volitelné.
  • background.png – volitelné.
  • icon.png – volitelné.
  • Soubory lokalizovatelných řetězců – volitelné.

Adresářová struktura předávacího souboru je uvedena níže (toto je obsah archivu ZIP):

Tady je zobrazená adresářová struktura předávacího souboru.

pass.json

JSON je formát, protože průchody se obvykle vytvářejí na serveru – znamená to, že kód generování je na serveru nezávislý na platformě. Tři klíčové informace v každém průchodu jsou:

  • teamIdentifier – všechny odkazy vám předá vygenerovaný účet z App Storu. Tato hodnota je viditelná na portálu zřizování pro iOS.
  • passTypeIdentifier – Registrace na portálu zřizování pro seskupení seskupí (pokud vytvoříte více typů). Například v kavárně můžete vytvořit typ lístku karty obchodu, který umožní svým zákazníkům získávat partnerské kredity, ale také samostatný typ kupónu pro vytvoření a distribuci slevových kupónů. Stejná kavárna může dokonce uchovávat živé hudební události a vydávat lístek události pro ty.
  • serialNumber – jedinečný řetězec v tomto passTypeidentifier řetězci . Hodnota je neprůsledná pro peněženku, ale je důležitá pro sledování konkrétních průchodů při komunikaci se serverem.

Každý pass obsahuje velký počet dalších klíčů JSON, což je příklad uvedený níže:

{
   "passTypeIdentifier":"com.xamarin.passkitdoc.banana",  //Type Identifier (iOS Provisioning Portal)
   "formatVersion":1,                                     //Always 1 (for now)
   "organizationName":"Xamarin",                          //The name which appears on push notifications
   "serialNumber":"12345436XYZ",                          //A number for you to identify this pass
   "teamIdentifier":"XXXAAA1234",                         //Your Team ID
   "description":"Xamarin Demo",                          //
   "foregroundColor":"rgb(54,80,255)",                    //color of the data text (note the syntax)
   "backgroundColor":"rgb(209,255,247)",                  //color of the background
   "labelColor":"rgb(255,15,15)",                         //color of label text and icons
   "logoText":"Banana ",                                  //Text that appears next to logo on top
   "barcode":{                                            //Specification of the barcode (optional)
      "format":"PKBarcodeFormatQR",                       //Format can be QR, Text, Aztec, PDF417
      "message":"FREE-BANANA",                            //What to encode in barcode
      "messageEncoding":"iso-8859-1"                      //Encoding of the message
   },
   "relevantDate":"2012-09-15T15:15Z",                    //When to show pass on screen. ISO8601 formatted.
  /* The following fields are specific to which type of pass. The name of this object specifies the type, e.g., boardingPass below implies this is a boarding pass. Other options include storeCard, generic, coupon, and eventTicket */
   "boardingPass":{
/*headerFields, primaryFields, secondaryFields, and auxiliaryFields are arrays of field object. Each field has a key, label, and value*/
      "headerFields":[          //Header fields appear next to logoText
         {
            "key":"h1-label",   //Must be unique. Used by iOS apps to get the data.
            "label":"H1-label", //Label of the field
            "value":"H1"        //The actual data in the field
         },
         {
            "key":"h2-label",
            "label":"H2-label",
            "value":"H2"
         }
      ],
      "primaryFields":[       //Appearance differs based on pass type
         {
            "key":"p1-label",
            "label":"P1-label",
            "value":"P1"
         }
      ],
      "secondaryFields":[     //Typically appear below primaryFields
         {
            "key":"s1-label",
            "label":"S1-label",
            "value":"S1"
         }
      ],
      "auxiliaryFields":[    //Appear below secondary fields
         {
            "key":"a1-label",
            "label":"A1-label",
            "value":"A1"
         }
      ],
      "transitType":"PKTransitTypeAir"  //Only present in boradingPass type. Value can
                                        //Air, Bus, Boat, or Train. Impacts the picture
                                        //that shows in the middle of the pass.
   }
}

Čárové kódy

Podporují se pouze 2D formáty: PDF417, Aztec, QR. Apple tvrdí, že 1D čárové kódy nejsou pro skenování na podsvícené obrazovce telefonu.

Alternativní text zobrazený pod čárovým kódem je volitelný – někteří prodejci chtějí být schopni číst nebo psát ručně.

Kódování ISO-8859-1 je nejběžnější, zkontrolujte, které kódování používají systémy skenování, které budou číst vaše průchody.

Nálevnost (zamykací obrazovka)

Existují dva typy dat, které můžou způsobit zobrazení průchodu na zamykací obrazovce:

Místo

V passu lze zadat až 10 míst, např. prodejny, které zákazník často navštíví, nebo umístění kina nebo letiště. Zákazník může tato umístění nastavit prostřednictvím doprovodné aplikace nebo ho poskytovatel může určit z dat o využití (pokud jsou shromažďovány s oprávněním zákazníka).

Když se průchod zobrazí na zamykací obrazovce, vypočítá se plot tak, aby když uživatel opustí oblast, je průchod skrytý od zamykací obrazovky. Poloměr je svázaný s předáváním stylu, aby se zabránilo zneužití.

Datum a čas

V pass je možné zadat pouze jedno datum a čas. Datum a čas jsou užitečné pro aktivaci připomenutí zamykací obrazovky pro průchody a lístky událostí.

Dá se aktualizovat prostřednictvím nabízení nebo prostřednictvím rozhraní API PassKitu, aby bylo možné aktualizovat datum a čas v případě lístku s více použitím (například lístek na sezónu do divadla nebo sportovního komplexu).

Lokalizace

Překlad průchodu do více jazyků se podobá lokalizaci aplikace pro iOS – vytvořte adresáře specifické pro jazyk s rozšířením .lproj a umístěte lokalizované prvky dovnitř. Textové překlady by měly být zadány do pass.strings souboru, zatímco lokalizované obrázky by měly mít stejný název jako obrázek, který nahradí v kořenovém adresáři Pass.

Zabezpečení

Průchody jsou podepsané privátním certifikátem, který vygenerujete na portálu zřizování pro iOS. Postup pro podepsání průchodu:

  1. Vypočítejte hodnotu hash SHA1 pro každý soubor v adresáři pass (nezahrnujte ani manifest.jsonsignature soubor, ani jeden z nich by v této fázi přesto neměl existovat).
  2. Zapište manifest.json jako seznam klíč/hodnota JSON každého názvu souboru s hodnotou hash.
  3. Pomocí certifikátu podepište manifest.json soubor a zapište výsledek do souboru s názvem signature .
  4. ZIP všechno nahoru a dát výsledný soubor příponu .pkpass souboru.

Vzhledem k tomu, že se k podepsání průchodu vyžaduje váš privátní klíč, měl by být tento proces proveden pouze na zabezpečeném serveru, který řídíte. NEDISTRIBUUJTE klíče k vyzkoušení a vygenerování průchodů v aplikaci.

Konfigurace a nastavení

Tato část obsahuje pokyny, které vám pomůžou nastavit podrobnosti o zřizování a vytvořit první průchod.

Zřizování PassKitu

Aby bylo možné zadat průchod do App Storu, musí být propojený s vývojářským účtem. To vyžaduje dva kroky:

  1. Předání musí být registrováno pomocí jedinečného identifikátoru označovaného jako ID typu pass.
  2. Pro podepsání průchodu digitálním podpisem vývojáře musí být vygenerován platný certifikát.

Pokud chcete vytvořit ID typu pass, postupujte následovně.

Vytvoření ID typu pass

Prvním krokem je nastavení ID typu pass pro každý jiný typ průchodu, který se má podporovat. ID pass (nebo identifikátor typu pass) vytvoří jedinečný identifikátor pro pass. Toto ID použijeme k propojení průchodu s vaším vývojářským účtem pomocí certifikátu.

  1. V části Certifikáty, Identifikátory a Profily portálu pro zřizování iOS přejděte na Identifikátory a vyberte Předat ID typů . Pak výběrem + tlačítka vytvořte nový typ průchodu: Vytvoření nového typu průchodu

  2. Zadejte popis (název) a identifikátor (jedinečný řetězec) pro předání. Všimněte si, že všechna ID typu pass musí začínat řetězcem pass. v tomto příkladu, který používáme pass.com.xamarin.coupon.banana : Zadejte popis a identifikátor.

  3. Potvrďte ID pass stisknutím tlačítka Zaregistrovat .

Vygenerování certifikátu

Pokud chcete vytvořit nový certifikát pro toto ID typu pass, postupujte takto:

  1. V seznamu vyberte nově vytvořené ID pass a klikněte na Upravit : V seznamu vyberte nové ID pass-id.

    Pak vyberte Vytvořit certifikát... :

    Výběr možnosti Vytvořit certifikát

  2. Postupujte podle pokynů k vytvoření žádosti o podepsání certifikátu (CSR).

  3. Stiskněte tlačítko Pokračovat na portálu pro vývojáře a nahrajte CSR a vygenerujte certifikát.

  4. Stáhněte si certifikát a poklikáním ho nainstalujte do klíčenky.

Teď, když jsme vytvořili certifikát pro toto ID typu pass, popisuje následující část, jak sestavit předání ručně.

Další informace o zřizování pro peněženku najdete v průvodci prací s funkcemi .

Ruční vytvoření průchodu

Teď, když jsme vytvořili typ průchodu, můžeme ručně vytvořit průchod pro testování na simulátoru nebo zařízení. Postup vytvoření průchodu:

  • Vytvořte adresář, který bude obsahovat předávací soubory.
  • Vytvořte pass.json soubor, který obsahuje všechna požadovaná data.
  • Zahrnout obrázky do složky (v případě potřeby)
  • Vypočítejte hodnoty hash SHA1 pro každý soubor ve složce a zapisujte do manifest.json.
  • Podepište manifest.json staženým souborem .p12 certifikátu.
  • Zazipujte obsah adresáře a přejmenujte ho s příponou .pkpass.

V ukázkovém kódu tohoto článku jsou některé zdrojové soubory, které lze použít k vygenerování průchodu. Použijte soubory v CouponBanana.raw adresáři CreateAPassManually adresáře. Existují následující soubory:

Tyto soubory jsou k dispozici.

Otevřete pass.json a upravte JSON. Musíte aspoň aktualizovat passTypeIdentifier účet Apple Developer a teamIdentifer přizpůsobit ho.

"passTypeIdentifier" : "pass.com.xamarin.coupon.banana",
"teamIdentifier" : "?????????",

Pak musíte vypočítat hodnoty hash pro každý soubor a vytvořit manifest.json soubor. Až budete hotovi, bude vypadat přibližně takto:

{
  "icon@2x.png" : "30806547dcc6ee084a90210e2dc042d5d7d92a41",
  "icon.png" : "87e9ffb203beb2cce5de76113f8e9503aeab6ecc",
  "pass.json" : "c83cd1441c17ecc6c5911bae530d54500f57d9eb",
  "logo.png" : "b3cd8a488b0674ef4e7d941d5edbb4b5b0e6823f",
  "logo@2x.png" : "3ccd214765507f9eab7244acc54cc4ac733baf87"
}

Dále musí být pro tento soubor vygenerován podpis pomocí certifikátu (souboru .p12), který byl vygenerován pro toto ID typu pass.

Podepisování na Macu

Stáhněte si materiálypro podporu peněženky z webu Apple Downloads. signpass Pomocí tohoto nástroje převést složku na průchod (tím se také vypočítají hodnoty hash SHA1 a ZIP výstupu do souboru .pkpass).

Testování

Pokud byste chtěli prozkoumat výstup těchto nástrojů (nastavením názvu souboru na .zip a jeho otevřením), zobrazí se následující soubory (všimněte si přidání manifest.json souborů a signature souborů):

Zkoumání výstupu těchto nástrojů

Jakmile budete podepsáni, ZIPped a přejmenujete soubor (např. na BananaCoupon.pkpass) můžete ho přetáhnout do simulátoru, abyste ho otestovali, nebo ho pošlete e-mailem, aby se načetl na skutečném zařízení. Měla by se zobrazit obrazovka pro přidání průchodu, například takto:

Přidání předávací obrazovky

Za normálních okolností by tento proces byl automatizovaný na serveru, ale ruční vytvoření průchodu může být možností pro malé firmy, které vytvářejí jenom kupóny, které nevyžadují podporu back-endového serveru.

Peněženka

Peněženka je ústřední součástí ekosystému PassKit. Tento snímek obrazovky ukazuje prázdnou peněženku a způsob, jakým vypadá seznam průchodů a jednotlivé průchody:

Tento snímek obrazovky ukazuje prázdnou peněženku a vzhled seznamu passů a jednotlivých průchodů.

Mezi funkce peněženky patří:

  • Je to jediné místo, kde jsou průchody vykresleny s čárovým kódem pro skenování.
  • Uživatel může změnit nastavení aktualizací. Pokud je tato možnost povolená, můžou nabízená oznámení aktivovat aktualizace dat v rámci předávání.
  • Uživatel může povolit nebo zakázat integraci zamykací obrazovky. Pokud je tato možnost povolená, umožní se průchod automaticky objevit na zamykací obrazovce v závislosti na relevantním čase a datech o poloze vložených do průchodu.
  • Pokud je adresa URL webového serveru zadaná v předávacím kódu JSON, podporuje zadní strana pass-to-refresh.
  • Doprovodné aplikace je možné otevřít (nebo stáhnout), pokud je ID aplikace zadané ve formátu JSON.
  • Průchody je možné odstranit (s roztomilou animací shredding).

Přidání průchodů do peněženky

Průchody lze přidat do peněženky následujícími způsoby:

  • Conduit Apps – Tyto neprocházejí přímo, jednoduše načítají soubory a prezentují uživatele s možností jejich přidání do peněženky.

  • Doprovodné aplikace – Tyto aplikace píší poskytovatelé k distribuci průchodů a nabízejí další funkce pro procházení nebo úpravy. Aplikace Xamarin.iOS mají úplný přístup k rozhraní API PassKitu k vytváření a manipulaci s průchody. Průchody lze pak přidat do peněženky PKAddPassesViewControllerpomocí . Tento proces je podrobněji popsán v části Doprovodné aplikace tohoto dokumentu.

Conduit Applications

Aplikace Conduit jsou zprostředkující aplikace, které můžou přijímat předané jménem uživatele, a měly by být naprogramované tak, aby rozpoznaly svůj typ obsahu a poskytovaly funkce pro přidání do peněženky. Mezi příklady aplikací conduit patří:

  • Pošta – Rozpozná přílohu jako pass.
  • Safari – Rozpozná předávací typ obsahu při kliknutí na předávací odkaz URL.
  • Jiné vlastní aplikace – Všechny aplikace, které přijímají přílohy nebo otevřené odkazy (klienti sociálních médií, čtenáři pošty atd.).

Tento snímek obrazovky ukazuje, jak Pošta v iOSu 6 rozpozná přílohu a (když se dotknete) nabídek přidat do peněženky.

Tento snímek obrazovky ukazuje, jak Pošta v iOSu 6 rozpozná předanou přílohu.

Tento snímek obrazovky ukazuje, jak pošta nabízí přidání přílohy pass do peněženky.

Pokud vytváříte aplikaci, která by mohla být konduit pro průchody, je možné je rozpoznat takto:

  • Přípona souboru – .pkpass
  • Typ MIME – application/vnd.apple.pkpass
  • UTI – com.apple.pkpass

Základním provozem aplikace conduit je načtení předávacího souboru a volání PassKitu PKAddPassesViewController dát uživateli možnost přidat průchod do své peněženky. Implementace tohoto kontroleru zobrazení je popsána v další části o doprovodných aplikacích.

Aplikace conduit nemusí být zřízeny pro konkrétní ID typu pass stejným způsobem jako doprovodné aplikace.

Doprovodné aplikace

Doprovodná aplikace poskytuje další funkce pro práci s průchody, včetně vytvoření průchodu, aktualizace informací spojených s passem a jinak správa průchodů přidružených k aplikaci.

Doprovodné aplikace by se neměly pokoušet duplikovat funkce peněženky. Nejsou určeny k zobrazení průchodů pro skenování.

Zbývající část této části popisuje, jak vytvořit základní doprovodnou aplikaci, která komunikuje s PassKitem.

Zřizování

Vzhledem k tomu, že peněženka je technologie obchodu, musí být aplikace zřízena samostatně a nemůže používat profil zřizování týmu nebo ID aplikace se zástupným znakem. Informace o vytvoření jedinečného ID aplikace a zřizovacího profilu pro aplikaci Peněženka najdete v průvodci prací s funkcemi.

Nároky

Soubor Entitlements.plist by měl být součástí všech nedávných projektů Xamarin.iOS. Pokud chcete přidat nový soubor Entitlements.plist, postupujte podle pokynů v průvodci Práce s nároky .

Chcete-li nastavit nároky, postupujte takto:

Poklikáním na soubor Entitlements.plist v oblasti řešení otevřete editor Entitlements.plist:

Editor Entitlements.plst

V části Peněženka vyberte možnost Povolit peněženku.

Povolení nároku na peněženku

Výchozí možností je, že vaše aplikace povolí všechny typy průchodů. Aplikaci je ale možné omezit a povolit jenom podmnožinu typů passů týmu. Chcete-li tuto možnost povolit, vyberte možnost Povolit podmnožinu typů průchodů týmu a zadejte identifikátor typu průchodu podmnožinu, kterou chcete povolit.

Ladění

Pokud máte problémy s nasazením aplikace, zkontrolujte, že používáte správný profil zřizování a že Entitlements.plist je vybraný jako soubor vlastních nároků v možnostech podepisování sady prostředků i Telefon.

Pokud při nasazování dojde k této chybě:

Installation failed: Your code signing/provisioning profiles are not correctly configured (error: 0xe8008016)

pole pass-type-identifiers nároků je nesprávné (nebo neodpovídá profilu zřizování). Ověřte správnost ID typu pass a ID vašeho týmu.

Třídy

Pro aplikace pro přístup ke průchodům jsou k dispozici následující třídy PassKitu:

  • PKPass – instance pass.
  • PKPassLibrary – poskytuje rozhraní API pro přístup k průchodům na zařízení.
  • PKAdd PassViewController – slouží k zobrazení průchodu pro uživatele k uložení do své peněženky.
  • PKAddPassesViewControllerDelegate – vývojáři Xamarin.iOS

Příklad

V ukázce tohoto článku si projděte projekt PassLibrary. Ukazuje následující běžné funkce, které by se vyžadovaly v aplikaci Průvodce peněženkou:

Zkontrolujte, jestli je peněženka k dispozici.

Peněženka není na iPadu dostupná, takže aplikace by se měly před pokusem o přístup k funkcím PassKitu zkontrolovat.

if (PKPassLibrary.IsAvailable) {
    // create an instance and do stuff...
}

Vytvoření instance předávací knihovny

Knihovna PassKit není jediné, aplikace by měly vytvářet a ukládat a ukládat instance pro přístup k rozhraní API PassKitu.

if (PKPassLibrary.IsAvailable) {
    library = new PKPassLibrary ();
    // do stuff...
}

Získání seznamu průchodů

Aplikace můžou požádat o seznam průchodů z knihovny. Tento seznam se automaticky vyfiltruje pomocí PassKitu, takže můžete zobrazit jenom průchody vytvořené pomocí ID vašeho týmu a které jsou uvedené ve vašich nárocích.

var passes = library.GetPasses ();  // returns PKPass[]

Všimněte si, že simulátor nefiltruje seznam vrácených průchodů, takže tato metoda by měla být vždy testována na skutečných zařízeních. Tento seznam lze zobrazit v uiTableView. Ukázková aplikace vypadá takto po přidání dvou kupónů:

Ukázková aplikace vypadá takto po přidání dvou kupónů.

Zobrazení průchodů

K dispozici je omezená sada informací pro vykreslování průchodů v doprovodných aplikacích.

Vyberte si z této sady standardních vlastností, abyste zobrazili seznamy průchodů, jak to dělá ukázkový kód.

string passInfo =
                "Desc:" + pass.LocalizedDescription
                + "\nOrg:" + pass.OrganizationName
                + "\nID:" + pass.PassTypeIdentifier
                + "\nDate:" + pass.RelevantDate
                + "\nWSUrl:" + pass.WebServiceUrl
                + "\n#" + pass.SerialNumber
                + "\nPassUrl:" + pass.PassUrl;

Tento řetězec se v ukázce zobrazí jako výstraha:

Výstraha Vybraný kupón v ukázce

Metodu LocalizedValueForFieldKey() můžete také použít k načtení dat z polí v předplatných, která jste navrhli (protože budete vědět, která pole mají být k dispozici). Příklad kódu toto nezobrazuje.

Načtení průchodu ze souboru

Vzhledem k tomu, že průchod lze přidat pouze do peněženky s oprávněním uživatele, musí být předložen kontroler zobrazení, aby se mohl rozhodnout. Tento kód se používá v tlačítku Přidat v příkladu k načtení předem připraveného průchodu, který je vložený v aplikaci (měli byste ho nahradit podpisem):

NSData nsdata;
using ( FileStream oStream = File.Open (newFilePath, FileMode.Open ) ) {
        nsdata = NSData.FromStream ( oStream );
}
var err = new NSError(new NSString("42"), -42);
var newPass = new PKPass(nsdata,out err);
var pkapvc = new PKAddPassesViewController(newPass);
NavigationController.PresentModalViewController (pkapvc, true);

Pass se zobrazí s možnostmi Přidat a Zrušit :

Pass presented with Add and Cancel options

Nahrazení existujícího průchodu

Nahrazení existujícího průchodu nevyžaduje oprávnění uživatele, ale pokud průchod ještě neexistuje, selže.

if (library.Contains (newPass)) {
     library.Replace (newPass);
}

Úprava průchodu

PKPass není proměnlivý, takže nemůžete aktualizovat předávací objekty v kódu. Pokud chcete změnit data v předávací aplikaci, musí mít přístup k webovému serveru, který může uchovávat záznam o průchodech a generovat nový soubor pass s aktualizovanými hodnotami, které může aplikace stáhnout.

Vytvoření souboru musí proběhnout na serveru, protože průchody musí být podepsané certifikátem, který musí být soukromý a zabezpečený.

Po vygenerování aktualizovaného předávacího souboru použijte Replace metodu k přepsání starých dat v zařízení.

Zobrazení průchodu pro kontrolu

Jak už jsme si poznamenali dříve, může jen peněženka zobrazit průchod pro skenování. Pass se dá zobrazit pomocí metody, jak je znázorněno na obrázku OpenUrl :

UIApplication.SharedApplication.OpenUrl (p.PassUrl);

Příjem oznámení o změnách

Aplikace můžou naslouchat změnám provedeným v knihovně pass pomocí metody PKPassLibraryDidChangeNotification. Změny můžou být způsobené oznámeními aktivujícími aktualizace na pozadí, takže je vhodné je naslouchat v aplikaci.

noteCenter = NSNotificationCenter.DefaultCenter.AddObserver (PKPassLibrary.DidChangeNotification, (not) => {
    BeginInvokeOnMainThread (() => {
        new UIAlertView("Pass Library Changed", "Notification Received", null, "OK", null).Show();
        // refresh the list
        var passlist = library.GetPasses ();
        table.Source = new TableSource (passlist, library);
        table.ReloadData ();
    });
}, library);  // IMPORTANT: must pass the library in

Při registraci oznámení je důležité předat instanci knihovny, protože PKPassLibrary není singleton.

Zpracování serveru

Podrobná diskuze o vytvoření serverové aplikace pro podporu PassKitu je nad rámec tohoto úvodního článku.

Viz open source kód na straně serveru C# pro dotnet-passbook .

Nabízená oznámení

Podrobná diskuze o používání nabízených oznámení k aktualizaci je nad rámec tohoto úvodního článku.

Abyste mohli reagovat na webové požadavky z peněženky, budete muset implementovat rozhraní REST API definované společností Apple, když se vyžadují aktualizace.

Další informace najdete v průvodci aktualizací pass společnosti Apple.

Shrnutí

Tento článek představil PassKit, který popisuje některé z důvodů, proč je užitečné a popisuje různé části, které musí být implementovány pro úplné řešení PassKit. Popisuje kroky potřebné ke konfiguraci účtu Apple Developer tak, aby se vytvořily průchody, proces ručního předání a také přístup k rozhraním API PassKitu z aplikace Xamarin.iOS.