È possibile implementare un acquisto in-app all'interno dello SKScene
? Se é cosi, come? Sto cercando di usare un SKSpriteNode
come pulsante 'Acquista' senza fortuna. Non sono sicuro che il codice debba essere inserito nel SKScene
o nel controller di visualizzazione. Ho esaminato un sacco di tutorial, ma sembrano tutti mirati alle applicazioni a vista singola piuttosto che a SpriteKit.in acquisto di app in SKScene
6
A
risposta
3
In primo luogo, mettere questo nella vostra linea scena di gioco e assicurarsi di avere il 'StoreKit' quadro importati
class GameScene: SKScene, SKPaymentTransactionObserver, SKProductsRequestDelegate {
Avanti, la vostra intenzione di voler mettere queste righe nel vostro didmovetoview. Tieni presente che dopo gli "oggetti", la stringa che hai inserito deve essere l'identificatore di acquisto dell'app che hai configurato utilizzando iTunes connect.
// Set IAPS
if(SKPaymentQueue.canMakePayments()) {
println("IAP is enabled, loading")
var productID:NSSet = NSSet(objects: "Put IAP id here")
var request: SKProductsRequest = SKProductsRequest(productIdentifiers: productID as Set<NSObject>)
request.delegate = self
request.start()
} else {
println("please enable IAPS")
}
Al di fuori di qualsiasi altra funzione, ma ancora all'interno della scena di gioco, inserire queste funzioni e variabili
//In App Purchases
var list = [SKProduct]()
var p = SKProduct()
func buyProduct() {
println("buy " + p.productIdentifier)
var pay = SKPayment(product: p)
SKPaymentQueue.defaultQueue().addTransactionObserver(self)
SKPaymentQueue.defaultQueue().addPayment(pay as SKPayment)
}
func productsRequest(request: SKProductsRequest!, didReceiveResponse response: SKProductsResponse!) {
println("product request")
var myProduct = response.products
for product in myProduct {
println("product added")
println(product.productIdentifier)
println(product.localizedTitle)
println(product.localizedDescription)
println(product.price)
list.append(product as! SKProduct)
}
}
func paymentQueueRestoreCompletedTransactionsFinished(queue: SKPaymentQueue!) {
println("transactions restored")
var purchasedItemIDS = []
for transaction in queue.transactions {
var t: SKPaymentTransaction = transaction as! SKPaymentTransaction
let prodID = t.payment.productIdentifier as String
switch prodID {
case "IAP id here":
//Right here is where you should put the function that you want to execute when your in app purchase is complete
default:
println("IAP not setup")
}
}
var alert = UIAlertView(title: "Thank You", message: "Your purchase(s) were restored. You may have to restart the app before banner ads are removed.", delegate: nil, cancelButtonTitle: "OK")
alert.show()
}
func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) {
println("add paymnet")
for transaction:AnyObject in transactions {
var trans = transaction as! SKPaymentTransaction
println(trans.error)
switch trans.transactionState {
case .Purchased, .Restored:
println("buy, ok unlock iap here")
println(p.productIdentifier)
let prodID = p.productIdentifier as String
switch prodID {
case "IAP id here":
//Here you should put the function you want to execute when the purchase is complete
var alert = UIAlertView(title: "Thank You", message: "You may have to restart the app before the banner ads are removed.", delegate: nil, cancelButtonTitle: "OK")
alert.show()
default:
println("IAP not setup")
}
queue.finishTransaction(trans)
break;
case .Failed:
println("buy error")
queue.finishTransaction(trans)
break;
default:
println("default")
break;
}
}
}
func finishTransaction(trans:SKPaymentTransaction)
{
println("finish trans")
}
func paymentQueue(queue: SKPaymentQueue!, removedTransactions transactions: [AnyObject]!)
{
println("remove trans");
}
Poi si deve nominare il nodo è necessario fare l'IAP
whateverYourNodeIs.name = "inAppPurchaseNode"
Infine, fatelo al contattoBegan
let touch = touches.first as? UITouch
let positionInScene = touch!.locationInNode(self)
let touchedNode = self.nodeAtPoint(positionInScene)
if let name = touchedNode.name {
if name == "inAppPurchaseNode" {
for product in list {
var prodID = product.productIdentifier
if(prodID == "iAp id here") {
p = product
buyProduct() //This is one of the functions we added earlier
break;
}
}
}
}
Si vorrà anche questo nei tuoi tocchi ha iniziato a ripristinare gli acquisti utilizzando un nodo diverso.
if let name = touchedNode.name {
if name == "restore" {
SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
SKPaymentQueue.defaultQueue().addTransactionObserver(self)
}
}
Problemi correlati
- 1. Acquisto in-app WP7
- 2. Errore acquisto app-in -1001
- 3. Flusso di acquisto in-app Android interrotto
- 4. EXC_BAD_ACCESS durante test di acquisto in app
- 5. In acquisto di app per desktop
- 6. Ripristino transazioni di acquisto in-app
- 7. Archiviazione corretta di acquisto in-app
- 8. Gestione acquisti in-app per acquisto in-app iOS
- 9. Test acquisto acquisto iPhone + In
- 10. Rimozione degli annunci con acquisto in-app
- 11. Eliminazione di un acquisto in un test di acquisto In App Account utente
- 12. UIPanGestureRecognizer in SKScene
- 13. Condividi in acquisto app tra app Mac e iOS
- 14. iPhone + in acquisto di app + cambia messaggio di avviso
- 15. in-app di verifica acquisto di firma con PHP openssl
- 16. Massa in acquisto di app tramite caricatore di applicazioni
- 17. In acquisto di app: aggiungere dinamicamente articoli non di consumo
- 18. Risultato di acquisto in-app di Libgdx e Google
- 19. L'acquisto in-app di acquisto di Apple è globalmente univoco?
- 20. Link di riferimento per acquisto di app
- 21. Acquisto in-app Android in crash dopo il pagamento
- 22. iPhone: configurazione di un'app da utilizzare come "acquisto in-app"
- 23. Acquisto in-app, rendere l'interfaccia utente di Google Play trasparente
- 24. acquisto in-app per le notifiche di abbonamenti auto-rinnovo
- 25. In App Errore di acquisto nei codici statici
- 26. Pulsante di acquisto e ripristino consumabili in-app
- 27. Pulsante di ripristino per acquisto in-app iOS non consumabile
- 28. Prezzo di acquisto in-app per iphone, lato server
- 29. L'abbonamento gratuito è l'unico tipo di acquisto in-app
- 30. Acquisto InApp - Come rilevare quando viene visualizzato l'avviso "Conferma il tuo acquisto in-app"
Ovunque ho messo la stringa "IAP id qui" intendo che è necessario utilizzare l'in app purchase id che hai fatto in iTunes Connect –
Grazie mille per il vostro aiuto, ho cercato ovunque per una risposta come questo !! :) :) – JGrn84
Sei il benvenuto. Inoltre, ho notato che ho lasciato alcune UIAlertViews nel codice di un gioco che ho fatto qualche tempo fa. Puoi eliminarli o cambiare il testo se lo desideri. –