Ați avut vreodată nevoie să trimiteți un client din aplicația dvs. iOS la App Store? Poate că ați vrut ca ea să vă evalueze aplicația în App Store sau pur și simplu ați vrut să promovați una dintre celelalte aplicații ale dvs. Înainte de iOS 6, singura opțiune viabilă era de a trimite clientul în aplicația App Store. În iOS 6, cu toate acestea, Apple a introdus SKStoreProductViewController
, care permite unei aplicații să afișeze un produs în App Store fără a părăsi aplicația. În acest sfat rapid, vă voi arăta cum funcționează acest lucru.
Așa cum indică prefixul de clasă, SKStoreProductViewController
clasa este un membru al Magazinul Kit cadru. Utilizarea SKStoreProductViewController
este incredibil de ușor. Înainte de a arunca o privire la o aplicație de exemplu, este util să înțelegeți cum se potrivește totul împreună.
SKStoreProductViewController
clasa este o subclasă de UIViewController
, ceea ce înseamnă că este ușor de utilizat dacă sunteți familiarizat cu controlorii de vizualizare. Ori de câte ori doriți să afișați un client unui produs în App Store, vă (1) instanțiați o instanță a SKStoreProductViewController
clasă, (2) să-și stabilească delegatul și (3) să prezinte controlerului de vizualizare a produsului magazinului clientului. Sistemul de operare are grijă de restul. Rețineți că o instanță a SKStoreProductViewController
clasa poate fi prezentată doar modal.
SKStoreProductViewControllerDelegate
delegat protocol definește o singură metodă, productViewControllerDidFinish:
. Această metodă este apelată atunci când clientul părăsește App Store, de obicei prin atingerea butonului de anulare din partea stângă sus a vederii. Prin trimiterea delegatului mesajul productViewControllerDidFinish:
, sistemul de operare oferă controlul aplicației dvs. Permiteți-mi să vă arăt cum să utilizați SKStoreProductViewController
clasa prin crearea unei aplicații de probă.
Aplicația pe care urmează să o construim nu este foarte funcțională, deoarece are doar un singur buton, care duce utilizatorul la App Store și arată utilizatorul Drizzle, o aplicație meteo simplă pe care am lansat-o acum câteva săptămâni. Cu toate acestea, vă arată cum se potrivesc diferitele piese împreună și cum se utilizează SKStoreProductViewController
clasă în proiectele dvs..
Creați un nou proiect în Xcode selectând Vizualizare individuală șablon din lista de șabloane (figura 1). Denumiți aplicația Magazin de aplicații, introduceți un identificator al companiei, setați iPhone pentru familia de dispozitive și verificați Utilizați numărarea automată a referințelor. Restul casetelor de selectare pot fi lăsate neschimbate pentru acest proiect (figura 2). Spuneți Xcode unde doriți să salvați proiectul și apăsați pe Crea buton.
Deoarece SKStoreProductViewController
clasa face parte din framework-ul Kit Store, trebuie să conectăm proiectul nostru la cadrul Store Kit. Selectați proiectul din Project Navigator și alegeți ținta din lista de obiective. În partea de sus, alegeți Construiți faze și deschideți fereastra Link binar cu biblioteci sertar. Faceți clic pe butonul cu semnul plus și alegeți StoreKit.framework din lista care apare (figura 3). Ați conectat acum proiectul dvs. cu succes la cadrul Store Kit.
Pentru a utiliza cadrul Kit Store în MTViewController
class, trebuie să importem fișierele antetului cadrului. Deschis MTViewController.h și adăugați următoarea declarație de import în partea de sus.
#import
SKStoreProductViewController
ClasăÎn controlerul de vizualizare viewDidLoad
, creați un nou buton așa cum se arată în fragmentul de mai jos. Butonul este de tip UIButtonTypeRoundedRect
și o poziționăm în centrul vizualizării controlerului de vedere. De asemenea, îi oferim un titlu descriptiv și adăugăm o pereche țintă-acțiune la UIControlEventTouchUpInside
eveniment. Aceasta înseamnă că ori de câte ori utilizatorul pune butonul, controlerul de vizualizare primește un mesaj de openAppStore:
. Aceasta este metoda în care se întâmplă magia.
- (vid) viewDidLoad [super viewDidLoad]; // Buton inițializare UIButton * buton = [buton UIButtonWithType: UIButtonTypeRoundedRect]; [buton setTitle: @ "Du-te la App Store" pentruState: UIControlStateNormal]; [butonul setFrame: CGRectMake (0.0, 0.0, 200.0, 44.0)]; [butonul setCenter: self.view.center]; [auto.view addSubview: buton]; // Adăugați Perechea țintă-acțiune [buton addTarget: acțiunea de sine: @selector (openAppStore :) forControlEvents: UIControlEventTouchUpInside];
În openAppStore:
, inițializăm o instanță a SKStoreProductViewController
clasa, setați delegatul la de sine
, și trimiteți-i un mesaj loadProductWithParameters: completionBlock:
. loadProductWithParameters: completionBlock:
acceptă două argumente, (1) un dicționar cu o cheie care specifică identificatorul aplicației aplicației pe care dorim să-l afișăm utilizatorului și (2) un bloc de completare. Blocul de completare este executat când cererea către App Store este terminată. În blocul de completare, verificăm dacă nu a fost aruncată nicio eroare și prezentăm utilizatorului dispozitivul de vizualizare a produsului magazinului. Rețineți că, deși utilizatorul nu vă părăsesc aplicația, sistemul de operare se conectează la App Store sub capotă. De asemenea, este important să rețineți că cererea către App Store poate dura o perioadă netrivială. Cu alte cuvinte, este o bună practică să afișați un indicator de activitate utilizatorului, atâta timp cât cererea nu a returnat un răspuns. Blocul de completare ne va permite să respingem indicatorul de activitate odată ce cererea a terminat, cu succes sau fără succes.
- (void) openAppStore: (id) expeditor // Inițializează controlerul de vizualizare a produsului SKStoreProductViewController * storeProductViewController = [[SKStoreProductViewController alloc] init]; // Configurează controlerul de vizualizare [storeProductViewController setDelegate: self]; [storeProductViewController loadProductWithParameters: @ SKStoreProductParameterITunesItemIdentifier: @ "594467299" completionBlock: ^ (rezultatul BOOL, eroarea NSError *) if (eroare) NSLog (eroare% error with user Info% ]); altfel // Present Store Product View Controller [auto prezentViewController: storeProductViewController animat: DA finalizare: nil]; ];
Puteți găsi identificatorul unic al unei aplicații în iTunes Connect. Fiecare aplicație din App Store are un identificator unic sau ID-ul Apple. Rețineți că trebuie să transmiteți ID-ul Apple în dicționarul parametrilor ca un șir.
Înainte de construirea și rularea aplicației, trebuie să ne conformăm MTViewController
clasa la SKStoreProductViewControllerDelegate
prin implementarea protocolului productViewControllerDidFinish:
metodă. Începem prin actualizarea fișierului de interfață al controlerului vizual, spunând compilatorului că MTViewController
clasa este conformă cu SKStoreProductViewControllerDelegate
protocol (vezi mai jos).
#import#import @ interfață MTViewController: UIViewController @Sfârșit
În fișierul de implementare a controlerului de vizualizare, implementați productViewControllerDidFinish:
așa cum se arată mai jos. Amintiți-vă că controlerul de vizualizare a produsului magazinului este prezentat modal când invocăm loadProductWithParameters: completionBlock:
metodă. Este responsabilitatea noastră să respingem controlerul de vizualizare a produselor magazinului atunci când clientul decide să părăsească App Store.
- (void) productViewControllerDidFinish: (SKStoreProductViewController *) viewController [self dismissViewControllerAnimated: YES finalizare: nil];
Construiți și rulați aplicația pentru ao încerca. Chiar dacă Apple face reclama SKStoreProductViewController
clasă ca o modalitate de a afișa alte aplicații utilizatorilor dvs., este, de asemenea, o modalitate ideală de a oferi utilizatorilor șansa de a evalua sau de a revizui o aplicație în App Store fără a avea probleme cu părăsirea aplicației.
SKStoreProductViewController
clasa este o completare binevenită a cadrului Kit Store și am profitat deja de această nouă adăugire în unele dintre aplicațiile mele. Sper că v-am convins de utilitatea sa cu acest sfat rapid.