Xamarin.iOS'ta PassKit

iOS Cüzdan uygulaması, kullanıcıların cihazlarında dijital geçişleri depolamalarına olanak tanır. Bu geçişler satıcılar tarafından oluşturulur ve müşteriye e-posta, URL veya satıcının kendi iOS uygulaması aracılığıyla gönderilir. Bu geçişler, film biletlerinden bağlılık kartlarına ve biniş kartlarına kadar birçok farklı şeyi temsil ediyor olabilir. PassKit çerçevesi geliştiricilerin geçişlerle program aracılığıyla etkileşim kurmalarını sağlar.

Bu belge, Cüzdan'ı ve Xamarin.iOS ile PassKit API'sini kullanmayı tanıtır.

Cüzdan, telefonda tüm geçişleri depolar ve düzenleyebilir

Gereksinimler

Bu belgede ele alınmakta olan PassKit özellikleri, Xamarin.iOS 6.0 ile birlikte iOS 6 ve Xcode 4.5 gerektirir.

Giriş

PassKit'in çözeceği temel sorun barkodların dağıtımı ve yönetimidir. Barkodların şu anda nasıl kullanıldıklarının gerçek dünya örneklerinden bazıları şunlardır:

  • Çevrimiçi film biletleri satın alma – Müşterilere genellikle biletlerini temsil eden bir barkod e-posta ile gönderilir. Bu barkod yazdırılır ve giriş için taranacak yazıya alınır.
  • Bağlılık kartları : Müşteriler, ürünleri satın alan ürünleri görüntülemek ve taramak için cüzdanlarında veya ayakkabılarında mağazaya özgü bir dizi farklı kart taşır.
  • Kuponlar: Kuponlar e-posta yoluyla yazdırılabilir web sayfaları olarak, letterbox'lar aracılığıyla ve indirimlerde ve magandalarda barkodlar olarak dağıtılır. Müşteriler ürünleri, hizmetleri veya indirimleri iade almak için bunları taramak için bir mağazaya getirir.
  • Biniş geçişleri: Film bileti satın almaya benzer.

PassKit, bu senaryoların her biri için bir alternatif sunar:

  • Film biletleri – Satın alındıktan sonra müşteri bir olay bileti kartı (e-posta veya web sitesi bağlantısı yoluyla) ekler. Film zamanı yaklaştıkça geçiş otomatik olarak kilit ekranında anımsatıcı olarak görünür ve pass, hedefe ulaştıkça kolayca alınarak Tarama için Cüzdan'da görüntülenir.
  • Bağlılık kartları: Fiziksel kart sağlamak (veya buna ek olarak) yerine mağazalar bir Mağaza Kartı (e-posta yoluyla veya web sitesi oturum açma sonrasında) dağıtabiliyor. Mağaza, anında iletişim bildirimleri aracılığıyla geçişte hesabın bakiyesini güncelleştirme ve müşteri bir mağaza konumunun yakınında olduğunda geçişin kilit ekranında otomatik olarak görüneceği coğrafi konum hizmetlerini kullanma gibi ek özellikler de sağlar.
  • Kuponlar : Kupon geçişleri, izlemeye yardımcı olmak için benzersiz özelliklerle kolayca oluşturulabilir ve e-posta veya web sitesi bağlantıları aracılığıyla dağıtılabiliyor. İndirilen kuponlar, kullanıcı belirli bir konuma yaklaştığında ve/veya belirli bir tarihte (sona erme tarihi yaklaştığında) otomatik olarak kilit ekranında görünebilir. Kuponlar kullanıcının telefonunda depolandığı için her zaman kullanışlıdır ve yanlış yere saklanmaz. Kuponlar müşterileri Yardımcı Uygulamalar indirmeye teşvik App Store bağlantıları Geçişe dahil olabileceği için müşteriyle etkileşimi artırabilirsiniz.
  • Biniş geçişleri: Çevrimiçi bir iade işleminin ardından müşteri, giriş geçişlerini e-posta veya bağlantı aracılığıyla alır. Taşıma sağlayıcısı tarafından sağlanan Yardımcı Uygulama, iade işlemini içerebilir ve müşterinin kendi yer veya yemeği seçme gibi ek işlevler gerçekleştirmesine olanak sağlar. Taşıma sağlayıcısı, aktarım gecikirse veya iptal edilirse geçişi güncelleştirmek için anında bildirim kullanabilir. Geçişe yaklaştıkça, kilit ekranında anımsatıcı olarak ve Geçişe hızlı erişim sağlamak için görünür.

