ios - Why can't I save my in app purchase? -
first let me sorry code....i wanted make sure included of code can see if im doing wrong. game has in app purchase unlock levels. when go buy level 2 works when quit app , go level 2 in app purchase gone. why happen? don't know why not saving in app purchase see wrong code. please let me know if don't understand im saying , ill try explain better. thanks!
edit:
override func didmovetoview(view: skview) { if unlockleavel2 { let unlockleavel2 = nsuserdefaults().boolforkey("leavel2") unlockleveltwo() } } func unlockleveltwo() { let fadein = skaction.fadeinwithduration(1.0) leveltwo.position = cgpointmake(self.size.width / 2.0, self.size.height / 2.2) leveltwo.zposition = 20 leveltwo.setscale(0.8) leveltwo.alpha = 0 leveltwo.hidden = false leveltwo.runaction(fadein) leveltwo.name = "leveltwo" addchild(leveltwo) } func unlocklevel() { if skpaymentqueue.canmakepayments() { var productid:nsset = nsset(object: "unlockleveltwo") var productsrequest:skproductsrequest = skproductsrequest(productidentifiers: productid set<nsobject>) productsrequest.delegate = self productsrequest.start() println("fetching products...") } else { println("can't make purchases") } } func paymentqueue(queue: skpaymentqueue!, updatedtransactions transactions: [anyobject]!) { println("received payment transaction response apple"); transaction:anyobject in transactions { if let trans:skpaymenttransaction = transaction as? skpaymenttransaction{ switch trans.transactionstate { case .purchased: println("product purchased"); skpaymentqueue.defaultqueue().finishtransaction(transaction as! skpaymenttransaction) nsuserdefaults().setbool(true, forkey: "leavel2") unlockleveltwo() break; case .failed: println("purchased failed"); skpaymentqueue.defaultqueue().finishtransaction(transaction as! skpaymenttransaction) break; case .restored: println("already purchased"); skpaymentqueue.defaultqueue().restorecompletedtransactions() default: break; } } } } override func touchesbegan(touches: set<nsobject>, withevent event: uievent) { var touch: uitouch = touches.first as! uitouch var location = touch.locationinnode(self) var node = self.nodeatpoint(location) if node.name == "unlockleveltwobutton" { if defaults.boolforkey("unlocktheleveltwo") == false { skpaymentqueue.defaultqueue().addtransactionobserver(self) runaction(menuaudioplayer) unlocklevel() } }
your unlockleveltwo() function adjusting game data in current session , data not persist between sessions.
in order save state, can make use couple of functions primary nscoding,nsuserdefaults or coredata persist game data.
to save
let save = nsuserdefaults.standarduserdefaults() save.setvalue(yourvariable, forkey: "someuniquekey") save.synchronize() // makes ur data persist between sessions to load
if let data = save.valueforkey("someuniquekey") { // data here } else { // got no data }
Comments
Post a Comment