iOS 6 SDK App Store-producten weergeven in-app

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.


Winkel kit

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.


Stap 1: Het project opzetten

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.


Stap 2: Het Store Kit Framework toevoegen

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 

Stap 3: Gebruik van de SKStoreProductViewController Klasse

In 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]; 

Stap 4: bouwen en uitvoeren

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.


Conclusie

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.