iOS 9: une introduction à ReplayKit

introduction

ReplayKit est un nouveau framework qui a été introduit avec iOS 9. Il permet aux développeurs de jeux de donner aux joueurs la possibilité d’enregistrer et de partager facilement le gameplay. En plus de l’enregistrement et du partage, ReplayKit comprend également une interface utilisateur entièrement fonctionnelle que les joueurs peuvent utiliser pour éditer leurs clips vidéo.

Les enregistrements produits par ReplayKit sont de haute définition et sont créés avec une consommation d’énergie et une perte de performances minimales. Les fonctionnalités de ReplayKit sont disponibles sur tous les appareils dotés d’un système sur puce A7, A8 ou A9 (tous les appareils prenant en charge Metal), exécutant iOS 9 ou version ultérieure.

Conditions préalables

Ce didacticiel nécessite que vous exécutiez Xcode 7+ sur OS X Yosemite ou version ultérieure. Si vous souhaitez tester l’exemple de projet sur un appareil, vous avez également besoin d’un appareil prenant en charge ReplayKit. Vous devrez également télécharger le projet de démarrage depuis GitHub.

1. Lancer des enregistrements

L’enregistrement du jeu avec ReplayKit commence par le RPScreenRecorder classe et le sharedRecorder() disponible pour votre application. Cet enregistreur est chargé de vérifier la capacité de l’appareil à enregistrer, démarrer, arrêter et supprimer des enregistrements, ainsi que d’activer éventuellement le microphone de l’appareil pour permettre aux joueurs d’ajouter leur propre commentaire vocal en direct sur l’audio du jeu.

Ouvrez le projet de démarrage que vous avez téléchargé à partir de GitHub et allez à GameViewController.swift. En haut de ce fichier, ajoutez une instruction d’importation pour le framework ReplayKit.

Ensuite, implémentez le startRecording(_:) méthode dans le GameViewController classe. Cette méthode est appelée lorsque l’utilisateur appuie sur le Commencer l’enregistrement bouton.

Passons en revue cette méthode étape par étape. Nous accédons au RPScreenRecorder instance disponible pour notre application via le sharedRecorder() méthode et nous vérifions si l’enregistrement est disponible pour l’appareil.

Si l’enregistrement est disponible, nous commençons un enregistrement en appelant le startRecordingWithMicrophone(_:handler:) méthode sur l’objet enregistreur partagé. Les paramètres de cette méthode sont un booléen, indiquant si vous souhaitez ou non utiliser le microphone de l’appareil, et un gestionnaire d’achèvement. Le gestionnaire d’achèvement a accès à un objet d’erreur facultatif qui vous est renvoyé par le framework ReplayKit en cas de problème. Si le framework n’a pas généré d’erreur, nous ajustons la cible et l’apparence du bouton afin que l’utilisateur puisse arrêter l’enregistrement lorsqu’il est prêt.

Créez et exécutez votre application et essayez-la en appuyant sur le bouton vert. Vous verrez qu’un système de particules dans la scène génère des particules lorsque le bouton vert est enfoncé. Si vous touchez Commencer l’enregistrement, vous devriez voir l’alerte suivante:

Lancer l'alerte d'enregistrement

Notez que cette alerte apparaîtra chaque fois que vous démarrez l’enregistrement dans votre application. Une fois qu’un utilisateur a sélectionné l’une de ces options, cependant, sa préférence sera mémorisée et aucune de ces alertes ne s’affichera pendant les huit prochaines minutes.

Après avoir sélectionné l’une de ces options dans l’alerte, le Commencer l’enregistrement le bouton doit devenir rouge Arrête d’enregistrer bouton.

Bouton Arrêter l'enregistrement

2. Arrêt, suppression et édition d’enregistrements

Maintenant que notre application est capable de démarrer des enregistrements ReplayKit, il est temps d’apprendre à gérer ces enregistrements une fois terminé. Mettre en œuvre le stopRecording(_:) méthode dans le GameViewController classe.

Encore une fois, parcourons cette méthode étape par étape. Nous appelons le stopRecordingWithHandler(_:) méthode sur l’objet enregistreur partagé. Dans ce gestionnaire de complétion, nous vérifions si l’enregistrement s’est terminé avec succès en vérifiant si le previewController existe.

En relation :  Économisez de l'espace sur Android en déplaçant le contenu Netflix sur une carte SD

