-
Découvrez les ressources d’arrière-plan hébergées par Apple
En s'appuyant sur les ressources d'arrière-plan, cette session présentera la nouvelle possibilité de télécharger des packs de contenu pour les jeux et autres applications. Découvrez comment Apple peut héberger ces packs de ressources pour vous ou comment gérer les options d'auto-hébergement. Nous nous pencherons sur l'intégration de l'API native et les implémentations correspondantes de l'App Store, en vous fournissant les outils nécessaires pour améliorer la diffusion de contenu et l'expérience utilisateur de votre app.
Chapitres
- 0:00 - Introduction
- 1:01 - Nouveautés de Background Assets
- 7:32 - Développement d’exemples d’app
- 17:24 - Bêta-test et distribution
Ressources
Vidéos connexes
WWDC25
- Automatisez votre processus de développement avec l’API App Store Connect
- Nouveautés dans App Store Connect
WWDC23
-
Rechercher dans cette vidéo…
-
-
8:26 - Fill out the manifest
{ "assetPackID": "[Asset-Pack ID]", "downloadPolicy": { "essential": { // Possible keys: “essential”, “prefetch”, or “onDemand” // Essential and prefetch download policies require a list of installation event types. For an on-demand download policy, the value for the “onDemand” key must be an empty object. "installationEventTypes": [ // Remove undesired elements from this array. "firstInstallation", "subsequentUpdate" ] } }, "fileSelectors": [ // You can add as many file and/or directory selectors as you want. { "file": "[Path to File]" }, { "directory": "[Path to Directory]" } ], "platforms": [ // Remove undesired elements from this array. "iOS", "macOS", "tvOS", "visionOS" ] } -
10:44 - Add a downloader extension
import BackgroundAssets import ExtensionFoundation import StoreKit @main struct DownloaderExtension: StoreDownloaderExtension { func shouldDownload(_ assetPack: AssetPack) -> Bool { return true } } -
11:39 - Download an asset pack
let assetPack = try await AssetPackManager.shared.assetPack(withID: "Tutorial") // Await status updates for progress information let statusUpdates = AssetPackManager.shared.statusUpdates(forAssetPackWithID: "Tutorial") Task { for await statusUpdate in statusUpdates { // … } } // Download the asset pack try await AssetPackManager.shared.ensureLocalAvailability(of: assetPack) -
12:22 - Receive download status updates in Objective-C
#import <BackgroundAssets/BackgroundAssets.h> @interface ManagedAssetPackDownloadDelegate : NSObject <BAManagedAssetPackDownloadDelegate> @end @implementation ManagedAssetPackDownloadDelegate - (void)downloadOfAssetPackBegan:(BAAssetPack *)assetPack { /* … */ } - (void)downloadOfAssetPackPaused:(BAAssetPack *)assetPack { /* … */ } - (void)downloadOfAssetPackFinished:(BAAssetPack *)assetPack { /* … */ } - (void)downloadOfAssetPack:(BAAssetPack *)assetPack hasProgress:(NSProgress *)progress { /* … */ } - (void)downloadOfAssetPack:(BAAssetPack *)assetPack failedWithError:(NSError *)error { /* … */ } @end -
12:29 - Attach the delegate in Objective-C
static void attachDelegate(ManagedAssetPackDownloadDelegate *delegate) { [[BAAssetPackManager sharedManager] setDelegate:delegate]; } -
12:33 - Cancel an asset-pack download
let statusUpdates = AssetPackManager.shared.statusUpdates(forAssetPackWithID: "Tutorial") for await statusUpdate in statusUpdates { if case .downloading(_, let progress) = statusUpdate { progress.cancel() } } -
12:41 - Use an asset pack
// Read a file into memory let videoData = try AssetPackManager.shared.contents(at: "Videos/Introduction.m4v") // Open a file descriptor let videoDescriptor = try AssetPackManager.shared.descriptor(for: "Videos/Introduction.m4v") defer { do { try videoDescriptor.close() } catch { // … } } -
13:56 - Remove an asset pack
// Remove the asset pack try await AssetPackManager.shared.remove(assetPackWithID: "Tutorial") // Redownload the asset pack let assetPack = try await AssetPackManager.shared.assetPack(withID: "Tutorial") try await AssetPackManager.shared.ensureLocalAvailability(of: assetPack) -
14:53 - Info.plist
<key>BAAppGroupID</key> <string>group.com.naturelab.thecoast</string> <key>BAHasManagedAssetPacks</key> <true/> <key>BAUsesAppleHosting</key> <true/>
-
-
- 0:00 - Introduction
En savoir plus sur Background Assets ・・ une nouvelle manière de distribuer les ressources d’app sur l’App Store. Découvrez les dernières technologies de diffusion de ressources, les nouvelles API Swift et Objective-C, et apprenez à intégrer ces fonctionnalités dans iOS, iPadOS, macOS, tvOS et visionOS. L’hébergement des ressources par Apple, y compris la préparation des tests bêta et la distribution sur l’App Store, est également abordé.
- 1:01 - Nouveautés de Background Assets
Background Assets optimise l’expérience de lancement de l’app, car cette technologie permet de télécharger et de mettre à jour les ressources de l’app séparément de l’app principale. Cette approche permet d’utiliser l’app immédiatement, le téléchargement du contenu supplémentaire s’effectuant en arrière-plan. Il existe essentiellement trois stratégies de téléchargement des packs de ressources : Essentiel, Préchargement et À la demande. Vous pouvez héberger vos packs de ressources sur vos serveurs ou utiliser le nouveau service de ressources d’arrière-plan hébergées par Apple, qui offre 200 Go inclus dans votre abonnement au programme Apple Developer Program. Managed Background Assets remplace la technologie obsolète Ressources sur requête. Elle offre davantage de contrôle et de flexibilité, vous permettant ainsi d’optimiser les performances des apps et de renforcer l’engagement des utilisateurs et utilisatrices. Le système gère automatiquement les téléchargements, les mises à jour et la compression, ce qui facilite l’implémentation.
- 7:32 - Développement d’exemples d’app
Pour utiliser Managed Background Assets dans une app, vous devez créer des packs de ressources à l’aide d’un nouvel outil de packaging disponible pour macOS, Linux et Windows. Cet outil génère un fichier manifeste JSON dans lequel vous spécifierez l’ID du pack de ressources, la stratégie de téléchargement, les plateformes prises en charge et les fichiers à inclure à l’aide de sélecteurs de fichiers. Vous pouvez configurer la stratégie de téléchargement afin de garantir que les ressources essentielles sont disponibles localement avant le lancement de l’app, ce qui limitera les téléchargements aux premières installations. Une fois le fichier manifeste renseigné, l’outil de packaging génère une archive compressée. Pour intégrer le pack de ressources dans l’app, ajoutez une extension de téléchargement dans Xcode, qui planifie le téléchargement des packs de ressources en arrière-plan. Le système fournit une extension de téléchargement complète, qui prend en charge les téléchargements automatiques et les mises à jour. Accédez aux fichiers téléchargés dans l’app principale à l’aide d’AssetPackManager, en vous assurant de leur disponibilité locale et en attendant les mises à jour de statut si nécessaire, pour offrir une expérience utilisateur fluide avec une gestion optimisée des ressources. Pour utiliser le framework Background Assets, le protocole délégué doit être associé à la propriété de délégué du gestionnaire de packs de ressources partagées. Les mises à jour du statut de téléchargement fournissent des structures de progression qui offrent la possibilité d’annuler les téléchargements si nécessaire. Une fois qu’un pack de ressources est prêt à être utilisé localement, c’est-à-dire si la méthode ensureLocalAvailability(of:) ne retourne aucune erreur, les fichiers peuvent être lus à l’aide des méthodes contents(at:searchingInAssetPackWithID:options:) ou descriptor(for:searchingInAssetPackWithID:). Le système gère automatiquement les mises à jour et le stockage des packs de ressources, mais il est recommandé de supprimer manuellement ceux qui sont inutilisés, afin de libérer de l’espace. Pour permettre la coordination entre l’app principale et l’extension de téléchargement, vous devez les ajouter au même groupe d’apps et configurer des clés Info.plist spécifiques. À des fins de test, un serveur fictif est fourni, qui requiert un certificat SSL. Saisissez l’URL de base du serveur fictif dans Dérogations de développement sur les appareils de test. Une fois configurée, l’app télécharge les packs de ressources depuis le serveur fictif durant les tests.
- 17:24 - Bêta-test et distribution
Pour préparer une app en vue d’un test bêta sur TestFlight et d’une distribution sur l’App Store, vous devez charger le fichier binaire et les packs de ressources de l’app sur App Store Connect. Vous pouvez charger les packs de ressources via différentes méthodes, par exemple l’app Transporter pour macOS, qui offre une interface glisser-déposer, ou les API REST App Store Connect pour un contrôle et une automatisation complets. L’utilisation des API comprend trois principales étapes : création d’un enregistrement de pack de ressources, création d’un enregistrement de version et chargement de l’archive. Une fois le pack de ressources traité, vous pouvez le soumettre pour procéder à des tests internes ou externes dans TestFlight. Une fois les tests réussis, vous pouvez soumettre la version du pack de ressources au service Vérification des apps, en vue de sa distribution sur l’App Store. Vous pouvez surveiller la progression et le statut des chargements, des soumissions et des vérifications via App Store Connect ou les API.