Temel olarak PassKit, iOS cihazınıza barkodları depolamak ve görüntülemek için basit ve kullanışlı bir yol sağlar. Ek süre ve konum kilit ekranı tümleştirmesi, anında bildirim ve Yardımcı Uygulama tümleştirmesi sayesinde çok gelişmiş satış, biletleme ve faturalama hizmetleri için bir temel sunar.

PassKit Ekosistemi

PassKit yalnızca CocoaTouch içindeki bir API değildir, barkodların ve diğer verilerin güvenli bir şekilde paylaşımını ve yönetimini kolaylaştıran daha büyük bir uygulama, veri ve hizmet ekosisteminin bir parçasıdır. Bu üst düzey diyagramda geçiş oluşturma ve kullanma ile ilgili farklı varlıklar gösterebilirsiniz:

Bu üst düzey diyagram, geçiş oluşturma ve kullanma ile ilgili varlıkları gösterir

Ekosistemin her parçası açıkça tanımlanmış bir role sahip:

  • Cüzdan: Apple'ın geçişleri depo alan ve görüntüleyen yerleşik iOS uygulaması. Geçişlerin gerçek dünyada kullanım için işlenecek tek yer burasıdır (geçişte tüm yerelleştirilmiş verilerle birlikte barkod görüntülenir).
  • Yardımcı Uygulamalar – Bir mağaza kartına değer ekleme, bir biniş kartının veya işletmeye özgü başka bir işlevde yer değiştirme gibi, sorunlarından geçiş sağlayıcıları tarafından yapılan ve verilen geçişlerin işlevselliğini genişletmek için yerleşik iOS 6 uygulamaları. Geçişin yararlı olması için Yardımcı Uygulamalar gerekli değildir.
  • Sunucunuz – Geçişlerin oluşturularak dağıtım için imzalanacak güvenli bir sunucu. Yardımcı Uygulamanız sunucunuza bağlanarak yeni geçişler oluşturabilir veya mevcut geçişlere yönelik güncelleştirmeler talep ediyor olabilir. İsteğe bağlı olarak Cüzdan'ın geçişleri güncelleştirmek için çağırdığını web hizmeti API'sini kullanabilirsiniz.
  • APNS Sunucuları – Sunucunuz, ApNS kullanarak Cüzdan'a verilen bir cihazda geçişe güncelleştirmeleri bildirebilme özelliğine sahip. Daha sonra değişikliğin ayrıntıları için sunucunuzla iletişime geçerek Cüzdan'a bir bildirim gönderirsiniz. Yardımcı uygulamaların bu özellik için APNS uygulamasına gerek yok (dinlemeleri PKPassLibraryDidChangeNotification gerekir).
  • Conduit Apps: Geçişleri doğrudan işlemeyen uygulamalar (yardımcı uygulamalar gibi), ancak geçişleri tanıyarak ve Bunların Cüzdana eklenmelerine izin vererek yardımcı programlarını geliştirebilirsiniz. Posta istemcileri, sosyal ağ tarayıcıları ve diğer veri toplama uygulamaları, geçişlere yönelik eklerle veya bağlantılarla karşılaşabilirsiniz.

Ekosistemin tamamı karmaşık görünüyor, bu nedenle bazı bileşenlerin isteğe bağlı olduğunu ve çok daha basit PassKit uygulamaları mümkün olduğunu unutmayın.

Geçiş nedir?

Geçiş, bir bileti, kuponu veya kartı temsil eden bir veri koleksiyonudur. Bir kişi tarafından tek bir kullanım için amaçlanan bu belirteç (ve bu nedenle uçuş numarası ve yer ayırma gibi ayrıntıları içerir) veya herhangi bir sayıda kullanıcı (indirim kuponu gibi) tarafından paylaşılacak birden çok kullanım belirteci olabilir. Apple'ın Geçiş Dosyaları Hakkında belgesinde ayrıntılı bir açıklama mevcuttur.

Türler

