2016-03-31 3 views
2

Ich habe eine einfache App mit einer nicht konsumierbaren In-App-Kaufoption.Wie kann überprüft werden, ob der Nutzer bereits einen In-App-Kauf getätigt hat? So ermitteln Sie ihre Zugriffsebene/Rechte

Von meiner ersten Ansicht Controller habe ich eine einzige "Enter" -Taste.

Diese Schaltfläche sendet einen 'freien' Benutzer (hat keinen nicht konsumierbaren Kauf getätigt) an einen TabBarController "A" und eine Reihe von Ansichten und einen 'bezahlten' Benutzer an den anderen TabBarController "B" einen anderen Satz Ansichten . Diese Ansichten werden sich niemals überschneiden.

Ich möchte überprüfen, ob mein Code in der Lage ist, effektiv zu unterscheiden, ob ein Benutzer den In-App-Kauf oder sonst gemacht hat.

Hier ist mein Code:

import UIKit 
import StoreKit 

class MainMainViewController: UIViewController, UIScrollViewDelegate, SKProductsRequestDelegate, SKPaymentTransactionObserver { 

let defaults = NSUserDefaults.standardUserDefaults() 
var product_id: NSString?; 

... 

    override func viewDidLoad() { 

     product_id = "some.iap.id"; 
     SKPaymentQueue.defaultQueue().addTransactionObserver(self) 


    super.viewDidLoad() 
} 

@IBAction func Enter(sender: AnyObject) { 

    //Check if product is purchased 
    if (defaults.boolForKey("purchased")){ 
     print("User has purchased da goods!") 

     // Grant or otherwise full access based on whether user has purchased/not purchased. 

     // Goto TabBarController A - FULL Access: 
     let vc = self.storyboard!.instantiateViewControllerWithIdentifier("TabBarControllerPaid") as! TabBarControllerPaid 
     self.presentViewController(vc, animated: true, completion: nil) 
    } 

    else if (!defaults.boolForKey("purchased")){ 
      print("user has NOT purchased yet") 

     // Goto TabBarController B - PARTIAL Access: 
     let vc = self.storyboard!.instantiateViewControllerWithIdentifier("TabBarControllerFree") as! TabBarControllerFree 
     self.presentViewController(vc, animated: true, completion: nil) 
    } 


} 

} 

Vielen Dank im Voraus für alle Antworten, Kommentare oder Gedanken :-)

Antwort

1

Take a look at this tutorial, unter der "gekauften Items" Abschnitt.

Es zeigt, wie Sie die gekauften Artikel verfolgen (und ja, Sie werden NSUserDefaults verwenden, wenn Sie diese Anleitung genau befolgen), und Sie erfahren auch, wie Sie frühere Käufe wiederherstellen, wenn die App gelöscht wird oder auf das neue Gerät eines Benutzers verschoben.

In Ihrem Code dort sehe ich "defaults.boolForKey("purchased")". Das große Problem mit diesem Code, das ich sehen kann, ist, dass es nur erlaubt, dass ein Gegenstand gekauft wird (entweder existiert der "gekaufte" boolean in NSUserDefaults oder tut es nicht).

+0

Tolles Tutorial - könnte nicht für eine weitere aktuelle fragen! Ein Tag alt, glaube ich! Ich kann meinen gesamten Code entsprechend diesem Inhalt ändern. Nur eine Randbemerkung zu Ihrem zweiten Absatz - wenn ich nur einen Nicht-Verbrauchsartikel jemals haben möchte, könnte ich mich nicht einfach an meinen obigen Code halten? Für eine One-IAP-Produkt-App ist es in Ordnung, wie es ist? Kann meine App feststellen, ob das Produkt gekauft wurde, wenn der Benutzer keine Internetverbindung hat? Ich glaube es wird? –

Verwandte Themen