Hai mai avuto la necessità di inviare un cliente dalla tua applicazione iOS all'App Store? Forse volevi che valutasse la tua applicazione nell'App Store o volevi solo promuovere una delle tue altre app. Prima di iOS 6, l'unica opzione praticabile era quella di inviare il cliente all'applicazione App Store. In iOS 6, tuttavia, Apple ha introdotto il SKStoreProductViewController
classe, che consente a un'applicazione di mostrare un prodotto nell'App Store senza uscire dall'applicazione. In questo suggerimento veloce, ti mostrerò come funziona.
Come indica il prefisso della classe, il SKStoreProductViewController
la classe è un membro del Negozio Kit struttura. utilizzando SKStoreProductViewController
è incredibilmente facile. Prima di dare un'occhiata a un'applicazione di esempio, è utile capire come tutto combacia.
Il SKStoreProductViewController
la classe è una sottoclasse di UIViewController
, il che significa che è facile da usare se si ha familiarità con i controller di visualizzazione. Ogni volta che si desidera mostrare ad un cliente un prodotto nell'App Store, si (1) si istanzia un'istanza di SKStoreProductViewController
classe, (2) impostare il proprio delegato e (3) presentare il controller della vista prodotto del negozio al cliente. Il sistema operativo si prende cura del resto. Tieni presente che un'istanza di SKStoreProductViewController
la classe può essere presentata solo modalmente.
Il SKStoreProductViewControllerDelegate
il protocollo delegato definisce un singolo metodo, productViewControllerDidFinish:
. Questo metodo viene chiamato quando il cliente lascia l'App Store, in genere toccando il pulsante Annulla nella parte superiore sinistra della vista. Inviando al delegato il messaggio di productViewControllerDidFinish:
, il sistema operativo restituisce il controllo alla tua applicazione. Lascia che ti mostri come usare il SKStoreProductViewController
classe creando un'applicazione di esempio.
L'applicazione che stiamo per costruire non è molto funzionale in quanto ha un solo pulsante, che porta l'utente all'App Store e mostra all'utente Drizzle, una semplice applicazione meteo che ho rilasciato poche settimane fa. Tuttavia, ti mostra come i diversi pezzi si incastrano e come usare il SKStoreProductViewController
classe nei tuoi progetti.
Crea un nuovo progetto in Xcode selezionando il Applicazione vista singola modello dall'elenco di modelli (figura 1). Dai un nome alla tua domanda App Store, inserire un identificativo aziendale, impostare i phone per la famiglia di dispositivi e controllare Utilizzare il conteggio di riferimento automatico. Il resto delle caselle di controllo può essere lasciato deselezionato per questo progetto (figura 2). Dillo a Xcode dove vuoi salvare il progetto e premi il Creare pulsante.
Perché il SKStoreProductViewController
la classe fa parte del framework Store Kit, dobbiamo collegare il nostro progetto al framework Store Kit. Seleziona il progetto nel Project Navigator e scegli il bersaglio nella lista dei bersagli. In alto, scegli il Costruisci fasi scheda e apri il Collega binario con le librerie cassetto. Fare clic sul pulsante con il segno più e scegliere StoreKit.framework forma la lista che appare (figura 3). Ora hai collegato correttamente il tuo progetto al framework Store Kit.
Per utilizzare il framework Store Kit nel MTViewController
classe, abbiamo bisogno di importare i file di intestazione del framework. Aperto MTViewController.h e aggiungi la seguente dichiarazione di importazione in alto.
#importare
SKStoreProductViewController
ClasseNel controller della vista viewDidLoad
metodo, crea un nuovo pulsante come mostrato nello snippet seguente. Il pulsante è di tipo UIButtonTypeRoundedRect
e lo posizioniamo al centro della vista del controller della vista. Diamo anche un titolo descrittivo e aggiungiamo una coppia azione-bersaglio al UIControlEventTouchUpInside
evento. Ciò significa che ogni volta che l'utente tocca il pulsante, il controller di visualizzazione riceve un messaggio di openAppStore:
. Questo è il metodo in cui avviene la magia.
- (void) viewDidLoad [super viewDidLoad]; // Pulsante Inizializza Pulsante UIButton * = [Pulsante UIButtonWithType: UIButtonTypeRoundedRect]; [button setTitle: @ "Vai a App Store" forState: UIControlStateNormal]; [pulsante setFrame: CGRectMake (0.0, 0.0, 200.0, 44.0)]; [pulsante setCenter: self.view.center]; [self.view addSubview: button]; // Aggiungi coppia-azione di destinazione [pulsante addTarget: self action: @selector (openAppStore :) forControlEvents: UIControlEventTouchUpInside];
Nel openAppStore:
metodo, inizializziamo un'istanza di SKStoreProductViewController
classe, impostare il delegato a se stesso
, e invialo un messaggio di loadProductWithParameters: completionBlock:
. Il loadProductWithParameters: completionBlock:
accetta due argomenti, (1) un dizionario con una chiave che specifica l'identificativo dell'applicazione dell'applicazione che vogliamo mostrare all'utente e (2) un blocco di completamento. Il blocco di completamento viene eseguito quando la richiesta per l'App Store è terminata. Nel blocco di completamento, verifichiamo se non sono stati generati errori e presentiamo il controller di visualizzazione del prodotto del negozio all'utente. Tieni presente che anche se l'utente non lascia la tua applicazione, il sistema operativo si connette all'App Store sotto il cofano. È anche importante notare che la richiesta ad App Store può richiedere una quantità di tempo non trascurabile. In altre parole, è buona norma mostrare un indicatore di attività all'utente fintanto che la richiesta non ha restituito una risposta. Il blocco di completamento ci permetterà di eliminare l'indicatore di attività una volta che la richiesta è stata completata, con successo o senza successo.
- (void) openAppStore: (id) sender // Initialize Product View Controller SKStoreProductViewController * storeProductViewController = [[SKStoreProductViewController alloc] init]; // Configura View Controller [storeProductViewController setDelegate: self]; [storeProductViewController loadProductWithParameters: @ SKStoreProductParameterITunesItemIdentifier: @ "594467299" completionBlock: ^ (risultato BOOL, errore NSError * if (errore) NSLog (@ "Errore% @ con Info utente% @.", errore, [errore userInfo ]); else // Present Store Product View Controller [autopresentViewController: storeProductViewController animato: SÌ completamento: nil]; ];
Puoi trovare l'identificativo univoco di un'applicazione in iTunes Connect. Ad ogni applicazione nell'App Store viene assegnato un identificativo univoco o ID Apple. Si noti che è necessario passare l'ID Apple nel dizionario dei parametri sotto forma di stringa.
Prima di costruire e gestire l'applicazione, dobbiamo conformare il MTViewController
classe al SKStoreProductViewControllerDelegate
protocollo implementando il productViewControllerDidFinish:
metodo. Iniziamo aggiornando il file dell'interfaccia del controller di visualizzazione dicendo al compilatore che il file MTViewController
classe conforme al SKStoreProductViewControllerDelegate
protocollo (vedi sotto).
#importare#importare @interface MTViewController: UIViewController @fine
Nel file di implementazione del controller della vista, implementare il file productViewControllerDidFinish:
metodo come mostrato di seguito. Ricordare che il controller di visualizzazione del prodotto del negozio viene presentato in modo modale quando invochiamo il loadProductWithParameters: completionBlock:
metodo. È nostra responsabilità licenziare il controller di visualizzazione del prodotto del negozio quando il cliente decide di lasciare l'App Store.
- (void) productViewControllerDidFinish: (SKStoreProductViewController *) viewController [self dismissViewControllerAnimated: YES completion: nil];
Costruisci ed esegui l'applicazione per provarlo. Anche se Apple pubblicizza il SKStoreProductViewController
class come un modo per mostrare altre app ai tuoi utenti, è anche un modo ideale per dare agli utenti la possibilità di valutare o recensire un'applicazione nell'App Store senza il fastidio di lasciare l'applicazione.
Il SKStoreProductViewController
la classe è una gradita aggiunta al framework Store Kit e ho già approfittato di questa nuova aggiunta in alcune delle mie applicazioni. Spero di averti convinto della sua utilità con questo suggerimento rapido.