UnityEarlyTransactionObserver.mm 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #import "UnityEarlyTransactionObserver.h"
  2. #import "UnityPurchasing.h"
  3. void Log(NSString *message) {
  4. NSLog(@"UnityIAP UnityEarlyTransactionObserver: %@\n", message);
  5. }
  6. @implementation UnityEarlyTransactionObserver
  7. static UnityEarlyTransactionObserver *s_Observer = nil;
  8. +(void)load {
  9. if (!s_Observer) {
  10. s_Observer = [[UnityEarlyTransactionObserver alloc] init];
  11. Log(@"Created");
  12. [s_Observer registerLifeCycleListener];
  13. }
  14. }
  15. + (UnityEarlyTransactionObserver*)defaultObserver {
  16. return s_Observer;
  17. }
  18. - (void)registerLifeCycleListener {
  19. UnityRegisterLifeCycleListener(self);
  20. Log(@"Registered for lifecycle events");
  21. }
  22. - (void)didFinishLaunching:(NSNotification*)notification {
  23. Log(@"Added to the payment queue");
  24. [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
  25. }
  26. - (BOOL)paymentQueue:(SKPaymentQueue *)queue shouldAddStorePayment:(SKPayment *)payment forProduct:(SKProduct *)product {
  27. Log(@"Payment queue shouldAddStorePayment");
  28. if (self.readyToReceiveTransactionUpdates) {
  29. return YES;
  30. } else {
  31. if (m_QueuedPayments == nil)
  32. m_QueuedPayments = [[NSMutableSet alloc] init];
  33. [m_QueuedPayments addObject:payment];
  34. return NO;
  35. }
  36. return YES;
  37. }
  38. - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions {}
  39. - (void)initiateQueuedPayments {
  40. Log(@"Request to initiate queued payments");
  41. if (m_QueuedPayments != nil) {
  42. Log(@"Initiating queued payments");
  43. for (SKPayment *payment in m_QueuedPayments) {
  44. [[SKPaymentQueue defaultQueue] addPayment:payment];
  45. }
  46. [m_QueuedPayments removeAllObjects];
  47. }
  48. }
  49. @end