App in purchase help swift

i am using swift 2 and this is my AIP code can you help me because this isn't working:




import UIKit

import iAd

import StoreKit

class ViewController4: UIViewController, ADBannerViewDelegate, SKProductsRequestDelegate, SKPaymentTransactionObserver {

@IBOutlet var s3: UIButton!

@IBOutlet var s6: UIButton!

@IBOutlet var s13: UIButton!

@IBOutlet var s22: UIButton!

@IBOutlet var s30: UIButton!

@IBOutlet var s45: UIButton!

@IBOutlet var s60: UIButton!

@IBOutlet var s100: UIButton!

@IBOutlet var rf: UIButton!

@IBOutlet var ise: UIButton!

@IBOutlet var info: UIButton!

@IBOutlet var home: UIButton!

@IBOutlet var banner: ADBannerView!

@IBOutlet var restore: UIButton!

override func viewDidLoad() {

super.viewDidLoad()

s3.layer.cornerRadius = 10

s6.layer.cornerRadius = 10

s13.layer.cornerRadius = 10

s22.layer.cornerRadius = 10

s30.layer.cornerRadius = 10

s45.layer.cornerRadius = 10

s60.layer.cornerRadius = 10

s100.layer.cornerRadius = 10

rf.layer.cornerRadius = 10

ise.layer.cornerRadius = 10

info.layer.cornerRadius = 10

home.layer.cornerRadius = 10

restore.layer.cornerRadius = 10

s3.enabled = false

s6.enabled = false

s13.enabled = false

s22.enabled = false

s30.enabled = false

s45.enabled = false

s60.enabled = false

s100.enabled = false

rf.enabled = false

ise.enabled = false

restore.enabled = false

if(SKPaymentQueue.canMakePayments()) {

print("IAP is enabled, loading")

let productID:NSSet = NSSet(objects: "wnp3skips, wnp6skips, wnp13skips, wnp22skips, wnp30skips, wnp45skips, wnp60skips, wnp100skips, wnpinfinite, wnpfailsafe")

let request = SKProductsRequest(productIdentifiers: productID as, [NSObject])

request.delegate = self

request.start()

} else {

print("please enable IAPS")

}

}

@IBAction func s3b(sender: UIButton) {

for product in list {

let prodID = product.productIdentifier

if(prodID == "wnp3skips") {

p = product

buyProduct()

break;

}

}

}

@IBAction func s6b(sender: UIButton) {

for product in list {

let prodID = product.productIdentifier

if(prodID == "wnp6skips") {

p = product

buyProduct()

break;

}

}

}

@IBAction func s13b(sender: UIButton) {

for product in list {

let prodID = product.productIdentifier

if(prodID == "wnp13skips") {

p = product

buyProduct()

break;

}

}

}

@IBAction func s22b(sender: UIButton) {

for product in list {

let prodID = product.productIdentifier

if(prodID == "wnp22skips") {

p = product

buyProduct()

break;

}

}

}

@IBAction func s30b(sender: UIButton) {

for product in list {

let prodID = product.productIdentifier

if(prodID == "wnp30skips") {

p = product

buyProduct()

break;

}

}

}

@IBAction func s45b(sender: UIButton) {

for product in list {

let prodID = product.productIdentifier

if(prodID == "wnp45skips") {

p = product

buyProduct()

break;

}

}

}

@IBAction func s60b(sender: UIButton) {

for product in list {

let prodID = product.productIdentifier

if(prodID == "wnp60skips") {

p = product

buyProduct()

break;

}

}

}

@IBAction func s100b(sender: UIButton) {

for product in list {

let prodID = product.productIdentifier

if(prodID == "wnp100skips") {

p = product

buyProduct()

break;

}

}

}

@IBAction func infinitebtn(sender: UIButton) {

for product in list {

let prodID = product.productIdentifier

if(prodID == "wnpinfinite") {

p = product

buyProduct()

break;

}

}

}

@IBAction func failsafebtn(sender: UIButton) {

for product in list {

let prodID = product.productIdentifier

if(prodID == "wnpfailsafe") {

p = product

buyProduct()

break;

}

}

}

/

func addskips3() {

skips = skips + 3

NSUserDefaults.standardUserDefaults().setObject(skips, forKey: "skips")

NSUserDefaults.standardUserDefaults().synchronize()

}

func addskips6() {

skips = skips + 6

NSUserDefaults.standardUserDefaults().setObject(skips, forKey: "skips")

NSUserDefaults.standardUserDefaults().synchronize()

}

func addskips13() {

skips = skips + 13

NSUserDefaults.standardUserDefaults().setObject(skips, forKey: "skips")

NSUserDefaults.standardUserDefaults().synchronize()

}

func addskips22() {

skips = skips + 22

NSUserDefaults.standardUserDefaults().setObject(skips, forKey: "skips")

NSUserDefaults.standardUserDefaults().synchronize()

}

func addskips30() {

skips = skips + 30

NSUserDefaults.standardUserDefaults().setObject(skips, forKey: "skips")

NSUserDefaults.standardUserDefaults().synchronize()

}

func addskips45() {

skips = skips + 45

NSUserDefaults.standardUserDefaults().setObject(skips, forKey: "skips")

NSUserDefaults.standardUserDefaults().synchronize()

}

func addskips60() {

skips = skips + 60

NSUserDefaults.standardUserDefaults().setObject(skips, forKey: "skips")

NSUserDefaults.standardUserDefaults().synchronize()

}

func addskips100() {

skips = skips + 100

NSUserDefaults.standardUserDefaults().setObject(skips, forKey: "skips")

NSUserDefaults.standardUserDefaults().synchronize()

}

func addskipsinfinite() {

infinite = "on"

NSUserDefaults.standardUserDefaults().setObject(infinite, forKey: "infinite")

NSUserDefaults.standardUserDefaults().synchronize()

}

func failsafeoff() {

failsafeper = "on"

NSUserDefaults.standardUserDefaults().setObject(failsafeper, forKey: "failsafeper")

NSUserDefaults.standardUserDefaults().synchronize()

}

override func didReceiveMemoryWarning() {

super.didReceiveMemoryWarning()

/

}

@IBAction func RestorePurchases(sender: UIButton) {

SKPaymentQueue.defaultQueue().addTransactionObserver(self)

SKPaymentQueue.defaultQueue().restoreCompletedTransactions()

}

var list = [SKProduct]()

var p = SKProduct()

func buyProduct() {

print("buy " + p.productIdentifier)

let pay = SKPayment(product: p)

SKPaymentQueue.defaultQueue().addTransactionObserver(self)

SKPaymentQueue.defaultQueue().addPayment(pay as SKPayment)

}

func productsRequest(request: SKProductsRequest, didReceiveResponse response: SKProductsResponse) {

print("product request")

let myProduct = response.products

for product in myProduct {

print("product added")

print(product.productIdentifier)

print(product.localizedTitle)

print(product.localizedDescription)

print(product.price)

list.append(product as SKProduct)

}

s3.enabled = true

s6.enabled = true

s13.enabled = true

s22.enabled = true

s30.enabled = true

s45.enabled = true

s60.enabled = true

s100.enabled = true

rf.enabled = true

ise.enabled = true

restore.enabled = true

}

func finishTransaction(trans:SKPaymentTransaction)

{

print("finish trans")

SKPaymentQueue.defaultQueue().finishTransaction(trans)

}

func paymentQueue (queue: SKPaymentQueue!, removedTransactions, transactions: [AnyObject]!) {

print("remove trans");

}

func paymentQueueRestoreCompletedTransactionsFinished(queue: SKPaymentQueue) {

print("transactions restored")

for transaction in queue.transactions {

let t: SKPaymentTransaction = transaction as SKPaymentTransaction

let prodID = t.payment.productIdentifier as String

switch prodID {

case "wnp3skips":

addskips3()

case "wnp6skips":

addskips6()

case "wnp13skips":

addskips13()

case "wnp22skips":

addskips22()

case "wnp30skips":

addskips30()

case "wnp45skips":

addskips45()

case "wnp60skips":

addskips60()

case "wnp100skips":

addskips100()

case "wnpinfinite":

addskipsinfinite()

case "wnpfailsafe":

failsafeoff()

default:

print("IAP not setup")

}

}

}

func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) {

print("add paymnet")

for transaction:AnyObject in transactions {

let trans = transaction as! SKPaymentTransaction

print(trans.error)

switch trans.transactionState {

case .Purchased:

print("buy, ok unlock iap here")

print(p.productIdentifier)

let prodID = p.productIdentifier as String

switch prodID {

case "wnp3skips":

addskips3()

case "wnp6skips":

addskips6()

case "wnp13skips":

addskips13()

case "wnp22skips":

addskips22()

case "wnp30skips":

addskips30()

case "wnp45skips":

addskips45()

case "wnp60skips":

addskips60()

case "wnp100skips":

addskips100()

case "wnpinfinite":

addskipsinfinite()

case "wnpfailsafe":

failsafeoff()

default:

print("IAP not setup")

}

queue.finishTransaction(trans)

break;

case .Failed:

print("buy error")

queue.finishTransaction(trans)

break;

default:

print("default")

break;

}

}

}

}

