react-native-iap 11.0.0-rc.5 → 11.0.0-rc.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ios/RNIapIosSk2.swift +374 -29
- package/package.json +1 -1
package/ios/RNIapIosSk2.swift
CHANGED
|
@@ -2,18 +2,378 @@ import Foundation
|
|
|
2
2
|
import React
|
|
3
3
|
import StoreKit
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
protocol Sk2Delegate {
|
|
6
|
+
func disable(
|
|
7
|
+
_ resolve: @escaping RCTPromiseResolveBlock,
|
|
8
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
func initConnection(
|
|
12
|
+
_ resolve: @escaping RCTPromiseResolveBlock ,
|
|
13
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
func endConnection(
|
|
17
|
+
_ resolve: @escaping RCTPromiseResolveBlock,
|
|
18
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
func getItems(
|
|
22
|
+
_ skus: [String],
|
|
23
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
24
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
func getAvailableItems(
|
|
28
|
+
_ alsoPublishToEventListener: Bool,
|
|
29
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
30
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
func buyProduct(
|
|
34
|
+
_ sku: String,
|
|
35
|
+
andDangerouslyFinishTransactionAutomatically: Bool,
|
|
36
|
+
appAccountToken: String?,
|
|
37
|
+
quantity: Int,
|
|
38
|
+
withOffer: [String: String],
|
|
39
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
40
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
func isEligibleForIntroOffer(
|
|
44
|
+
_ groupID: String,
|
|
45
|
+
resolve: @escaping RCTPromiseResolveBlock ,
|
|
46
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
func subscriptionStatus(
|
|
50
|
+
_ sku: String,
|
|
51
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
52
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
func currentEntitlement(
|
|
56
|
+
_ sku: String,
|
|
57
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
58
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
func latestTransaction(
|
|
62
|
+
_ sku: String,
|
|
63
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
64
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
func finishTransaction(
|
|
68
|
+
_ transactionIdentifier: String,
|
|
69
|
+
resolve: @escaping RCTPromiseResolveBlock ,
|
|
70
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
func pendingTransactions (
|
|
74
|
+
_ resolve: @escaping RCTPromiseResolveBlock,
|
|
75
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
func sync(
|
|
79
|
+
_ resolve: @escaping RCTPromiseResolveBlock,
|
|
80
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
func presentCodeRedemptionSheet(
|
|
84
|
+
_ resolve: @escaping RCTPromiseResolveBlock,
|
|
85
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
func startObserving()
|
|
89
|
+
func stopObserving()
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
class DummySk2: Sk2Delegate {
|
|
93
|
+
let errorCode = IapErrors.E_DEVELOPER_ERROR.rawValue
|
|
94
|
+
let errorMessage = "Method only available on iOS 15 and up"
|
|
95
|
+
|
|
96
|
+
func disable(
|
|
97
|
+
_ resolve: @escaping RCTPromiseResolveBlock,
|
|
98
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
99
|
+
) {
|
|
100
|
+
reject(errorCode, errorMessage, nil)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
func initConnection(
|
|
104
|
+
_ resolve: @escaping RCTPromiseResolveBlock ,
|
|
105
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
106
|
+
) {
|
|
107
|
+
reject(errorCode, errorMessage, nil)
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
func endConnection(
|
|
111
|
+
_ resolve: @escaping RCTPromiseResolveBlock,
|
|
112
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
113
|
+
) {
|
|
114
|
+
reject(errorCode, errorMessage, nil)
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
func getItems(
|
|
118
|
+
_ skus: [String],
|
|
119
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
120
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
121
|
+
) {
|
|
122
|
+
reject(errorCode, errorMessage, nil)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
func getAvailableItems(
|
|
126
|
+
_ alsoPublishToEventListener: Bool,
|
|
127
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
128
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
129
|
+
) {
|
|
130
|
+
reject(errorCode, errorMessage, nil)
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
func buyProduct(
|
|
134
|
+
_ sku: String,
|
|
135
|
+
andDangerouslyFinishTransactionAutomatically: Bool,
|
|
136
|
+
appAccountToken: String?,
|
|
137
|
+
quantity: Int,
|
|
138
|
+
withOffer: [String: String],
|
|
139
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
140
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
141
|
+
) {
|
|
142
|
+
reject(errorCode, errorMessage, nil)
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
func isEligibleForIntroOffer(
|
|
146
|
+
_ groupID: String,
|
|
147
|
+
resolve: @escaping RCTPromiseResolveBlock ,
|
|
148
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
149
|
+
) {
|
|
150
|
+
reject(errorCode, errorMessage, nil)
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
func subscriptionStatus(
|
|
154
|
+
_ sku: String,
|
|
155
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
156
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
157
|
+
) {
|
|
158
|
+
reject(errorCode, errorMessage, nil)
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
func currentEntitlement(
|
|
162
|
+
_ sku: String,
|
|
163
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
164
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
165
|
+
) {
|
|
166
|
+
reject(errorCode, errorMessage, nil)
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
func latestTransaction(
|
|
170
|
+
_ sku: String,
|
|
171
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
172
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
173
|
+
) {
|
|
174
|
+
reject(errorCode, errorMessage, nil)
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
func finishTransaction(
|
|
178
|
+
_ transactionIdentifier: String,
|
|
179
|
+
resolve: @escaping RCTPromiseResolveBlock ,
|
|
180
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
181
|
+
) {
|
|
182
|
+
reject(errorCode, errorMessage, nil)
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
func pendingTransactions (
|
|
186
|
+
_ resolve: @escaping RCTPromiseResolveBlock,
|
|
187
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
188
|
+
) {
|
|
189
|
+
reject(errorCode, errorMessage, nil)
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
func sync(
|
|
193
|
+
_ resolve: @escaping RCTPromiseResolveBlock,
|
|
194
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
195
|
+
) {
|
|
196
|
+
reject(errorCode, errorMessage, nil)
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
func presentCodeRedemptionSheet(
|
|
200
|
+
_ resolve: @escaping RCTPromiseResolveBlock,
|
|
201
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
202
|
+
) {
|
|
203
|
+
reject(errorCode, errorMessage, nil)
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
func startObserving() {
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
func stopObserving() {
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
6
213
|
@objc(RNIapIosSk2)
|
|
7
|
-
class RNIapIosSk2: RCTEventEmitter {
|
|
214
|
+
class RNIapIosSk2: RCTEventEmitter, Sk2Delegate {
|
|
215
|
+
private var delegate: Sk2Delegate = DummySk2()
|
|
216
|
+
|
|
217
|
+
override init() {
|
|
218
|
+
super.init()
|
|
219
|
+
if #available(iOS 15.0, *) {
|
|
220
|
+
delegate = RNIapIosSk2iOS15(sendEvent: self.sendEvent)
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
@objc public func disable(
|
|
225
|
+
_ resolve: @escaping RCTPromiseResolveBlock = { _ in },
|
|
226
|
+
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
227
|
+
) {
|
|
228
|
+
delegate.disable(resolve, reject: reject)
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
override class func requiresMainQueueSetup() -> Bool {
|
|
232
|
+
return true
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
override func startObserving() {
|
|
236
|
+
delegate.startObserving()
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
override func stopObserving() {
|
|
240
|
+
delegate.stopObserving()
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
override func addListener(_ eventName: String?) {
|
|
244
|
+
super.addListener(eventName)
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
"iap-transaction-updated" is unique to Sk2.
|
|
249
|
+
"iap-promoted-product" is only avaiable on Sk1
|
|
250
|
+
"purchase-updated", "purchase-error" are for backward compatibility
|
|
251
|
+
*/
|
|
252
|
+
override func supportedEvents() -> [String]? {
|
|
253
|
+
return [ "purchase-updated", "purchase-error", "iap-transaction-updated"]
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
@objc public func initConnection(
|
|
257
|
+
_ resolve: @escaping RCTPromiseResolveBlock = { _ in },
|
|
258
|
+
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
259
|
+
) {
|
|
260
|
+
delegate.initConnection(resolve, reject: reject)
|
|
261
|
+
}
|
|
262
|
+
@objc public func endConnection(
|
|
263
|
+
_ resolve: @escaping RCTPromiseResolveBlock = { _ in },
|
|
264
|
+
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
265
|
+
) {
|
|
266
|
+
delegate.endConnection(resolve, reject: reject)
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
@objc public func getItems(
|
|
270
|
+
_ skus: [String],
|
|
271
|
+
resolve: @escaping RCTPromiseResolveBlock = { _ in },
|
|
272
|
+
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
273
|
+
) {
|
|
274
|
+
delegate.getItems(skus, resolve: resolve, reject: reject)
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
@objc public func getAvailableItems(
|
|
278
|
+
_ alsoPublishToEventListener: Bool,
|
|
279
|
+
resolve: @escaping RCTPromiseResolveBlock = { _ in },
|
|
280
|
+
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
281
|
+
) {
|
|
282
|
+
delegate.getAvailableItems(alsoPublishToEventListener, resolve: resolve, reject: reject)
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
@objc public func buyProduct(
|
|
286
|
+
_ sku: String,
|
|
287
|
+
andDangerouslyFinishTransactionAutomatically: Bool,
|
|
288
|
+
appAccountToken: String?,
|
|
289
|
+
quantity: Int,
|
|
290
|
+
withOffer: [String: String],
|
|
291
|
+
resolve: @escaping RCTPromiseResolveBlock = { _ in },
|
|
292
|
+
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
293
|
+
) {
|
|
294
|
+
delegate.buyProduct(
|
|
295
|
+
sku,
|
|
296
|
+
andDangerouslyFinishTransactionAutomatically: andDangerouslyFinishTransactionAutomatically,
|
|
297
|
+
appAccountToken: appAccountToken,
|
|
298
|
+
quantity: quantity,
|
|
299
|
+
withOffer: withOffer,
|
|
300
|
+
resolve: resolve,
|
|
301
|
+
reject: reject)
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
@objc public func isEligibleForIntroOffer(
|
|
305
|
+
_ groupID: String,
|
|
306
|
+
resolve: @escaping RCTPromiseResolveBlock = { _ in },
|
|
307
|
+
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
308
|
+
) {
|
|
309
|
+
delegate.isEligibleForIntroOffer(groupID, resolve: resolve, reject: reject)
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
@objc public func subscriptionStatus(
|
|
313
|
+
_ sku: String,
|
|
314
|
+
resolve: @escaping RCTPromiseResolveBlock = { _ in },
|
|
315
|
+
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
316
|
+
) {
|
|
317
|
+
delegate.subscriptionStatus(sku, resolve: resolve, reject: reject)
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
@objc public func currentEntitlement(
|
|
321
|
+
_ sku: String,
|
|
322
|
+
resolve: @escaping RCTPromiseResolveBlock = { _ in },
|
|
323
|
+
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
324
|
+
) {
|
|
325
|
+
delegate.currentEntitlement(sku, resolve: resolve, reject: reject)
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
@objc public func latestTransaction(
|
|
329
|
+
_ sku: String,
|
|
330
|
+
resolve: @escaping RCTPromiseResolveBlock = { _ in },
|
|
331
|
+
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
332
|
+
) {
|
|
333
|
+
delegate.latestTransaction(sku, resolve: resolve, reject: reject)
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
@objc public func finishTransaction(
|
|
337
|
+
_ transactionIdentifier: String,
|
|
338
|
+
resolve: @escaping RCTPromiseResolveBlock = { _ in },
|
|
339
|
+
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
340
|
+
) {
|
|
341
|
+
delegate.finishTransaction(transactionIdentifier, resolve: resolve, reject: reject)
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
@objc public func pendingTransactions (
|
|
345
|
+
_ resolve: @escaping RCTPromiseResolveBlock = { _ in },
|
|
346
|
+
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
347
|
+
) {
|
|
348
|
+
delegate.pendingTransactions(resolve, reject: reject)
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
@objc public func sync(
|
|
352
|
+
_ resolve: @escaping RCTPromiseResolveBlock = { _ in},
|
|
353
|
+
reject: @escaping RCTPromiseRejectBlock = {_, _, _ in}
|
|
354
|
+
) {
|
|
355
|
+
delegate.sync(resolve, reject: reject)
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
@objc public func presentCodeRedemptionSheet(
|
|
359
|
+
_ resolve: @escaping RCTPromiseResolveBlock = { _ in },
|
|
360
|
+
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
361
|
+
) {
|
|
362
|
+
delegate.presentCodeRedemptionSheet(resolve, reject: reject)
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
@available(iOS 15.0, *)
|
|
367
|
+
class RNIapIosSk2iOS15: Sk2Delegate {
|
|
8
368
|
private var hasListeners = false
|
|
9
369
|
private var products: [String: Product]
|
|
10
370
|
private var transactions: [String: Transaction]
|
|
11
371
|
private var updateListenerTask: Task<Void, Error>?
|
|
12
|
-
|
|
13
|
-
|
|
372
|
+
fileprivate var sendEvent: ((String?, Any?) -> Void)?
|
|
373
|
+
init(sendEvent: ((String?, Any?) -> Void)? ) {
|
|
374
|
+
self.sendEvent = sendEvent
|
|
14
375
|
products = [String: Product]()
|
|
15
376
|
transactions = [String: Transaction]()
|
|
16
|
-
super.init()
|
|
17
377
|
addTransactionObserver()
|
|
18
378
|
}
|
|
19
379
|
|
|
@@ -29,9 +389,6 @@ class RNIapIosSk2: RCTEventEmitter {
|
|
|
29
389
|
resolve(nil)
|
|
30
390
|
}
|
|
31
391
|
|
|
32
|
-
override class func requiresMainQueueSetup() -> Bool {
|
|
33
|
-
return true
|
|
34
|
-
}
|
|
35
392
|
func addTransactionObserver() {
|
|
36
393
|
if updateListenerTask == nil {
|
|
37
394
|
updateListenerTask = listenForTransactions()
|
|
@@ -59,8 +416,8 @@ class RNIapIosSk2: RCTEventEmitter {
|
|
|
59
416
|
// await self.updateCustomerProductStatus()
|
|
60
417
|
|
|
61
418
|
if self.hasListeners {
|
|
62
|
-
self.sendEvent(
|
|
63
|
-
self.sendEvent(
|
|
419
|
+
self.sendEvent?("purchase-updated", serialize(transaction))
|
|
420
|
+
self.sendEvent?("iap-transaction-updated", ["transaction": serialize(transaction)])
|
|
64
421
|
}
|
|
65
422
|
// Always finish a transaction.
|
|
66
423
|
// await transaction.finish()
|
|
@@ -77,33 +434,21 @@ class RNIapIosSk2: RCTEventEmitter {
|
|
|
77
434
|
"message": error.localizedDescription
|
|
78
435
|
]
|
|
79
436
|
|
|
80
|
-
self.sendEvent(
|
|
81
|
-
self.sendEvent(
|
|
437
|
+
self.sendEvent?("purchase-error", err)
|
|
438
|
+
self.sendEvent?("iap-transaction-updated", ["error": err])
|
|
82
439
|
}
|
|
83
440
|
}
|
|
84
441
|
}
|
|
85
442
|
}
|
|
86
443
|
}
|
|
87
444
|
|
|
88
|
-
|
|
445
|
+
func startObserving() {
|
|
89
446
|
hasListeners = true
|
|
90
447
|
}
|
|
91
448
|
|
|
92
|
-
|
|
449
|
+
func stopObserving() {
|
|
93
450
|
hasListeners = false
|
|
94
451
|
}
|
|
95
|
-
override func addListener(_ eventName: String?) {
|
|
96
|
-
super.addListener(eventName)
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
"iap-transaction-updated" is unique to Sk2.
|
|
101
|
-
"iap-promoted-product" is only avaiable on Sk1
|
|
102
|
-
"purchase-updated", "purchase-error" are for backward compatibility
|
|
103
|
-
*/
|
|
104
|
-
override func supportedEvents() -> [String]? {
|
|
105
|
-
return [ "purchase-updated", "purchase-error", "iap-transaction-updated"]
|
|
106
|
-
}
|
|
107
452
|
|
|
108
453
|
@objc public func initConnection(
|
|
109
454
|
_ resolve: @escaping RCTPromiseResolveBlock = { _ in },
|
|
@@ -154,12 +499,12 @@ class RNIapIosSk2: RCTEventEmitter {
|
|
|
154
499
|
func addPurchase(transaction: Transaction, product: Product) {
|
|
155
500
|
purchasedItems.append( transaction)
|
|
156
501
|
if alsoPublishToEventListener {
|
|
157
|
-
sendEvent(
|
|
502
|
+
self.sendEvent?("purchase-update", serialize(transaction))
|
|
158
503
|
}
|
|
159
504
|
}
|
|
160
505
|
func addError( error: Error, errorDict: [String: String]) {
|
|
161
506
|
if alsoPublishToEventListener {
|
|
162
|
-
sendEvent(
|
|
507
|
+
self.sendEvent?("purchase-error", errorDict)
|
|
163
508
|
}
|
|
164
509
|
}
|
|
165
510
|
// Iterate through all of the user's purchased products.
|
|
@@ -277,7 +622,7 @@ class RNIapIosSk2: RCTEventEmitter {
|
|
|
277
622
|
resolve(nil)
|
|
278
623
|
} else {
|
|
279
624
|
self.addTransaction(transaction)
|
|
280
|
-
sendEvent(
|
|
625
|
+
self.sendEvent?("purchase-updated", serialize(transaction))
|
|
281
626
|
resolve(serialize(transaction))
|
|
282
627
|
}
|
|
283
628
|
return
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-iap",
|
|
3
|
-
"version": "11.0.0-rc.
|
|
3
|
+
"version": "11.0.0-rc.6",
|
|
4
4
|
"description": "React Native In App Purchase Module.",
|
|
5
5
|
"repository": "https://github.com/dooboolab/react-native-iap",
|
|
6
6
|
"author": "dooboolab <support@dooboolab.com> (https://github.com/dooboolab)",
|