Şu anda, Cüzdan uygulamasında geçişin düzenine ve üst kenarına göre ayırt edilebilir beş desteklenen tür:

  • Olay Bileti : küçük yarı kesimli tam çıkış.
  • Biniş Geçişi – yan tarafındaki çentikler, taşımaya özgü simge belirtilebilir (örneğin, bus, train, airplane).
  • Mağaza Kartı: kredi kartı veya banka kartı gibi üstte yuvarlanmış.
  • Kupon: üst kısmında perfore.
  • Genel : Mağaza Kartı ile aynı, üstte yuvarlanmış.

Bu ekran görüntüsünde beş geçiş türü gösterilir (sırasıyla: kupon, genel, mağaza kartı, biniş kartı ve olay bileti):

Bu ekran görüntüsünde beş geçiş türü gösterilir

Dosya Yapısı

Bir geçiş dosyası aslında bazı belirli JSON dosyalarını (gerekli), çeşitli görüntü dosyalarını (isteğe bağlı) ve yerelleştirilmiş dizeleri (isteğe bağlı) içeren bir .pkpass uzantısına sahip zip arşividir.

  • pass.json : gerekli. Geçiş için tüm bilgileri içerir.
  • manifest.json : gerekli. İmza dosyası ve bu dosya (manifest.json) dışında geçişte yer alan her dosya için SHA1 karmaları içerir.
  • signature: gerekli. manifest.jsonDosyayı iOS Sağlama Portalında oluşturulan sertifikayla imzalayarak oluşturulur.
  • logo.png : isteğe bağlı.
  • background.png : isteğe bağlı.
  • icon.png : isteğe bağlı.
  • Yerelleştirilebilir dize dosyaları – isteğe bağlı.

Bir geçiş dosyasının dizin yapısı aşağıda gösterilmiştir (ZIP arşivinin içeriğidir):

Bir geçiş dosyasının dizin yapısı burada gösterilmiştir

pass.json

JSON biçimidir çünkü geçişler genellikle bir sunucuda oluşturulur; bu, oluşturma kodunun sunucuda platformdan bağımsız olduğu anlamına gelir. Her geçişte üç önemli bilgi parçası vardır:

  • teamIdentifier : Bu bağlantı, tüm oluşturmanızı App Store geçer. Bu değer iOS Sağlama Portalı'da görünür.
  • passTypeIdentifier : Grup geçişleri için Sağlama Portalı'nda kaydol (birden fazla tür üretirsiniz). Örneğin, bir kahve mağazası müşterilerinin bağlılığını kredileri kazanmalarına olanak sağlamak için bir mağaza kartı geçiş türü oluşturabilir, ayrıca indirim kuponları oluşturmak ve dağıtmak için ayrı bir kupon geçiş türü oluşturabilir. Aynı kahve mağazası canlı müzik etkinlikleri de tutabilir ve bunlar için Olay Bileti geçişleri yayınlaya bile devam ediyor olabilir.
  • serialNumber – Bu içinde benzersiz bir dize. Bu değer Cüzdan için opaktır, ancak sunucunuzla iletişim kurarken belirli geçişleri izlemek için önemlidir.

Her Geçişte çok sayıda başka JSON anahtarı vardır ve bunun bir örneği aşağıda gösterilmiştir:

{
   "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.
   }
}

Barkodlar

Yalnızca 2D biçimler de desteklemektedir: PDF417, Aztec, QR. Apple, 1D barkodların, arka ışıklı telefon ekranında taramaya uygun olduğunu iddia ediyor.

Barkod altında görüntülenen alternatif metin isteğe bağlıdır. Bazı satıcılar el ile okuma/yazma yapmak ister.

ISO-8859-1 kodlaması en yaygın kodlamadır ve geçişlerinizi okuyacak tarama sistemleri tarafından hangi kodlamanın kullanlı olduğunu kontrol edin.

İlgi (Kilit Ekranı)

Kilit ekranında geçişin görüntülenebilir olması için iki tür veri vardır:

Konum

Bir geçişte 10 ' a kadar konum belirtilebilir, örneğin bir müşterinin sıkça ziyaret ettiği mağaza veya bir sinema veya Havaalanı konumu. Bir müşteri bu konumları bir yardımcı uygulama aracılığıyla ayarlayabilir veya sağlayıcı bunları kullanım verilerinden belirleyebilir (müşterinin izniyle toplanırsa).