You are going to have to be more specific than "isn't working".

Did you intend this:


let productID:NSSet = NSSet(objects: "wnp3skips, wnp6skips, wnp13skips, wnp22skips, wnp30skips, wnp45skips, wnp60skips, wnp100skips, wnpinfinite, wnpfailsafe")

let request = SKProductsRequest(productIdentifiers: productID as, [NSObject])


to be something like this:

let productID: NSSet = NSSet(objects: "wnp3skips", "wnp6skips", "wnp##skips...",  "wnpinfinite", "wnpfailsafe")
let request = SKProductsRequest(productIdentifiers: productID as [NSObject])

for the let request = SKProductsRequest(productIdentifiers: productID as [NSObject]) line it comes with this error

My main point was that you were passing a set containing one giant string, instead of the set of many individual strings that you probably intended.

I just included the following line because it had a stray comma in it, in your original post, which needed to be removed.


But looking at the interface for SKProductsRequest, it will take a regular Swift Set, so you can do this:

let productID: Set = ["wnp3skips", "wnp6skips", "wnp##skips...",  "wnpinfinite", "wnpfailsafe"]
let request = SKProductsRequest(productIdentifiers: productID)


(Remember to replace "wnp##skips..." in my code with the rest of your IAP strings.)

App in purchase help swift
 
 
Q