IAPing.
This commit is contained in:
55
ios/src/clojure/advent/ios.clj
Normal file
55
ios/src/clojure/advent/ios.clj
Normal file
@@ -0,0 +1,55 @@
|
||||
(ns advent.ios
|
||||
(:require [advent.iap :as iap])
|
||||
(:import [org.robovm.apple.storekit SKProductsResponse SKProduct SKMutablePayment SKPaymentQueue SKPaymentTransactionState]))
|
||||
|
||||
(def product (atom nil))
|
||||
|
||||
(defn products-did-receive-response [request ^SKProductsResponse response]
|
||||
(reset! iap/can-purchase? true)
|
||||
(reset! product (first (seq (.toArray (.getProducts response))))))
|
||||
|
||||
(defn products-did-fail [request error]
|
||||
)
|
||||
|
||||
(defn products-did-finish [request]
|
||||
)
|
||||
|
||||
(defn start-purchase []
|
||||
(try
|
||||
(.addPayment (SKPaymentQueue/getDefaultQueue)
|
||||
(doto (SKMutablePayment. @product)
|
||||
(.setQuantity 1)))
|
||||
(catch Exception e
|
||||
(println e))))
|
||||
|
||||
|
||||
|
||||
(defn updated-transactions [queue, transactions]
|
||||
|
||||
(let [purchased-states #{SKPaymentTransactionState/Purchased SKPaymentTransactionState/Restored}
|
||||
finished-states #{SKPaymentTransactionState/Purchased SKPaymentTransactionState/Restored SKPaymentTransactionState/Failed SKPaymentTransactionState/Deferred}
|
||||
is-finished (->> transactions
|
||||
.toArray
|
||||
seq
|
||||
(every? #(finished-states (.getTransactionState %))))
|
||||
|
||||
has-purchased (->> transactions
|
||||
.toArray
|
||||
seq
|
||||
(filter #(purchased-states (.getTransactionState %)))
|
||||
(map #(-> % (.getPayment) (.getProductIdentifier)))
|
||||
(filter #(= % "fullgame"))
|
||||
seq)]
|
||||
(when is-finished
|
||||
(iap/set-purchase-pref (if has-purchased true false))
|
||||
(doseq [^SKPaymentTransaction trans (->> transactions .toArray seq)]
|
||||
(.finishTransaction (SKPaymentQueue/getDefaultQueue) trans)))))
|
||||
|
||||
(defn updated-downloads [queue, downloads]
|
||||
(println "updated downloads" downloads))
|
||||
(defn restore-completed-transactions-finished [queue]
|
||||
(println "transactions finished"))
|
||||
(defn restore-completed-transactions-failed [queue, error]
|
||||
(println "transactions failed"))
|
||||
(defn removed-transactions [queue, transactions]
|
||||
(println "transactions removed" transactions))
|
||||
Reference in New Issue
Block a user