Nous créons un UIAlertController avec deux actions, une pour annuler l’enregistrement et une pour afficher l’enregistrement. Si l’utilisateur choisit de supprimer l’enregistrement, nous invoquons discardRecordingWithHandler(_:). Notez que cette méthode ne peut être appelée avec succès qu’une fois l’enregistrement terminé. Si vous appelez cette méthode pendant qu’un enregistrement est en cours, aucune erreur n’est générée, mais aucune donnée d’enregistrement n’est supprimée non plus.

Si l’utilisateur choisit de visionner l’enregistrement, nous présentons le previewController, une instance du RPPreviewController classe, remis par le stopRecordingWithHandler(_:) méthode par laquelle l’utilisateur peut prévisualiser, modifier et partager son enregistrement. Le contrôleur de prévisualisation est le seul objet qui a accès au fichier vidéo généré par ReplayKit et est responsable de la sauvegarde / du partage de cet enregistrement.

Enfin, nous remettons le bouton à son état d’origine afin qu’un autre enregistrement puisse être effectué si l’utilisateur le souhaite.

Créez et exécutez à nouveau votre application et démarrez un enregistrement. Une fois que vous appuyez sur le Arrête d’enregistrer bouton, vous devriez voir l’alerte suivante:

Alerte d'enregistrement arrêté

Si vous appuyez ensuite sur Vue option, le contrôleur de vue suivant est présenté.

Contrôleur de vue d'aperçu

À partir de cet écran, vous pouvez modifier votre vidéo et l’enregistrer sur la pellicule de votre appareil en appuyant sur le bouton sauver bouton. Vous pouvez également le partager en appuyant sur le bouton dans le coin inférieur gauche.

Notez qu’au moment de la rédaction de ce tutoriel, que ce soit par conception ou en raison d’un bogue dans le framework ReplayKit, il n’y a pas de confirmation une fois qu’un enregistrement a été enregistré sur la pellicule.

3. Exclusion des éléments d’interface

Vous avez peut-être remarqué que les boutons du haut et du bas sont également visibles dans les enregistrements réalisés par l’application. Ils sont inclus dans la vidéo finale. Lorsque ReplayKit enregistre votre application, il enregistre tout dans le fichier principal de votre application UIWindow exemple. Heureusement, ReplayKit exclut automatiquement toutes les notifications entrantes et les entrées de l’utilisateur d’être enregistrées.

Pour exclure des éléments de l’interface utilisateur de l’enregistrement, vous devez les placer dans leur propre UIWindow exemple. Voyons comment cela fonctionne. Ajouter une propriété, buttonWindow de type UIWindow!, à la GameViewController classe.

Ensuite, remplacez l’implémentation actuelle du addButtons(_:) méthode de la GameViewController classe avec l’implémentation suivante:

Dans addButtons(_:), nous créons un nouveau UIWindow objet, ajoutez-y les boutons et rendez-le visible. Notez que le HiddenStatusBarViewController class est une classe personnalisée que j’ai ajoutée au projet de démarrage. Cela garantit que la barre d’état reste cachée dans la nouvelle fenêtre.

Enfin, remplacer la mise en œuvre du stopRecording(:_) méthode avec l’implémentation suivante:

La seule différence est que nous faisons en sorte que le contrôleur de vue dans la nouvelle fenêtre supérieure gère toutes les présentations. Cela garantit que tout s’affiche correctement et que l’interface utilisateur peut être interagie avec.

Exécutez votre application une fois de plus et effectuez un nouvel enregistrement. Vous verrez que les boutons ne sont plus visibles dans la vidéo:

En relation :  Vous pouvez maintenant recevoir une alerte de précommande pour le Samsung Galaxy S21
Aucun bouton visible lors de l'enregistrement

4. Déléguer les protocoles

Bien qu’ils ne soient pas utilisés dans ce didacticiel, il existe deux protocoles et un total de quatre méthodes associés à ReplayKit. Voyons comment et quand vous devriez les utiliser.

le RPScreenRecorderDelegate protocole définit les méthodes suivantes:

  • screenRecorder(_:didStopRecordingWithError:previewViewController:): Cette méthode est appelée chaque fois qu’une erreur se produit pendant l’enregistrement. Si ReplayKit peut récupérer de cette erreur et terminer votre enregistrement, un contrôleur de vue d’aperçu vous sera également fourni, que vous pourrez présenter à votre utilisateur.
  • screenRecorderDidChangeAvailability(_:): Cette méthode est appelée chaque fois qu’un enregistrement devient disponible ou indisponible en raison d’une autre action. Cela peut se produire, par exemple, lorsque vous vous connectez ou vous déconnectez d’AirPlay.