Geçiş, kilit ekranında görüntülendiğinde, Kullanıcı alandan ayrılsa da kilit ekranından bir çit hesaplanacaktır. Yarıçap, kötüye kullanımı engellemek için geçiş stiline bağlıdır.

Tarih ve Saat

Pass içinde yalnızca bir tarih/saat belirtilebilir. Tarih ve saat, çıkarma geçişleri ve olay biletleri için kilit ekranı anımsatıcıları tetiklemeye yönelik yararlıdır.

, Ya da PassKit API aracılığıyla veya bir çoklu kullanım bileti (tiyatro veya spor Complex için bir mevsim bileti gibi) olması durumunda tarih/saat güncelleştirilebilmeleri için yapılandırılabilir.

Yerelleştirme

Bir geçişi birden çok dile çevirmek, bir iOS uygulamasını yerelleştirme ile benzerdir; uzantıya sahip dile özel dizinler oluşturun .lproj ve yerelleştirilmiş öğeleri içine yerleştirin. Metin çevirileri bir pass.strings dosyaya girilmelidir, ancak yerelleştirilmiş görüntüler, pass kökünde bulunan görüntüyle aynı ada sahip olmalıdır.

Güvenlik

Geçişler, iOS sağlama portalında oluşturduğunuz özel bir sertifikayla imzalanır. Geçişi imzalama adımları şunlardır:

  1. Pass dizinindeki her dosya için bir SHA1 karması hesaplayın ( manifest.json ya da signature Bu aşamada bu aşamada olması gereken değil).
  2. manifest.jsonKarma değeri olan her dosya ADıNıN JSON anahtar/değer listesi olarak yazın.
  3. manifest.jsonDosyayı imzalamak ve sonucu adlı bir dosyaya yazmak için sertifikayı kullanın signature .
  4. Her şeyi SıKıŞTıRARAK ve sonuç dosyasına bir .pkpass Dosya Uzantısı verin.

Özel anahtarınız geçişi imzalamak için gerekli olduğundan, bu işlem yalnızca denetlediğiniz güvenli bir sunucuda yapılmalıdır. Bir uygulamada geçişler denemek ve oluşturmak için anahtarlarınızı dağıtmayın.

Yapılandırma ve Kurulum

Bu bölüm, sağlama ayrıntılarınızı ayarlamaya ve ilk geçişinizi oluşturmaya yardımcı olmak için yönergeler içerir.

PassKit sağlama

Bir pass 'ın uygulama mağazasını girmesi için bir geliştirici hesabıyla bağlantılı olması gerekir. Bunun için iki adım gerekir:

  1. Pass-Pass Type ID adlı benzersiz bir tanımlayıcı kullanılarak kaydedilmelidir.
  2. Geçiş geliştiricinin dijital imzasıyla oturum açmak için geçerli bir sertifika oluşturulmalıdır.

Bir geçiş türü KIMLIĞI oluşturmak için aşağıdakileri yapın.

Geçiş türü KIMLIĞI oluşturma

İlk adım, desteklenecek her farklı geçiş türü Için bir GEÇIŞ türü kimliği ayarlamaya yöneliktir. Pass ID (veya Pass Type Identifier) Pass için benzersiz bir tanımlayıcı oluşturur. Bu KIMLIĞI, bir sertifika kullanarak, geliştirici hesabınızla geçişi bağlamak için kullanacağız.

  1. IOS sağlama portalının sertifikalar, tanımlayıcılar ve profiller bölümündetanımlayıcılar ' a gidin ve tür kimliklerini geçir ' i seçin. Sonra + Yeni bir geçiş türü oluşturmak için düğmeyi seçin: +

  2. Pass için bir Açıklama (ad) ve tanımlayıcı (benzersiz dize) sağlayın. Tüm geçiş türü kimliklerinin bu örnekteki dize ile başlaması gerektiğini unutmayın pass.pass.com.xamarin.coupon.banana : pass.

  3. Kaydet düğmesine basarak geçiş kimliğini onaylayın.

Sertifika oluşturma

