This commit is contained in:
Bryce Covert
2017-09-25 11:28:48 -07:00
parent 9a7c1078a2
commit 850a0a945d
30 changed files with 287 additions and 0 deletions

View 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))