le RPPreviewViewControllerDelegate protocole définit les méthodes suivantes:

  • previewViewControllerDidFinish(_:) est appelé dès que l’utilisateur quitte le RPPreviewViewController exemple.
  • previewViewController(_:didFinishWithActivityTypes:) est appelé en même temps que previewViewControllerDidFinish(_:), mais il fournit un supplément UIActivity paramètre.

Notez que si vous implémentez l’un des RPPreviewViewControllerDelegate méthodes, alors toi devenir responsable de la suppression du contrôleur de vue d’aperçu au moment opportun.

5. Notes IMPORTANTES

Pour terminer, je vais vous dire quelques points clés à garder à l’esprit lorsque vous travaillez avec ReplayKit.

  • Un seul enregistrement peut être stocké à la fois par application. Dès que vous démarrez un nouvel enregistrement, si un enregistrement précédent existe, il sera automatiquement supprimé et ne sera plus disponible.
  • Jeter les enregistrements dès que possible. Pour vous assurer que le stockage local d’un appareil ne reste pas rempli de données vidéo inutiles, supprimez les enregistrements dès que vous savez que l’utilisateur n’aura pas ou ne pourra pas accéder à leur enregistrement ultérieurement. Dans ce didacticiel, nous avons suivi cette bonne pratique en supprimant l’enregistrement dès que nous savions que l’utilisateur ne voulait pas le voir.
  • Afficher les indicateurs d’enregistrement. Comme nous l’avons fait dans ce tutoriel, montrer un indicateur d’enregistrement est essentiel à une bonne expérience utilisateur lors de l’utilisation de ReplayKit, en particulier lors de l’utilisation du microphone de l’appareil.
  • Sélectionnez avec soin les éléments de l’interface utilisateur à exclure des enregistrements. Lorsque vous choisissez les éléments d’interface à placer dans une fenêtre séparée, choisissez les éléments qui ne sont pas importants ou qui nuisent au gameplay lui-même. Cela inclut des éléments tels que les indicateurs d’enregistrement, les commandes virtuelles et les boutons de menu.
  • Vous n’avez pas d’accès direct au fichier vidéo final. Seul ReplayKit contient une référence aux enregistrements de votre application stockés et les rend visibles à l’utilisateur via le RPPreviewViewController. Pour des raisons de confidentialité, les enregistrements ReplayKit ne sont jamais directement accessibles par votre application. Si vous souhaitez télécharger l’enregistrement de jeu sur vos propres serveurs, par exemple, vous devrez créer une extension de partage qui apparaîtra dans la feuille de partage présentée par le contrôleur de vue d’aperçu.
  • ReplayKit prend en charge le contrôle parental. Même si votre application s’exécute sur un appareil compatible sans aucune autre application en arrière-plan, le démarrage d’un enregistrement peut toujours être empêché en raison du contrôle parental. Cela signifie que vous devez toujours vérifier si l’enregistrement vidéo est disponible.
  • Enfin, même si Apple a orienté ReplayKit vers les développeurs de jeux afin de permettre aux joueurs de partager leur gameplay, rien ne vous empêche d’utiliser ReplayKit dans une application classique. ReplayKit est disponible pour toutes les applications créées avec Xcode 7 et le SDK iOS 9. Si vous en avez une utilisation dans votre application, je vous encourage à utiliser ce formidable cadre.

Conclusion

Vous devriez maintenant être à l’aise avec le nouveau framework ReplayKit pour effectuer des enregistrements de l’écran de votre application, qui peuvent être modifiés et partagés par vos utilisateurs. Dans l’ensemble, ReplayKit est un framework très compact mais puissant qui permet aux développeurs de créer facilement des enregistrements dans leurs applications qui seront partagés par leurs utilisateurs.

Comme toujours, assurez-vous de laisser des commentaires ou des commentaires dans les commentaires ci-dessous.

Moyens Staff
Moyens I/O Staff vous a motivé, donner des conseils sur la technologie, le développement personnel, le style de vie et des stratégies qui vous aider.