-
Nouveautés de Cartes
Découvrez les tout derniers changements de design et outils de développement pour les cartes de l'app Cartes d'Apple. Sublimez vos cartes avec de magnifiques nouveaux styles pour des designs riches et éclatants. Découvrez de nouveaux formats de codes-barres et une API pour des actions de carte flexibles. Découvrez Pass Designer et Pass Builder, des outils puissants qui simplifient la conception, la personnalisation et la distribution de vos cartes à grande échelle.
Chapitres
- 0:01 - Introduction
- 0:40 - Poster Generic
- 2:36 - Codes-barres
- 4:27 - Actions mises en avant
- 5:46 - Outils de développement
- 5:47 - Pass Designer
- 10:40 - Pass Builder
- 13:50 - Personnalisation d’un modèle de pass
- 15:01 - Étapes suivantes
Ressources
- Pass Designer
- Creating a pass with Pass Designer
- Pass Builder
- Pass.Barcodes
- Learn more about Pass Designer
Vidéos connexes
WWDC25
WWDC24
-
Rechercher dans cette vidéo…
-
-
1:41 - Adopting Poster Generic
// Adopting Poster Generic "posterGeneric": { "headerFields": [ { "key": "memberID", "label": "Guest No.", "value": "102035" } ], "footerFields": [ { "key": "membershipType", "value": "Family Pass" } ] } -
2:11 - Adopting Poster Generic with Generic fallback
// Adopting Poster Generic and supporting Generic on iOS 26 and earlier "posterGeneric": { "headerFields": [ { "key": "memberID", "label": "Guest No.", "value": "102035" } ], "footerFields": [ { "key": "membershipType", "value": "Family Pass" } ] }, "generic": { "headerFields": [ { "key": "memberID", "label": "Guest No.", "value": "102035" } ], "footerFields": [ { "key": "membershipType", "value": "Family Pass" } ] } -
2:52 - Barcodes: Add new types for iOS 27
// Adopting new barcode types "barcodes": [ { "format": "PKBarcodeFormatCodabar" "message": "…" "messageEncoding": "…" } ] -
3:37 - Barcodes: Supporting iOS 26 and earlier
// Adopting new barcode types and supporting iOS 26 and earlier. "barcodes": [ { "format": "PKBarcodeFormatCodabar" "message": "123456789" "messageEncoding": "iso-8859-1" }, { "format": "PKBarcodeFormatQR" "message": "123456789" "messageEncoding": "iso-8859-1" } ] -
4:48 - Featured actions
// Featured actions "featuredActions": [ { "identifier": "my-offer-id", "type": "membershipBenefits", "url": "www.example.com/offers" } ] -
10:56 - Package.swift
// Package.swift import PackageDescription let package = Package( name: "MyServer", products: [ .library( name: "MyServer", targets: ["MyServer"] ), ], dependencies: [ .package(path: "./path/to/PassBuilder") ], targets: [ .target( name: "MyServer", dependencies: [ .product(name: "PassBuilder", package: "PassBuilder") ] ), … ] -
11:05 - CreatePass.swift
// CreatePass.swift import PassBuilder func createPass(for doggo: MemeberModel) async throws -> URL { var package = PassPackage(url: "template.pkpasstemplate") package.pass.fields.setValue(doggo.name, forKey: "DOG_NAME") package.pass.fields.setValue(doggo.favoriteToy, forKey: "LOVES") package.pass.fields.setValue(doggo.id, forKey: "MEMBER_ID") package.background = PassImage(url: doggo.photoURL) package.pass.barcodes = [ Pass.Barcode(message: doggo.id, format: .pdf417) ] package.featuredActions = [ Pass.Action(id: "action-1", type: "viewMembership", url: doggo.membershipURL) ] … } -
13:11 - CreatePass.swift
// CreatePass.swift import PassBuilder func createPass(for doggo: MemeberModel) async throws -> URL { var package = PassPackage(url: "template.pkpasstemplate") package.pass.fields.setValue(doggo.name, forKey: "DOG_NAME") package.pass.fields.setValue(doggo.favoriteToy, forKey: "LOVES") package.pass.fields.setValue(doggo.id, forKey: "MEMBER_ID") package.background = PassImage(url: doggo.photoURL) package.pass.barcodes = [ Pass.Barcode(message: doggo.id, format: .pdf417) ] package.featuredActions = [ Pass.Action(id: "action-1", type: "viewMembership", url: doggo.membershipURL) ] let passCertificate = try PassCertificate(url: "pass.p12", password: "s3cr3t") let wwdrCertificate = try PassCertificate(url: "wwdr.cer") let signer = PassSigner( passCertificate: passCertificate, wwdrCertifiate: wwdrCertificate ) let destinationURL = URL(string: "/www/passes/" + doggo.id) try signer.signPass(package, writingTo: destinationURL) return destinationURL }
-