Heb je ooit de behoefte gehad om een klant vanuit je iOS-applicatie naar de App Store te sturen? Misschien wilde je dat ze je app beoordeelt in de App Store of wil je gewoon een van je andere apps promoten. Vóór iOS 6 was de enige haalbare optie om de klant naar de App Store-applicatie te sturen. In iOS 6 introduceerde Apple het SKStoreProductViewController
klasse, waarmee een app een product in de App Store kan weergeven zonder de app te verlaten. In deze snelle tip zal ik je laten zien hoe dit werkt.
Zoals het klassenvoorvoegsel aangeeft, is de SKStoreProductViewController
klas is lid van de Winkel kit kader. Gebruik makend van SKStoreProductViewController
is ongelooflijk eenvoudig. Voordat we een voorbeeld van een toepassing bekijken, is het handig om te begrijpen hoe alles bij elkaar past.
De SKStoreProductViewController
class is een subklasse van UIViewController
, wat betekent dat het gemakkelijk te gebruiken is als u bekend bent met view controllers. Telkens wanneer u een klant een product in de App Store wilt laten zien, plaatst u (1) een instantie van de SKStoreProductViewController
klasse, (2) stel zijn gedelegeerde in, en (3) presenteer de controller voor productweergave van de winkel aan de klant. Het besturingssysteem zorgt voor de rest. Houd er rekening mee dat een instantie van de SKStoreProductViewController
klasse kan alleen modaal worden gepresenteerd.
De SKStoreProductViewControllerDelegate
delegate protocol definieert een enkele methode, productViewControllerDidFinish:
. Deze methode wordt aangeroepen wanneer de klant de App Store verlaat, meestal door op de knop Annuleren linksboven in de weergave te tikken. Door de afgevaardigde de boodschap te sturen van productViewControllerDidFinish:
, het besturingssysteem geeft de controle over uw toepassing. Laat me je laten zien hoe je de SKStoreProductViewController
klasse door een voorbeeldtoepassing te maken.
De applicatie die we gaan bouwen is niet erg functioneel omdat deze maar één knop heeft, die de gebruiker naar de App Store brengt en de gebruiker Drizzle toont, een eenvoudige weerapplicatie die ik een paar weken geleden uitbracht. Het laat u echter zien hoe de verschillende stukken bij elkaar passen en hoe u de SKStoreProductViewController
klasse in uw projecten.
Maak een nieuw project in Xcode door de. Te selecteren Toepassing enkele weergave sjabloon uit de lijst met sjablonen (figuur 1). Geef je sollicitatie een naam App Winkel, voer een bedrijfsidentificatie in, stel in iPhone voor de apparaatfamilie en vink aan Gebruik automatische referentietelling. De overige selectievakjes kunnen voor dit project niet worden aangevinkt (figuur 2). Vertel Xcode waar je het project wilt opslaan en klik op creëren knop.
Omdat het SKStoreProductViewController
klasse maakt deel uit van het Store Kit-framework, we moeten ons project koppelen aan het Store Kit-framework. Selecteer het project in de Project Navigator en kies het doel in de lijst met doelen. Kies bovenaan de Bouw fases tab en open de Binaire koppeling met bibliotheken lade. Klik op de knop met het plusteken en kies StoreKit.framework vormen de lijst die verschijnt (figuur 3). Je hebt nu je project succesvol gekoppeld aan het Store Kit-framework.
Het Store Kit-framework gebruiken in de MTViewController
klasse, moeten we de header-bestanden van het framework importeren. Open MTViewController.h en voeg de volgende importverklaring bovenaan toe.
#importeren
SKStoreProductViewController
KlasseIn de view controller's viewDidLoad
methode, maak een nieuwe knop zoals getoond in het onderstaande fragment. De knop is van het type UIButtonTypeRoundedRect
en we positioneren het in het midden van de weergave van de view controller. We geven het ook een beschrijvende titel en voegen een target-action-paar toe aan de UIControlEventTouchUpInside
evenement. Dit betekent dat wanneer de gebruiker op de knop tikt, de weergavecontroller een bericht ontvangt van openAppStore:
. Dit is de methode waarbij de magie gebeurt.
- (void) viewDidLoad [super viewDidLoad]; // Initialize-knop UIButton * -knop = [UIButton-knopWithType: UIButtonTypeRoundedRect]; [button setTitle: @ "Ga naar App Store" forState: UIControlStateNormal]; [knop setFrame: CGRectMake (0.0, 0.0, 200.0, 44.0)]; [knop setCenter: self.view.center]; [self.view addSubview: knop]; // Target-Action Pair toevoegen [button addTarget: self action: @selector (openAppStore :) forControlEvents: UIControlEventTouchUpInside];
In de openAppStore:
methode, initialiseren we een exemplaar van de SKStoreProductViewController
class, stel de gedelegeerde in op zelf
, en stuur het een bericht van loadProductWithParameters: completionBlock:
. De loadProductWithParameters: completionBlock:
accepteert twee argumenten, (1) een woordenboek met een sleutel die de applicatie-identifier specificeert van de applicatie die we aan de gebruiker willen tonen en (2) een completion-blok. Het voltooiingsblok wordt uitgevoerd wanneer het verzoek aan de App Store is voltooid. In het voltooiingsblok controleren we of er geen fout is gegenereerd en presenteren we de weergavecontroller van het winkelproduct aan de gebruiker. Houd er rekening mee dat, hoewel de gebruiker uw applicatie niet verlaat, het besturingssysteem wel verbinding maakt met de App Store onder de motorkap. Het is ook belangrijk op te merken dat het verzoek aan de App Store een niet-triviale hoeveelheid tijd kan vergen. Met andere woorden, het is een goede gewoonte om een activiteitsindicator voor de gebruiker weer te geven zolang het verzoek geen antwoord heeft geretourneerd. Met het voltooiingsblok kunnen we de activiteitsindicator negeren zodra het verzoek is voltooid, met succes of zonder succes.
- (void) openAppStore: (id) afzender // Initialize Product View Controller SKStoreProductViewController * storeProductViewController = [[SKStoreProductViewController alloc] init]; // Configureer View Controller [storeProductViewController setDelegate: self]; [storeProductViewController loadProductWithParameters: @ SKStoreProductParameterITunesItemIdentifier: @ "594467299" completionBlock: ^ (BOOL-resultaat, NSError * -fout) if (fout) NSLog (@ "Fout% @ met gebruikersinfo% @.", fout, [fout userInfo ]); else // Presenteer productweergavecontroller [self presentViewController: storeProductViewController geanimeerd: YES completion: nil]; ];
U kunt de unieke ID van een toepassing vinden in iTunes Connect. Elke toepassing in de App Store krijgt een unieke ID of Apple ID. Merk op dat u de Apple ID in het parameterwoordenboek als een string moet doorgeven.
Voordat we de applicatie bouwen en uitvoeren, moeten we ons conformeren aan de MTViewController
klasse voor de SKStoreProductViewControllerDelegate
protocol door het implementeren van de productViewControllerDidFinish:
methode. We beginnen met het updaten van het interfacebestand van de view controller door de compiler te vertellen dat het MTViewController
klas voldoet aan de SKStoreProductViewControllerDelegate
protocol (zie hieronder).
#importeren#importeren @interface MTViewController: UIViewController @einde
Implementeer in het implementatiebestand van de view-controller de productViewControllerDidFinish:
methode zoals hieronder getoond. Vergeet niet dat de viewer voor weergave van winkelproducten modaal wordt gepresenteerd wanneer we de loadProductWithParameters: completionBlock:
methode. Het is onze verantwoordelijkheid om de viewer voor weergave van winkelproducten te sluiten wanneer de klant besluit de App Store te verlaten.
- (void) productViewControllerDidFinish: (SKStoreProductViewController *) viewController [self dismissViewViewControllerAnimated: YES completion: nil];
Bouw en voer de applicatie uit om het uit te proberen. Ook al adverteert Apple het SKStoreProductViewController
klasse als een manier om andere apps aan uw gebruikers te laten zien, het is ook een ideale manier om gebruikers de kans te geven om een app in de App Store te beoordelen of beoordelen zonder het gedoe van het verlaten van uw applicatie.
De SKStoreProductViewController
klas is een welkome toevoeging aan het Store Kit-framework en ik heb al gebruik gemaakt van deze nieuwe toevoeging in sommige van mijn applicaties. Ik hoop dat ik je heb overtuigd van het nut ervan met deze snelle tip.