Bu geçiş türü KIMLIĞI için yeni bir sertifika oluşturmak için aşağıdakileri yapın:

  1. Listeden yeni oluşturulan geçiş KIMLIĞINI seçin ve Düzenle ' ye tıklayın: LISTEDEN yeni geçiş kimliğini seçin

    Ardından, sertifika oluştur... öğesini seçin:

    Sertifika Oluştur ' u seçin

  2. Sertifika Imzalama Isteği (CSR) oluşturmak için adımları izleyin.

  3. Geliştirici portalındaki devam düğmesine basın ve sertifikanızı oluşturmak için CSR 'yi karşıya yükleyin.

  4. Sertifikayı indirin ve anahtarlığınıza yüklemek için çift tıklayın.

Bu geçiş türü KIMLIĞI için bir sertifika oluşturduğumuz, sonraki bölümde el ile nasıl bir geçiş oluşturulacağı açıklanmaktadır.

Cüzdan sağlama hakkında daha fazla bilgi için, yetenekler Ile çalışma kılavuzuna bakın.

El Ile geçiş Oluştur

Geçiş türünü oluşturduğumuz artık simülatör veya bir cihazda test etmek için el ile bir geçiş yapabilirsiniz. Pass oluşturma adımları şunlardır:

  • Geçiş dosyalarını içerecek bir dizin oluşturun.
  • Tüm gerekli verileri içeren Pass. JSON dosyası oluşturun.
  • Resimleri klasöre dahil et (gerekirse).
  • Klasördeki her dosya için SHA1 karmalarını hesaplayın ve manifest. JSON dosyasına yazın.
  • Manifest. json dosyasını indirilen Certificate. p12 dosyasıyla imzalayın.
  • Dizinin içeriğini ZIP ve. PKPASS uzantısıyla yeniden adlandırma.

Bu makalenin bir pass oluşturmak için kullanılabilecek örnek kodda bazı kaynak dosyaları vardır. CouponBanana.rawCreateapassmanuel dizininin dizinindeki dosyaları kullanın. Aşağıdaki dosyalar mevcuttur:

Bu dosyalar var

Pass. JSON açın ve JSON 'ı düzenleyin. passTypeIdentifierteamIdentifer Apple geliştirici hesabınızla eşleşmesi için en azından ' i güncelleştirmeniz gerekir.

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

Daha sonra her dosya için karmaları hesaplamanız ve dosyayı oluşturmanız gerekir manifest.json . İşiniz bittiğinde aşağıdakine benzer şekilde görünür:

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

Bu geçiş türü KIMLIĞI için oluşturulan sertifika (. P12 dosyası) kullanılarak bu dosya için bir imzanın oluşturulması gerekir.

Mac üzerinde oturum açma

, Apple İndirmeleri sitesinden cüzdan tohum destek malzemelerini indirin. signpassKlasörünüzü bir pass (Bu, SHA1 karmalarını ve ZIP olarak bir. PKPASS dosyası olarak da hesaplar) açmak için kullanın.

Test Etme

Bu araçların çıkışını incelemektir (dosya adını .zip olarak ayarlayıp sonra açarak), aşağıdaki dosyaları görürsünüz (ve dosyalarının eklenmesini aklınızda bulabilirsiniz manifest.jsonsignature ):

Bu araçların çıktısı inceleniyor

