Avez-vous déjà eu besoin d'envoyer un client de votre application iOS vers l'App Store? Peut-être que vous vouliez qu'elle note votre application dans l'App Store ou que vous souhaitiez simplement promouvoir l'une de vos autres applications. Avant iOS 6, la seule option viable consistait à envoyer le client à l'application App Store. Dans iOS 6, cependant, Apple a introduit le SKStoreProductViewController
classe, qui permet à une application d'afficher un produit dans l'App Store sans quitter l'application. Dans ce petit conseil, je vais vous montrer comment cela fonctionne..
Comme son préfixe de classe l’indique, le SKStoreProductViewController
la classe est un membre du Kit de magasin cadre. En utilisant SKStoreProductViewController
est incroyablement facile. Avant de regarder un exemple d'application, il est utile de comprendre comment tout s'emboîte.
le SKStoreProductViewController
classe est une sous-classe de UIViewController
, ce qui signifie qu'il est facile à utiliser si vous connaissez bien les contrôleurs de vue. Chaque fois que vous souhaitez montrer un produit à un client dans l’App Store, vous (1) instanciez une instance du SKStoreProductViewController
class, (2) définir son délégué et (3) présenter le contrôleur de vue du produit du magasin au client. Le système d'exploitation s'occupe du reste. Gardez à l'esprit qu'une instance de SKStoreProductViewController
la classe ne peut être présentée que modalement.
le SKStoreProductViewControllerDelegate
Le protocole de délégué définit une seule méthode, productViewControllerDidFinish:
. Cette méthode est appelée lorsque le client quitte l'App Store, généralement en appuyant sur le bouton d'annulation en haut à gauche de la vue. En envoyant au délégué le message de productViewControllerDidFinish:
, le système d'exploitation redonne le contrôle à votre application. Laissez-moi vous montrer comment utiliser le SKStoreProductViewController
classe en créant un exemple d'application.
L'application que nous sommes sur le point de créer n'est pas très fonctionnelle, car elle ne comporte qu'un bouton, qui conduit l'utilisateur sur l'App Store et montre à l'utilisateur Drizzle, une application météo simple que j'ai publiée il y a quelques semaines. Cependant, il vous montre comment les différentes pièces s’emboîtent et comment utiliser le SKStoreProductViewController
classe dans vos projets.
Créez un nouveau projet dans Xcode en sélectionnant le Application à vue unique modèle de la liste des modèles (figure 1). Nommez votre application Magasin d'applications, entrez un identifiant d'entreprise, définissez iPhone pour la famille d'appareils, et vérifiez Utiliser le comptage automatique des références. Le reste des cases à cocher peut ne pas être coché pour ce projet (figure 2). Indiquez à Xcode où vous souhaitez enregistrer le projet et appuyez sur le bouton Créer bouton.
Parce que le SKStoreProductViewController
class fait partie du framework Store Kit, nous devons associer notre projet au framework Store Kit. Sélectionnez le projet dans le Navigateur de projet et choisissez la cible dans la liste des cibles. Au sommet, choisissez le Phases de construction onglet et ouvrez le Lien binaire avec des bibliothèques tiroir. Cliquez sur le bouton avec le signe plus et choisissez StoreKit.framework forme la liste qui apparaît (figure 3). Vous avez maintenant lié votre projet au cadre Store Kit..
Pour utiliser le cadre Store Kit dans le MTViewController
classe, nous devons importer les fichiers d’en-tête du framework. Ouvrir MTViewController.h et ajoutez la déclaration d'importation suivante en haut.
#importation
SKStoreProductViewController
ClasseDans le contrôleur de vue viewDidLoad
méthode, créez un nouveau bouton comme indiqué dans l'extrait de code ci-dessous. Le bouton est de type UIButtonTypeRoundedRect
et nous le positionnons au centre de la vue du contrôleur de vue. Nous lui donnons également un titre descriptif et ajoutons une paire cible-action à la UIControlEventTouchUpInside
un événement. Cela signifie que chaque fois que l'utilisateur appuie sur le bouton, le contrôleur de vue reçoit un message de openAppStore:
. C'est la méthode où la magie opère.
- (void) viewDidLoad [super viewDidLoad]; // Bouton d'initialisation UIButton * button = [UIButton buttonWithType: UIButtonTypeRoundedRect]; [button setTitle: @ "Accéder à l'App Store" pourState: UIControlStateNormal]; [bouton setFrame: CGRectMake (0.0, 0.0, 200.0, 44.0)]; [bouton setCenter: self.view.center]; [auto.view addSubview: bouton]; // Ajouter une paire cible-action [button addTarget: autoaction: @selector (openAppStore :) forControlEvents: UIControlEventTouchUpInside];
dans le openAppStore:
méthode, nous initialisons une instance du SKStoreProductViewController
classe, définissez le délégué sur soi
, et lui envoyer un message de loadProductWithParameters: completionBlock:
. le loadProductWithParameters: completionBlock:
accepte deux arguments, (1) un dictionnaire avec une clé spécifiant l'identifiant d'application de l'application que nous voulons montrer à l'utilisateur et (2) un bloc d'achèvement. Le bloc d'achèvement est exécuté lorsque la demande auprès de l'App Store est terminée. Dans le bloc d'achèvement, nous vérifions si aucune erreur n'a été générée et présentons le contrôleur de vue du produit du magasin à l'utilisateur. N'oubliez pas que même si l'utilisateur ne quitte pas votre application, le système d'exploitation se connecte à l'App Store sous le capot. Il est également important de noter que la demande auprès de l'App Store peut prendre un temps non négligeable. En d'autres termes, il est recommandé d'afficher un indicateur d'activité à l'utilisateur tant que la demande n'a pas renvoyé de réponse. Le bloc d'achèvement nous permettra de supprimer l'indicateur d'activité une fois la demande terminée, avec succès ou non..
- (void) openAppStore: (id) expéditeur // Initialise le contrôleur de vue du produit SKStoreProductViewController * storeProductViewController = [[SKStoreProductViewController alloc] init]; // Configurer View Controller [storeProductViewController setDelegate: self]; [storeProductViewController loadProductWithParameters: @ SKStoreProductParameterITunesItemIdentifier: @ "594467299" completionBlock: ^ (résultat BOOL, erreur NSError *) if (error) NSLog (@ "error% @ avec User Info% @.", error, [error error] ]); else // Contrôleur d'affichage de produit Store Store [self presentViewController: storeProductViewController animated: YES achèvement: nil]; ];
Vous pouvez trouver l'identifiant unique d'une application dans iTunes Connect. Chaque application de l'App Store se voit attribuer un identifiant unique ou identifiant Apple. Notez que vous devez transmettre l'ID Apple dans le dictionnaire de paramètres sous forme de chaîne..
Avant de construire et d’exécuter l’application, nous devons respecter les MTViewController
classe à la SKStoreProductViewControllerDelegate
protocole en mettant en œuvre le productViewControllerDidFinish:
méthode. Nous commençons par mettre à jour le fichier d’interface du contrôleur de vue en disant au compilateur que le MTViewController
classe conforme à la SKStoreProductViewControllerDelegate
protocole (voir ci-dessous).
#importation#importation @interface MTViewController: UIViewController @fin
Dans le fichier d'implémentation du contrôleur de vue, implémentez le productViewControllerDidFinish:
méthode comme indiqué ci-dessous. Rappelez-vous que le contrôleur de vue du produit du magasin est présenté sous forme modale lorsque nous appelons le loadProductWithParameters: completionBlock:
méthode. Il est de notre responsabilité de fermer le contrôleur de vue du produit du magasin lorsque le client décide de quitter l'App Store..
- (void) productViewControllerDidFinish: (SKStoreProductViewController *) viewController [auto licenciéViewControllerAnimated: YES complétion: nil];
Générez et exécutez l'application pour l'essayer. Même si Apple annonce la SKStoreProductViewController
En tant que moyen de montrer d'autres applications à vos utilisateurs, c'est également un moyen idéal de donner aux utilisateurs la possibilité d'évaluer ou de réviser une application dans l'App Store sans avoir à quitter votre application..
le SKStoreProductViewController
class est un ajout bienvenu au framework Store Kit et j'ai déjà profité de ce nouvel ajout dans certaines de mes applications. J'espère que je vous ai convaincu de son utilité avec ce conseil rapide.