Module: ProMotion::IAP
- Defined in:
- lib/ProMotion/iap.rb
Defined Under Namespace
Classes: Product
Instance Attribute Summary collapse
-
#completion_handlers ⇒ Object
Returns the value of attribute completion_handlers.
Instance Method Summary collapse
-
#paymentQueue(_, updatedTransactions: transactions) ⇒ Object
SKPaymentTransactionObserver methods.
-
#productsRequest(_, didReceiveResponse: response) ⇒ Object
SKProductsRequestDelegate methods.
- #purchase_iaps(*product_ids, &callback) ⇒ Object (also: #purchase_iap)
- #request(_, didFailWithError: error) ⇒ Object
- #restore_iaps(*product_ids, &callback) ⇒ Object (also: #restore_iap)
- #retrieve_iaps(*product_ids, &callback) ⇒ Object (also: #retrieve_iap)
Instance Attribute Details
#completion_handlers ⇒ Object
Returns the value of attribute completion_handlers.
3 4 5 |
# File 'lib/ProMotion/iap.rb', line 3 def completion_handlers @completion_handlers end |
Instance Method Details
#paymentQueue(_, updatedTransactions: transactions) ⇒ Object
SKPaymentTransactionObserver methods
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/ProMotion/iap.rb', line 118 def paymentQueue(_, updatedTransactions:transactions) transactions.each do |transaction| case transaction.transactionState when SKPaymentTransactionStatePurchasing then iap_callback(:in_progress, transaction) when SKPaymentTransactionStateDeferred then iap_callback(:deferred, transaction) when SKPaymentTransactionStatePurchased then iap_callback(:purchased, transaction, true) when SKPaymentTransactionStateRestored then iap_callback(:restored, transaction, true) when SKPaymentTransactionStateFailed if transaction.error.code == SKErrorPaymentCancelled iap_callback(:canceled, transaction, true) else iap_callback(:error, transaction, true) end end end end |
#productsRequest(_, didReceiveResponse: response) ⇒ Object
SKProductsRequestDelegate methods
98 99 100 101 102 103 104 105 106 107 |
# File 'lib/ProMotion/iap.rb', line 98 def productsRequest(_, didReceiveResponse:response) unless response.invalidProductIdentifiers.empty? red = "\e[0;31m" color_off = "\e[0m" puts "#{red}PM::IAP Error - invalid product identifier(s) '#{response.invalidProductIdentifiers.join("', '")}' for application identifier #{NSBundle.mainBundle.infoDictionary['CFBundleIdentifier'].inspect}#{color_off}" end retrieved_iaps_handler(response.products, &self.completion_handlers["retrieve_iaps"]) if self.completion_handlers["retrieve_iaps"] @products_request = nil self.completion_handlers["retrieve_iaps"] = nil end |
#purchase_iaps(*product_ids, &callback) ⇒ Object Also known as: purchase_iap
5 6 7 8 9 10 11 12 13 14 |
# File 'lib/ProMotion/iap.rb', line 5 def purchase_iaps(*product_ids, &callback) iap_setup retrieve_iaps product_ids do |products| products.each do |product| self.completion_handlers["purchase-#{product[:product_id]}"] = callback payment = SKPayment.paymentWithProduct(product[:product]) SKPaymentQueue.defaultQueue.addPayment(payment) end end end |
#request(_, didFailWithError: error) ⇒ Object
109 110 111 112 113 114 |
# File 'lib/ProMotion/iap.rb', line 109 def request(_, didFailWithError:error) self.completion_handlers["retrieve_iaps"].call([], error) if self.completion_handlers["retrieve_iaps"].arity == 2 self.completion_handlers["retrieve_iaps"].call([]) if self.completion_handlers["retrieve_iaps"].arity < 2 @products_request = nil self.completion_handlers["retrieve_iaps"] = nil end |
#restore_iaps(*product_ids, &callback) ⇒ Object Also known as: restore_iap
17 18 19 20 21 22 23 24 25 |
# File 'lib/ProMotion/iap.rb', line 17 def restore_iaps(*product_ids, &callback) iap_setup retrieve_iaps product_ids do |products| products.each do |product| self.completion_handlers["restore-#{product[:product_id]}"] = callback SKPaymentQueue.defaultQueue.restoreCompletedTransactions end end end |
#retrieve_iaps(*product_ids, &callback) ⇒ Object Also known as: retrieve_iap
28 29 30 31 32 33 34 |
# File 'lib/ProMotion/iap.rb', line 28 def retrieve_iaps(*product_ids, &callback) iap_setup self.completion_handlers["retrieve_iaps"] = callback @products_request = SKProductsRequest.alloc.initWithProductIdentifiers(NSSet.setWithArray(product_ids.flatten)) @products_request.delegate = self @products_request.start end |