Oturum açtıktan sonra dosyayı yeniden adlandırdıktan sonra (örn. ' ye BananaCoupon.pkpass ), test etmek için simülatör 'a sürükleyebilir veya gerçek bir cihaza almak için kendinize e-posta ile gönderebilirsiniz. Geçişi eklemek için aşağıdaki gibi bir ekran görmeniz gerekir:

Geçiş ekranını ekleme

Normalde bu işlem bir sunucuda otomatikleştirilebilir, ancak el ile geçiş oluşturma, yalnızca bir arka uç sunucusunun desteğini gerektirmeyen Kuponlar oluşturan küçük işletmeler için bir seçenek olabilir.

Cüzdan

Cüzdan, PassKit ekosisteminin merkezi parçasıdır. Bu ekran görüntüsünde boş cüzdan ve pass listesinin ve bireysel geçişlerinin görünümü gösterilmektedir:

Bu ekran görüntüsünde boş cüzdan ve pass listesinin ve bireysel geçişlerinin nasıl görünediğinin gösterilmektedir

Cüzdan özellikleri şunlardır:

  • Bu, geçen tek yerdir ve bu, tarama için barkodlarına göre işlenir.
  • Kullanıcı güncelleştirme ayarlarını değiştirebilir. Etkinleştirilirse, anında iletme bildirimleri Pass içindeki verilere yönelik güncelleştirmeleri tetikleyebilirsiniz.
  • Kullanıcı kilit ekranı tümleştirmesini etkinleştirebilir veya devre dışı bırakabilir. Etkinleştirilirse bu, pass geçişine gömülü ilgili zaman ve konum verilerine göre otomatik olarak kilit ekranında görünmesini sağlar.
  • Pass JSON öğesinde bir Web-Server-URL 'SI sağlanırsa, pass 'ın ters tarafı yenilemeyi destekler.
  • Geçiş JSON 'da uygulamanın KIMLIĞI sağlanırsa, yardımcı uygulamalar açılabilir (veya indirilebilir).
  • Geçişler silinebilir (bir şirin shredding animasyonuyla).

Cüzdan 'e geçiş ekleme

Geçişler, aşağıdaki yollarla cüzdan 'e eklenebilir:

  • Iletken BT uygulamaları – bu geçişleri doğrudan geçirmez, doğrudan geçiş dosyaları yükler ve kullanıcıya onları cüzdan 'e ekleme seçeneği sunar.

  • Yardımcı uygulamalar : Bunlar, bu sağlayıcılar, geçişleri dağıtmak ve bunlara gözatmaya veya bunları düzenlemek için ek işlevler sunmak üzere sağlayıcılar tarafından yazılmıştır. Xamarin. iOS uygulamalarının geçişleri oluşturmak ve işlemek için PassKit API 'sine tamamen erişimi vardır. Geçiş daha sonra kullanılarak cüzdan 'ye eklenebilir PKAddPassesViewController . Bu işlem, bu belgenin yardımcı uygulamalar bölümünde daha ayrıntılı olarak açıklanmıştır.

İletken BT uygulamaları

İletken BT uygulamaları, bir kullanıcı adına geçiş alabilen ara uygulamalardır ve içerik türlerini tanımak ve cüzdan 'e eklenecek işlevselliği sağlamak için programlanmalıdır. İletken BT uygulamalarına örnek olarak şunlar verilebilir:

  • Mail : eki bir pass olarak tanır.
  • Safari : Pass URL 'si bağlantısı tıklandığında içerik geçişi-türünü tanır.
  • Diğer özel uygulamalar : ekleri veya açık bağlantıları (sosyal medya istemcileri, posta okuyucuları vb.) alan herhangi bir uygulama.

Bu ekran görüntüsünde, iOS 6 ' daki postanın bir geçiş ekini nasıl tanıdığını ve (dokunulduğunda) cüzdan 'ye ne zaman ekleneceğini gösterir.

Bu ekran görüntüsünde, iOS 6 ' daki postanın bir geçiş ekini nasıl algıladığı gösterilmektedir

Bu ekran görüntüsünde, postanın cüzdan 'ye bir pass eki ekleme tekliflerinin nasıl yapılacağı gösterilmektedir

Geçiş için bir iletken olabilecek bir uygulama oluşturuyorsanız, şu şekilde tanınabilir:

  • Dosya Uzantısı -. PKPASS
  • MIME türü -application/vnd. Apple. PKPASS
  • UTİ – com. Apple. PKPASS

Bir iletken BT uygulamasının temel işlemi, geçiş dosyasını almak ve PKAddPassesViewController kullanıcıya Pass 'Yi Wallet 'a ekleme seçeneğini sunmak Için PassKit 'i çağırmalıdır. Bu görünüm denetleyicisinin uygulanması, yardımcı uygulamalarınsonraki bölümünde ele alınmıştır.

İletken BT uygulamalarının, yardımcı uygulamaların yaptığı şekilde belirli bir geçiş türü KIMLIĞI için sağlanması gerekmez.

Yardımcı uygulamalar

Yardımcı uygulama, pass oluşturma, Pass ile ilişkili bilgi güncelleştirme ve uygulamayla ilişkili geçişleri yönetme dahil olmak üzere geçişlerle çalışmaya yönelik ek işlevler sağlar.

Yardımcı uygulamalar cüzdan özelliklerini yinelemeyi denememelidir. Tarama için geçişleri görüntüleme amacını taşımaktadır.

Bu bölümün geri kalanında, PassKit ile etkileşim kuran temel bir yardımcı uygulamanın nasıl oluşturulacağı açıklanmaktadır.

Sağlama

Cüzdan bir mağaza teknolojisi olduğundan, uygulamanın ayrı olarak sağlanması ve ekip sağlama profili ya da joker uygulama KIMLIĞI kullanmaması gerekir. Cüzdan uygulaması için benzersiz bir uygulama KIMLIĞI ve sağlama profili oluşturmak üzere yetenekler Ile çalışma kılavuzuna bakın.

Yetkilendirmeler

Yetkilendirmeler. plist dosyası tüm son Xamarin. iOS projesine eklenmelidir. Yeni bir yetkilendirmeler. plist dosyası eklemek için Yetkilendirmelerle çalışma Kılavuzu ' nda bulunan adımları izleyin.

Yetkilendirmeleri ayarlamak için şunları yapın:

Yetkilendirmeler. plist düzenleyicisini açmak için Çözüm Bölmesi yetkilendirmeler. plist dosyasına çift tıklayın:

Yetkilendirmeler. plst Düzenleyicisi

Cüzdan bölümünde cüzdan 'Yi etkinleştir seçeneğini belirleyin

Cüzdan yetkilendirmesini etkinleştir

Varsayılan seçenek, uygulamanızın tüm geçiş türlerine izin vermek içindir. Ancak, uygulamanızı kısıtlamak ve yalnızca takım geçiş türleri alt kümesine izin vermek mümkündür. Bunu etkinleştirmek için ekip geçiş türlerinin Izin ver alt kümesini seçin ve izin vermek istediğiniz alt kümenin geçiş türü tanımlayıcısını girin.

Hata Ayıklama

uygulamanızı dağıtmaya yönelik sorunlarla karşılaşırsanız, doğru sağlama profilini kullandığınızı ve iPhone paket imzalama seçeneklerinde özel yetkilendirmeler dosyası olarak seçili olduğunu kontrol edin.

Dağıtım sırasında bu hatayla karşılaşırsanız:

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

sonra pass-type-identifiers yetkilendirmeler dizisi yanlış (veya pass-type-identifierseşleşmez). Geçiş türü kimliklerini ve takım KIMLIĞINIZIN doğru olduğunu doğrulayın.

Sınıflar

Aşağıdaki PassKit sınıfları, uygulamaların geçişe erişim için kullanılabilir:

  • PKPASS : Pass örneği.
  • Pkpasslibrary : cihazdaki geçişe erışmek için API sağlar.
  • Pkaddpassesviewcontroller : kullanıcının cüzdan içinde kaydedileceği bir pass göstermek için kullanılır.
  • Pkaddpassesviewcontrollerdelegate – Xamarin. iOS geliştiricileri

Örnek

Bu makale için örnek kodda passlibrary projesine bakın. Cüzdan Yardımcısı uygulamasında gerekli olacak aşağıdaki ortak işlevleri gösterir:

Cüzdan 'nin kullanılabilir olduğunu denetleyin

cüzdan iPad, uygulamalar passkit özelliklerine erişmeyi denemeden önce denetlemelidir.

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

Geçiş kitaplığı örneği oluşturma

PassKit kitaplığı tek değil, uygulamalar, PassKit API 'sine erişmek için oluşturmalı ve depolayacak ve örnek almalıdır.

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

Geçişler listesini al

Uygulamalar kitaplıktan geçiş listesi talep edebilir. Bu liste PassKit tarafından otomatik olarak filtrelenir, böylece yalnızca ekip KIMLIĞINIZLE oluşturulmuş ve Yetkilendirmelerinizin altında listelenen geçişleri görebilirsiniz.

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

Simülatör döndürülen geçiş listesini filtrelemez, bu nedenle bu yöntem her zaman gerçek cihazlarda test edilmelidir. Bu liste, bir UITableView içinde görüntülenebilir. Örnek uygulama , iki kupon eklendikten sonra şöyle görünür:

Örnek uygulama, iki kupon eklendikten sonra şöyle görünür

Geçişleri görüntüleme

Eşlik eden uygulamalar içinde geçişler işlemek için sınırlı bir bilgi kümesi vardır.

Örnek kod gibi geçiş listelerini göstermek için bu standart özellikler kümesinden seçim yapın.

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

Bu dize örnektebir uyarı olarak gösterilir:

Örnekteki kupon seçildi uyarısı

Ayrıca, LocalizedValueForFieldKey() tasarladığınız geçişlere ait alanlardan verileri almak için yöntemini de kullanabilirsiniz (hangi alanların mevcut olacağını bilmeniz gerekir). Örnek kod bunu göstermez.

Dosyadan geçiş yükleme

Bir Pass yalnızca kullanıcının izniyle cüzdan 'ye eklenebildiğinden, karar vermesine izin vermek için bir görünüm denetleyicisi sunulmalıdır. Bu kod örnekteki Ekle düğmesinde, uygulamaya eklenmiş bir önceden oluşturulmuş geçiş yüklemek için kullanılır (Bunu imzaladığınız bir ile değiştirmelisiniz):

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 ekleme ve iptal etme seçenekleriyle sunulur:

Ekleme ve Iptal etme seçenekleriyle sunulan Pass

Varolan bir geçişi değiştirme

Mevcut bir geçişi değiştirmek kullanıcının iznini gerektirmez, ancak geçiş zaten yoksa başarısız olur.

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

Geçiş düzenleniyor

PKPass değişebilir değildir, bu nedenle kodunuzda geçiş nesnelerini güncelleştiremezsiniz. Bir uygulamadaki verileri değiştirmek için, bir geçiş kaydını tutan ve uygulamanın indirebileceği güncelleştirilmiş değerlerle yeni bir geçiş dosyası üreten bir Web sunucusuna erişimi olması gerekir.

Geçiş dosyası oluşturma işlemi, özel ve güvenli tutulması gereken bir sertifikayla imzalanması gerektiğinden bir sunucuda yapılmalıdır.

Güncelleştirilmiş bir geçiş dosyası üretildikten sonra, Replace cihazdaki eski verilerin üzerine yazmak için yöntemini kullanın.

Tarama için bir geçiş görüntüle

Daha önce belirtildiği gibi, yalnızca cüzdan tarama için bir geçiş görüntüleyebilir. Bir pass OpenUrl yöntemi gösterildiği gibi kullanılarak gösterilebilir:

UIApplication.SharedApplication.OpenUrl (p.PassUrl);

Değişikliklerin bildirimlerini alma

Uygulamalar, ile geçiş kitaplığı üzerinde yapılan değişiklikleri dinleyebilir PKPassLibraryDidChangeNotification . Değişiklikleri, arka planda güncelleştirmeleri tetikleyen bildirimlerin nedeni, bu nedenle uygulamanızda dinlemek iyi bir uygulamadır.

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

Ppasslibrary bir tekil olmadığından, bildirime kaydolurken bir kitaplık örneğinin iletilmesi önemlidir.

Sunucu Işleme

PassKit 'i desteklemek için bir sunucu uygulaması oluşturmaya ilişkin ayrıntılı bir tartışma, bu tanıtım makalesinin kapsamı dışındadır.

Bkz. DotNet-Passbook açık kaynak C# sunucu tarafı kodu.

Anında İletme Bildirimleri

Geçişleri güncelleştirmek için anında iletme bildirimleri kullanma hakkında ayrıntılı bir tartışma, bu giriş makalesinin kapsamı dışındadır.

Güncelleştirmeler gerektiğinde, Web isteklerini cüzdan 'ten yanıtlamak için Apple tarafından tanımlanan REST API 'yi uygulamanız gerekir.

Daha fazla bilgi için bkz. Apple 'ın geçiş kılavuzunu güncelleştirme Kılavuzu.

Özet

Bu makalede, yararlı olmasının ve tam bir PassKit çözümü için uygulanması gereken farklı parçalar açıklanmasının bazı nedenleri özetlenmiştir. Bu, Apple geliştirici hesabınızı geçiş oluşturmak üzere yapılandırmak için gereken adımları, el ile geçiş yapma işlemini ve bir Xamarin. iOS uygulamasından PassKit API 'Lerine nasıl erişilekullanacağınızı açıklamaktadır.