react-native-nami-sdk 2.0.4 → 3.0.8
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/.github/workflows/app_stg.yaml +203 -0
- package/.github/workflows/build.yml +2 -2
- package/.pre-commit-config.yaml +25 -0
- package/android/build.gradle +24 -13
- package/android/gradle/wrapper/gradle-wrapper.properties +5 -1
- package/android/src/main/java/com/nami/reactlibrary/Constants.kt +1 -1
- package/android/src/main/java/com/nami/reactlibrary/NamiBridgeModule.kt +6 -50
- package/android/src/main/java/com/nami/reactlibrary/NamiBridgePackage.java +1 -3
- package/android/src/main/java/com/nami/reactlibrary/NamiCampaignManagerBridge.kt +133 -0
- package/android/src/main/java/com/nami/reactlibrary/NamiCustomerManagerBridge.kt +89 -20
- package/android/src/main/java/com/nami/reactlibrary/NamiEmitter.kt +25 -25
- package/android/src/main/java/com/nami/reactlibrary/NamiEntitlementManagerBridgeModule.kt +31 -130
- package/android/src/main/java/com/nami/reactlibrary/NamiMLManagerBridgeModule.kt +1 -1
- package/android/src/main/java/com/nami/reactlibrary/NamiPaywallManagerBridgeModule.kt +36 -147
- package/android/src/main/java/com/nami/reactlibrary/NamiPurchaseManagerBridge.kt +37 -39
- package/android/src/main/java/com/nami/reactlibrary/NamiUtil.kt +50 -180
- package/build-utils/get_version_code.py +140 -0
- package/index.d.ts +20 -0
- package/index.js +7 -6
- package/ios/Nami.m +18 -72
- package/ios/NamiBridgeUtil.h +4 -6
- package/ios/NamiBridgeUtil.m +37 -99
- package/ios/NamiCampaignManagerBridge.m +26 -0
- package/ios/NamiCampaignManagerBridge.swift +107 -0
- package/ios/NamiCustomerManager.m +19 -24
- package/ios/NamiCustomerManager.swift +122 -0
- package/ios/NamiEmitter.m +85 -95
- package/ios/NamiEntitlementManagerBridge.m +7 -107
- package/ios/NamiEntitlementManagerBridge.swift +74 -0
- package/ios/NamiMLManagerBridge.m +2 -2
- package/ios/NamiPaywallManagerBridge.m +22 -94
- package/ios/NamiPaywallManagerBridge.swift +93 -0
- package/ios/NamiPurchaseManagerBridge.m +40 -71
- package/ios/NamiPurchaseManagerBridge.swift +174 -0
- package/ios/Podfile +2 -2
- package/ios/RNNami-Bridging-Header.h +5 -0
- package/ios/RNNami.h +0 -1
- package/ios/RNNami.m +1 -1
- package/ios/RNNami.xcodeproj/project.pbxproj +84 -8
- package/ios/RNNami.xcodeproj/xcshareddata/xcschemes/RNNami.xcscheme +67 -0
- package/package.json +1 -1
- package/react-native-nami-sdk.podspec +3 -3
- package/src/Nami.d.ts +112 -0
- package/src/Nami.js +10 -0
- package/src/NamiCampaignManager.d.ts +54 -0
- package/src/NamiCampaignManager.js +43 -0
- package/src/NamiCustomerManager.d.ts +39 -0
- package/src/NamiCustomerManager.js +43 -0
- package/src/NamiEntitlementManager.d.ts +24 -0
- package/src/NamiEntitlementManager.js +23 -0
- package/src/NamiMLManager.d.ts +5 -0
- package/src/NamiMLManager.js +7 -0
- package/src/NamiPaywallManager.d.ts +57 -0
- package/src/NamiPaywallManager.js +28 -0
- package/src/NamiPurchaseManager.d.ts +57 -0
- package/src/NamiPurchaseManager.js +37 -0
- package/src/types.ts +36 -0
- package/android/src/main/java/com/nami/reactlibrary/NamiAnalyticsEmitter.kt +0 -121
- package/ios/NamiAnalyticsEmitter.m +0 -146
|
@@ -18,6 +18,12 @@
|
|
|
18
18
|
EBC59E6023C7E2EC008A123A /* NamiAnalyticsEmitter.m in Sources */ = {isa = PBXBuildFile; fileRef = EBC59E5F23C7E2EC008A123A /* NamiAnalyticsEmitter.m */; };
|
|
19
19
|
EBC59E6323C7F634008A123A /* NamiBridgeUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = EBC59E6223C7F634008A123A /* NamiBridgeUtil.m */; };
|
|
20
20
|
EBEEAC10243C29C800E01389 /* NamiMLManagerBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = EBEEAC0F243C29C800E01389 /* NamiMLManagerBridge.m */; };
|
|
21
|
+
FA3AB38529E009F300FD2E8D /* NamiPaywallManagerBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA3AB38429E009F300FD2E8D /* NamiPaywallManagerBridge.swift */; };
|
|
22
|
+
FA4CEE3D29DEE01600058372 /* NamiPurchaseManagerBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA4CEE3C29DEE01600058372 /* NamiPurchaseManagerBridge.swift */; };
|
|
23
|
+
FA86299F29DDA881000090C6 /* NamiEntitlementManagerBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA86299E29DDA881000090C6 /* NamiEntitlementManagerBridge.swift */; };
|
|
24
|
+
FAADDB4F29D376590096591A /* NamiCampaignManagerBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAADDB4D29D376590096591A /* NamiCampaignManagerBridge.swift */; };
|
|
25
|
+
FAADDB5229D377560096591A /* NamiCampaignManagerBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = FAADDB5129D377560096591A /* NamiCampaignManagerBridge.m */; };
|
|
26
|
+
FAD132F729D6BD5E001059A2 /* NamiCustomerManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAD132F629D6BD5E001059A2 /* NamiCustomerManager.swift */; };
|
|
21
27
|
/* End PBXBuildFile section */
|
|
22
28
|
|
|
23
29
|
/* Begin PBXCopyFilesBuildPhase section */
|
|
@@ -49,6 +55,13 @@
|
|
|
49
55
|
EBC59E6223C7F634008A123A /* NamiBridgeUtil.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NamiBridgeUtil.m; sourceTree = "<group>"; };
|
|
50
56
|
EBC59E6423C7F7A0008A123A /* NamiBridgeUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NamiBridgeUtil.h; sourceTree = "<group>"; };
|
|
51
57
|
EBEEAC0F243C29C800E01389 /* NamiMLManagerBridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NamiMLManagerBridge.m; sourceTree = "<group>"; };
|
|
58
|
+
FA02430629D2EAE00018CA56 /* RNNami-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "RNNami-Bridging-Header.h"; sourceTree = "<group>"; };
|
|
59
|
+
FA3AB38429E009F300FD2E8D /* NamiPaywallManagerBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NamiPaywallManagerBridge.swift; sourceTree = "<group>"; };
|
|
60
|
+
FA4CEE3C29DEE01600058372 /* NamiPurchaseManagerBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NamiPurchaseManagerBridge.swift; sourceTree = "<group>"; };
|
|
61
|
+
FA86299E29DDA881000090C6 /* NamiEntitlementManagerBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NamiEntitlementManagerBridge.swift; sourceTree = "<group>"; };
|
|
62
|
+
FAADDB4D29D376590096591A /* NamiCampaignManagerBridge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NamiCampaignManagerBridge.swift; sourceTree = "<group>"; };
|
|
63
|
+
FAADDB5129D377560096591A /* NamiCampaignManagerBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NamiCampaignManagerBridge.m; sourceTree = "<group>"; };
|
|
64
|
+
FAD132F629D6BD5E001059A2 /* NamiCustomerManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NamiCustomerManager.swift; sourceTree = "<group>"; };
|
|
52
65
|
/* End PBXFileReference section */
|
|
53
66
|
|
|
54
67
|
/* Begin PBXFrameworksBuildPhase section */
|
|
@@ -74,6 +87,12 @@
|
|
|
74
87
|
58B511D21A9E6C8500147676 = {
|
|
75
88
|
isa = PBXGroup;
|
|
76
89
|
children = (
|
|
90
|
+
FA3AB38329E009D200FD2E8D /* NamiPaywallManager */,
|
|
91
|
+
FA4CEE3E29DEE01E00058372 /* NamiPurchaseManager */,
|
|
92
|
+
FA8629A029DDA8A5000090C6 /* NamiEntitlementManager */,
|
|
93
|
+
FADE7CFB29DD9875000BF262 /* NamiCustomerManager */,
|
|
94
|
+
FADE7CFA29DD984E000BF262 /* NamiCampaignManager */,
|
|
95
|
+
FA02430629D2EAE00018CA56 /* RNNami-Bridging-Header.h */,
|
|
77
96
|
EBC59E6423C7F7A0008A123A /* NamiBridgeUtil.h */,
|
|
78
97
|
EBC59E6223C7F634008A123A /* NamiBridgeUtil.m */,
|
|
79
98
|
B3E7B5881CC2AC0600A0062D /* RNNami.h */,
|
|
@@ -81,11 +100,7 @@
|
|
|
81
100
|
EBC59E5C23C5514B008A123A /* Nami.m */,
|
|
82
101
|
EB1C9AFA23BE9C5700CAD548 /* NamiEmitter.m */,
|
|
83
102
|
EBC59E5F23C7E2EC008A123A /* NamiAnalyticsEmitter.m */,
|
|
84
|
-
EB1C9AF923BE9C5600CAD548 /* NamiPaywallManagerBridge.m */,
|
|
85
|
-
EB75992024F031E900430D98 /* NamiCustomerManager.m */,
|
|
86
|
-
EB1C9AF823BE9C5600CAD548 /* NamiPurchaseManagerBridge.m */,
|
|
87
103
|
EBEEAC0F243C29C800E01389 /* NamiMLManagerBridge.m */,
|
|
88
|
-
EB7B50CD243E314900EBA6B7 /* NamiEntitlementManagerBridge.m */,
|
|
89
104
|
134814211AA4EA7D00B7C361 /* Products */,
|
|
90
105
|
82475599A9F3B58440ACDC6E /* Frameworks */,
|
|
91
106
|
A17A44E9FF56BDEADE788165 /* Pods */,
|
|
@@ -109,6 +124,51 @@
|
|
|
109
124
|
path = Pods;
|
|
110
125
|
sourceTree = "<group>";
|
|
111
126
|
};
|
|
127
|
+
FA3AB38329E009D200FD2E8D /* NamiPaywallManager */ = {
|
|
128
|
+
isa = PBXGroup;
|
|
129
|
+
children = (
|
|
130
|
+
EB1C9AF923BE9C5600CAD548 /* NamiPaywallManagerBridge.m */,
|
|
131
|
+
FA3AB38429E009F300FD2E8D /* NamiPaywallManagerBridge.swift */,
|
|
132
|
+
);
|
|
133
|
+
name = NamiPaywallManager;
|
|
134
|
+
sourceTree = "<group>";
|
|
135
|
+
};
|
|
136
|
+
FA4CEE3E29DEE01E00058372 /* NamiPurchaseManager */ = {
|
|
137
|
+
isa = PBXGroup;
|
|
138
|
+
children = (
|
|
139
|
+
FA4CEE3C29DEE01600058372 /* NamiPurchaseManagerBridge.swift */,
|
|
140
|
+
EB1C9AF823BE9C5600CAD548 /* NamiPurchaseManagerBridge.m */,
|
|
141
|
+
);
|
|
142
|
+
name = NamiPurchaseManager;
|
|
143
|
+
sourceTree = "<group>";
|
|
144
|
+
};
|
|
145
|
+
FA8629A029DDA8A5000090C6 /* NamiEntitlementManager */ = {
|
|
146
|
+
isa = PBXGroup;
|
|
147
|
+
children = (
|
|
148
|
+
FA86299E29DDA881000090C6 /* NamiEntitlementManagerBridge.swift */,
|
|
149
|
+
EB7B50CD243E314900EBA6B7 /* NamiEntitlementManagerBridge.m */,
|
|
150
|
+
);
|
|
151
|
+
name = NamiEntitlementManager;
|
|
152
|
+
sourceTree = "<group>";
|
|
153
|
+
};
|
|
154
|
+
FADE7CFA29DD984E000BF262 /* NamiCampaignManager */ = {
|
|
155
|
+
isa = PBXGroup;
|
|
156
|
+
children = (
|
|
157
|
+
FAADDB5129D377560096591A /* NamiCampaignManagerBridge.m */,
|
|
158
|
+
FAADDB4D29D376590096591A /* NamiCampaignManagerBridge.swift */,
|
|
159
|
+
);
|
|
160
|
+
name = NamiCampaignManager;
|
|
161
|
+
sourceTree = "<group>";
|
|
162
|
+
};
|
|
163
|
+
FADE7CFB29DD9875000BF262 /* NamiCustomerManager */ = {
|
|
164
|
+
isa = PBXGroup;
|
|
165
|
+
children = (
|
|
166
|
+
FAD132F629D6BD5E001059A2 /* NamiCustomerManager.swift */,
|
|
167
|
+
EB75992024F031E900430D98 /* NamiCustomerManager.m */,
|
|
168
|
+
);
|
|
169
|
+
name = NamiCustomerManager;
|
|
170
|
+
sourceTree = "<group>";
|
|
171
|
+
};
|
|
112
172
|
/* End PBXGroup section */
|
|
113
173
|
|
|
114
174
|
/* Begin PBXNativeTarget section */
|
|
@@ -141,6 +201,7 @@
|
|
|
141
201
|
TargetAttributes = {
|
|
142
202
|
58B511DA1A9E6C8500147676 = {
|
|
143
203
|
CreatedOnToolsVersion = 6.1.1;
|
|
204
|
+
LastSwiftMigration = 1420;
|
|
144
205
|
};
|
|
145
206
|
};
|
|
146
207
|
};
|
|
@@ -192,12 +253,18 @@
|
|
|
192
253
|
isa = PBXSourcesBuildPhase;
|
|
193
254
|
buildActionMask = 2147483647;
|
|
194
255
|
files = (
|
|
256
|
+
FA3AB38529E009F300FD2E8D /* NamiPaywallManagerBridge.swift in Sources */,
|
|
195
257
|
EBC59E6023C7E2EC008A123A /* NamiAnalyticsEmitter.m in Sources */,
|
|
196
258
|
EBC59E5D23C5514B008A123A /* Nami.m in Sources */,
|
|
197
259
|
EB1C9AFB23BE9C5700CAD548 /* NamiPurchaseManagerBridge.m in Sources */,
|
|
198
260
|
EB1C9AFC23BE9C5700CAD548 /* NamiPaywallManagerBridge.m in Sources */,
|
|
199
261
|
EBC59E6323C7F634008A123A /* NamiBridgeUtil.m in Sources */,
|
|
262
|
+
FA4CEE3D29DEE01600058372 /* NamiPurchaseManagerBridge.swift in Sources */,
|
|
263
|
+
FA86299F29DDA881000090C6 /* NamiEntitlementManagerBridge.swift in Sources */,
|
|
264
|
+
FAD132F729D6BD5E001059A2 /* NamiCustomerManager.swift in Sources */,
|
|
200
265
|
B3E7B58A1CC2AC0600A0062D /* RNNami.m in Sources */,
|
|
266
|
+
FAADDB4F29D376590096591A /* NamiCampaignManagerBridge.swift in Sources */,
|
|
267
|
+
FAADDB5229D377560096591A /* NamiCampaignManagerBridge.m in Sources */,
|
|
201
268
|
EB75992124F031E900430D98 /* NamiCustomerManager.m in Sources */,
|
|
202
269
|
EB7B50CE243E314900EBA6B7 /* NamiEntitlementManagerBridge.m in Sources */,
|
|
203
270
|
EBEEAC10243C29C800E01389 /* NamiMLManagerBridge.m in Sources */,
|
|
@@ -230,7 +297,7 @@
|
|
|
230
297
|
COPY_PHASE_STRIP = NO;
|
|
231
298
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
232
299
|
ENABLE_TESTABILITY = YES;
|
|
233
|
-
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "
|
|
300
|
+
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
|
|
234
301
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
235
302
|
GCC_DYNAMIC_NO_PIC = NO;
|
|
236
303
|
GCC_NO_COMMON_BLOCKS = YES;
|
|
@@ -246,7 +313,7 @@
|
|
|
246
313
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
247
314
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
248
315
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
249
|
-
IPHONEOS_DEPLOYMENT_TARGET =
|
|
316
|
+
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
|
250
317
|
MTL_ENABLE_DEBUG_INFO = YES;
|
|
251
318
|
ONLY_ACTIVE_ARCH = YES;
|
|
252
319
|
SDKROOT = iphoneos;
|
|
@@ -275,7 +342,7 @@
|
|
|
275
342
|
COPY_PHASE_STRIP = YES;
|
|
276
343
|
ENABLE_NS_ASSERTIONS = NO;
|
|
277
344
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
278
|
-
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "
|
|
345
|
+
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
|
|
279
346
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
280
347
|
GCC_NO_COMMON_BLOCKS = YES;
|
|
281
348
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
@@ -284,7 +351,7 @@
|
|
|
284
351
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
285
352
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
286
353
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
287
|
-
IPHONEOS_DEPLOYMENT_TARGET =
|
|
354
|
+
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
|
288
355
|
MTL_ENABLE_DEBUG_INFO = NO;
|
|
289
356
|
SDKROOT = iphoneos;
|
|
290
357
|
VALIDATE_PRODUCT = YES;
|
|
@@ -295,6 +362,7 @@
|
|
|
295
362
|
isa = XCBuildConfiguration;
|
|
296
363
|
baseConfigurationReference = 5C0ED6F1EABFB69B20A67C29 /* Pods-RNNami.debug.xcconfig */;
|
|
297
364
|
buildSettings = {
|
|
365
|
+
CLANG_ENABLE_MODULES = YES;
|
|
298
366
|
HEADER_SEARCH_PATHS = (
|
|
299
367
|
"$(inherited)",
|
|
300
368
|
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
@@ -302,10 +370,14 @@
|
|
|
302
370
|
"$(SRCROOT)/../../react-native/React/**",
|
|
303
371
|
"$(SRCROOT)/../../react-native/React/**",
|
|
304
372
|
);
|
|
373
|
+
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
|
305
374
|
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
|
306
375
|
OTHER_LDFLAGS = "-ObjC";
|
|
307
376
|
PRODUCT_NAME = RNNami;
|
|
308
377
|
SKIP_INSTALL = YES;
|
|
378
|
+
SWIFT_OBJC_BRIDGING_HEADER = "RNNami-Bridging-Header.h";
|
|
379
|
+
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
|
380
|
+
SWIFT_VERSION = 5.0;
|
|
309
381
|
};
|
|
310
382
|
name = Debug;
|
|
311
383
|
};
|
|
@@ -313,6 +385,7 @@
|
|
|
313
385
|
isa = XCBuildConfiguration;
|
|
314
386
|
baseConfigurationReference = 90B290F36EAE177CDC017BA3 /* Pods-RNNami.release.xcconfig */;
|
|
315
387
|
buildSettings = {
|
|
388
|
+
CLANG_ENABLE_MODULES = YES;
|
|
316
389
|
HEADER_SEARCH_PATHS = (
|
|
317
390
|
"$(inherited)",
|
|
318
391
|
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
@@ -320,10 +393,13 @@
|
|
|
320
393
|
"$(SRCROOT)/../../react-native/React/**",
|
|
321
394
|
"$(SRCROOT)/../../react-native/React/**",
|
|
322
395
|
);
|
|
396
|
+
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
|
323
397
|
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
|
324
398
|
OTHER_LDFLAGS = "-ObjC";
|
|
325
399
|
PRODUCT_NAME = RNNami;
|
|
326
400
|
SKIP_INSTALL = YES;
|
|
401
|
+
SWIFT_OBJC_BRIDGING_HEADER = "RNNami-Bridging-Header.h";
|
|
402
|
+
SWIFT_VERSION = 5.0;
|
|
327
403
|
};
|
|
328
404
|
name = Release;
|
|
329
405
|
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<Scheme
|
|
3
|
+
LastUpgradeVersion = "1420"
|
|
4
|
+
version = "1.3">
|
|
5
|
+
<BuildAction
|
|
6
|
+
parallelizeBuildables = "YES"
|
|
7
|
+
buildImplicitDependencies = "YES">
|
|
8
|
+
<BuildActionEntries>
|
|
9
|
+
<BuildActionEntry
|
|
10
|
+
buildForTesting = "YES"
|
|
11
|
+
buildForRunning = "YES"
|
|
12
|
+
buildForProfiling = "YES"
|
|
13
|
+
buildForArchiving = "YES"
|
|
14
|
+
buildForAnalyzing = "YES">
|
|
15
|
+
<BuildableReference
|
|
16
|
+
BuildableIdentifier = "primary"
|
|
17
|
+
BlueprintIdentifier = "58B511DA1A9E6C8500147676"
|
|
18
|
+
BuildableName = "libRNNami.a"
|
|
19
|
+
BlueprintName = "RNNami"
|
|
20
|
+
ReferencedContainer = "container:RNNami.xcodeproj">
|
|
21
|
+
</BuildableReference>
|
|
22
|
+
</BuildActionEntry>
|
|
23
|
+
</BuildActionEntries>
|
|
24
|
+
</BuildAction>
|
|
25
|
+
<TestAction
|
|
26
|
+
buildConfiguration = "Debug"
|
|
27
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
28
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
29
|
+
shouldUseLaunchSchemeArgsEnv = "YES">
|
|
30
|
+
<Testables>
|
|
31
|
+
</Testables>
|
|
32
|
+
</TestAction>
|
|
33
|
+
<LaunchAction
|
|
34
|
+
buildConfiguration = "Debug"
|
|
35
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
36
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
37
|
+
launchStyle = "0"
|
|
38
|
+
useCustomWorkingDirectory = "NO"
|
|
39
|
+
ignoresPersistentStateOnLaunch = "NO"
|
|
40
|
+
debugDocumentVersioning = "YES"
|
|
41
|
+
debugServiceExtension = "internal"
|
|
42
|
+
allowLocationSimulation = "YES">
|
|
43
|
+
</LaunchAction>
|
|
44
|
+
<ProfileAction
|
|
45
|
+
buildConfiguration = "Release"
|
|
46
|
+
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
47
|
+
savedToolIdentifier = ""
|
|
48
|
+
useCustomWorkingDirectory = "NO"
|
|
49
|
+
debugDocumentVersioning = "YES">
|
|
50
|
+
<MacroExpansion>
|
|
51
|
+
<BuildableReference
|
|
52
|
+
BuildableIdentifier = "primary"
|
|
53
|
+
BlueprintIdentifier = "58B511DA1A9E6C8500147676"
|
|
54
|
+
BuildableName = "libRNNami.a"
|
|
55
|
+
BlueprintName = "RNNami"
|
|
56
|
+
ReferencedContainer = "container:RNNami.xcodeproj">
|
|
57
|
+
</BuildableReference>
|
|
58
|
+
</MacroExpansion>
|
|
59
|
+
</ProfileAction>
|
|
60
|
+
<AnalyzeAction
|
|
61
|
+
buildConfiguration = "Debug">
|
|
62
|
+
</AnalyzeAction>
|
|
63
|
+
<ArchiveAction
|
|
64
|
+
buildConfiguration = "Release"
|
|
65
|
+
revealArchiveInOrganizer = "YES">
|
|
66
|
+
</ArchiveAction>
|
|
67
|
+
</Scheme>
|
package/package.json
CHANGED
|
@@ -13,12 +13,12 @@ Pod::Spec.new do |s|
|
|
|
13
13
|
s.homepage = package['homepage']
|
|
14
14
|
s.license = package['license']
|
|
15
15
|
|
|
16
|
-
s.platform = :ios, "
|
|
16
|
+
s.platform = :ios, "14.0"
|
|
17
17
|
s.source = { :git => "https://github.com/namiml/react-native-nami-sdk.git", :tag => "#{s.version}" }
|
|
18
|
-
s.source_files = "ios/**/*.{h,m}"
|
|
18
|
+
s.source_files = "ios/**/*.{h,m,swift}"
|
|
19
19
|
s.requires_arc = true
|
|
20
20
|
|
|
21
|
-
s.dependency 'Nami', '
|
|
21
|
+
s.dependency 'Nami', '3.0.8'
|
|
22
22
|
s.dependency 'React'
|
|
23
23
|
|
|
24
24
|
end
|
package/src/Nami.d.ts
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
export const Nami: {
|
|
2
|
+
configure: (
|
|
3
|
+
config: NamiConfiguration,
|
|
4
|
+
resultCallback?: (resultObject: { success: boolean }) => void
|
|
5
|
+
) => void;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export type NamiConfiguration = {
|
|
9
|
+
"appPlatformID-apple": string;
|
|
10
|
+
"appPlatformID-android": string;
|
|
11
|
+
logLevel: string;
|
|
12
|
+
namiLanguageCode?: NamiLanguageCodes;
|
|
13
|
+
bypassStore?: boolean;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export type NamiLanguageCodes =
|
|
17
|
+
| "af"
|
|
18
|
+
| "ar"
|
|
19
|
+
| "ar-dz"
|
|
20
|
+
| "ast"
|
|
21
|
+
| "az"
|
|
22
|
+
| "bg"
|
|
23
|
+
| "be"
|
|
24
|
+
| "bn"
|
|
25
|
+
| "br"
|
|
26
|
+
| "bs"
|
|
27
|
+
| "ca"
|
|
28
|
+
| "cs"
|
|
29
|
+
| "cy"
|
|
30
|
+
| "da"
|
|
31
|
+
| "de"
|
|
32
|
+
| "dsb"
|
|
33
|
+
| "el"
|
|
34
|
+
| "en"
|
|
35
|
+
| "en-au"
|
|
36
|
+
| "en-gb"
|
|
37
|
+
| "eo"
|
|
38
|
+
| "es"
|
|
39
|
+
| "es-ar"
|
|
40
|
+
| "es-co"
|
|
41
|
+
| "es-mx"
|
|
42
|
+
| "es-ni"
|
|
43
|
+
| "es-ve"
|
|
44
|
+
| "et"
|
|
45
|
+
| "eu"
|
|
46
|
+
| "fa"
|
|
47
|
+
| "fi"
|
|
48
|
+
| "fr"
|
|
49
|
+
| "fy"
|
|
50
|
+
| "ga"
|
|
51
|
+
| "gd"
|
|
52
|
+
| "gl"
|
|
53
|
+
| "he"
|
|
54
|
+
| "hi"
|
|
55
|
+
| "hr"
|
|
56
|
+
| "hsb"
|
|
57
|
+
| "hu"
|
|
58
|
+
| "hy"
|
|
59
|
+
| "ia"
|
|
60
|
+
| "id"
|
|
61
|
+
| "ig"
|
|
62
|
+
| "io"
|
|
63
|
+
| "is"
|
|
64
|
+
| "it"
|
|
65
|
+
| "ja"
|
|
66
|
+
| "ka"
|
|
67
|
+
| "kab"
|
|
68
|
+
| "kk"
|
|
69
|
+
| "km"
|
|
70
|
+
| "kn"
|
|
71
|
+
| "ko"
|
|
72
|
+
| "ky"
|
|
73
|
+
| "lb"
|
|
74
|
+
| "lt"
|
|
75
|
+
| "lv"
|
|
76
|
+
| "mk"
|
|
77
|
+
| "ml"
|
|
78
|
+
| "mn"
|
|
79
|
+
| "mr"
|
|
80
|
+
| "my"
|
|
81
|
+
| "nb"
|
|
82
|
+
| "ne"
|
|
83
|
+
| "nl"
|
|
84
|
+
| "nn"
|
|
85
|
+
| "os"
|
|
86
|
+
| "pa"
|
|
87
|
+
| "pl"
|
|
88
|
+
| "pt"
|
|
89
|
+
| "pt-br"
|
|
90
|
+
| "ro"
|
|
91
|
+
| "ru"
|
|
92
|
+
| "sk"
|
|
93
|
+
| "sl"
|
|
94
|
+
| "sq"
|
|
95
|
+
| "sr"
|
|
96
|
+
| "sr-latn"
|
|
97
|
+
| "sv"
|
|
98
|
+
| "sw"
|
|
99
|
+
| "ta"
|
|
100
|
+
| "te"
|
|
101
|
+
| "tg"
|
|
102
|
+
| "th"
|
|
103
|
+
| "tk"
|
|
104
|
+
| "tr"
|
|
105
|
+
| "tt"
|
|
106
|
+
| "udm"
|
|
107
|
+
| "uk"
|
|
108
|
+
| "ur"
|
|
109
|
+
| "uz"
|
|
110
|
+
| "vi"
|
|
111
|
+
| "zh-hans"
|
|
112
|
+
| "zh-hant";
|
package/src/Nami.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { EmitterSubscription } from "react-native";
|
|
2
|
+
import { NamiPurchase } from "./NamiPurchaseManager";
|
|
3
|
+
import { NamiPaywallAction } from "./NamiPaywallManager";
|
|
4
|
+
|
|
5
|
+
export const NamiCampaignManager: {
|
|
6
|
+
allCampaigns: () => Promise<Array<NamiCampaign>>;
|
|
7
|
+
isCampaignAvailable: (label?: string) => boolean;
|
|
8
|
+
launch: (
|
|
9
|
+
label?: string,
|
|
10
|
+
resultCallback?: (success: boolean, error?: LaunchCampaignError) => void,
|
|
11
|
+
actionCallback?: (
|
|
12
|
+
action: NamiPaywallAction,
|
|
13
|
+
skuId?: string,
|
|
14
|
+
purchaseError?: string,
|
|
15
|
+
purchases?: NamiPurchase[]
|
|
16
|
+
) => void
|
|
17
|
+
) => void;
|
|
18
|
+
refresh: () => void;
|
|
19
|
+
registerAvailableCampaignsHandler: (
|
|
20
|
+
callback: (availableCampaigns: NamiCampaign[]) => void
|
|
21
|
+
) => EmitterSubscription["remove"];
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export type NamiCampaign = {
|
|
25
|
+
id: string;
|
|
26
|
+
rule: string;
|
|
27
|
+
segment: string;
|
|
28
|
+
paywall: string;
|
|
29
|
+
type: NamiCampaignRuleType;
|
|
30
|
+
value?: string | null;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export enum NamiCampaignRuleType {
|
|
34
|
+
DEFAULT = "default",
|
|
35
|
+
LABEL = "label",
|
|
36
|
+
UNKNOWN = "unknown",
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export enum LaunchCampaignError {
|
|
40
|
+
DEFAULT_CAMPAIGN_NOT_FOUND = 0,
|
|
41
|
+
LABELED_CAMPAIGN_NOT_FOUND = 1,
|
|
42
|
+
CAMPAIGN_DATA_NOT_FOUND = 2,
|
|
43
|
+
PAYWALL_ALREADY_DISPLAYED = 3,
|
|
44
|
+
SDK_NOT_INITIALIZED = 4,
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export enum LaunchCampaignResultAction {
|
|
48
|
+
FAILURE = "FAILURE",
|
|
49
|
+
SUCCESS = "SUCCESS",
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export type FailureResultObject = {
|
|
53
|
+
error: string;
|
|
54
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { NativeModules, NativeEventEmitter } from "react-native";
|
|
2
|
+
|
|
3
|
+
export const { RNNamiCampaignManager } = NativeModules;
|
|
4
|
+
|
|
5
|
+
export const NamiCampaignManager = {
|
|
6
|
+
launchSubscription: undefined,
|
|
7
|
+
emitter: new NativeEventEmitter(RNNamiCampaignManager),
|
|
8
|
+
...RNNamiCampaignManager,
|
|
9
|
+
launch(label, resultCallback, actionCallback) {
|
|
10
|
+
this.launchSubscription?.remove();
|
|
11
|
+
this.launchSubscription = this.emitter.addListener(
|
|
12
|
+
"ResultCampaign",
|
|
13
|
+
(body) => {
|
|
14
|
+
var action = body.action;
|
|
15
|
+
|
|
16
|
+
if (action.startsWith("NAMI_")) {
|
|
17
|
+
action = action.substring(5, action.length);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
var skuId = body.skuId;
|
|
21
|
+
var purchaseError = body.purchaseError;
|
|
22
|
+
var purchases = body.purchases;
|
|
23
|
+
actionCallback(action, skuId, purchaseError, purchases);
|
|
24
|
+
}
|
|
25
|
+
);
|
|
26
|
+
RNNamiCampaignManager.launch(
|
|
27
|
+
label ?? null,
|
|
28
|
+
resultCallback ?? (() => {}),
|
|
29
|
+
actionCallback ?? (() => {})
|
|
30
|
+
);
|
|
31
|
+
},
|
|
32
|
+
isCampaignAvailable: (label) => {
|
|
33
|
+
return RNNamiCampaignManager.isCampaignAvailable(label ?? null);
|
|
34
|
+
},
|
|
35
|
+
registerAvailableCampaignsHandler(callback) {
|
|
36
|
+
const subscription = this.emitter.addListener(
|
|
37
|
+
"AvailableCampaignsChanged",
|
|
38
|
+
callback
|
|
39
|
+
);
|
|
40
|
+
RNNamiCampaignManager.registerAvailableCampaignsHandler();
|
|
41
|
+
return subscription.remove;
|
|
42
|
+
},
|
|
43
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { EmitterSubscription } from "react-native";
|
|
2
|
+
|
|
3
|
+
export const NamiCustomerManager: {
|
|
4
|
+
setCustomerAttribute: (key: string, value: string) => void;
|
|
5
|
+
getCustomerAttribute: (key: string) => Promise<string | undefined>;
|
|
6
|
+
clearCustomerAttribute: (key: string) => void;
|
|
7
|
+
clearAllCustomerAttributes: () => void;
|
|
8
|
+
journeyState: () => Promise<CustomerJourneyState | undefined>;
|
|
9
|
+
isLoggedIn: () => Promise<boolean>;
|
|
10
|
+
loggedInId: () => Promise<string | undefined>;
|
|
11
|
+
deviceId: () => Promise<string>;
|
|
12
|
+
login: (
|
|
13
|
+
customerId: string,
|
|
14
|
+
callback?: (success: boolean, error?: number) => void
|
|
15
|
+
) => void;
|
|
16
|
+
logout: (callback?: (success: boolean, error?: number) => void) => void;
|
|
17
|
+
registerJourneyStateHandler: (
|
|
18
|
+
callback: (journeyState: CustomerJourneyState) => void
|
|
19
|
+
) => EmitterSubscription["remove"];
|
|
20
|
+
registerAccountStateHandler: (
|
|
21
|
+
callback: (
|
|
22
|
+
action: AccountStateAction,
|
|
23
|
+
success: boolean,
|
|
24
|
+
error?: number
|
|
25
|
+
) => void
|
|
26
|
+
) => EmitterSubscription["remove"];
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export type CustomerJourneyState = {
|
|
30
|
+
formerSubscriber: boolean;
|
|
31
|
+
inGracePeriod: boolean;
|
|
32
|
+
inTrialPeriod: boolean;
|
|
33
|
+
inIntroOfferPeriod: boolean;
|
|
34
|
+
isCancelled: boolean;
|
|
35
|
+
inPause: boolean;
|
|
36
|
+
inAccountHold: boolean;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export type AccountStateAction = "login" | "logout";
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { NativeModules, NativeEventEmitter, Platform } from "react-native";
|
|
2
|
+
|
|
3
|
+
export const { RNNamiCustomerManager } = NativeModules;
|
|
4
|
+
|
|
5
|
+
export const NamiCustomerManager = {
|
|
6
|
+
emitter: new NativeEventEmitter(RNNamiCustomerManager),
|
|
7
|
+
...RNNamiCustomerManager,
|
|
8
|
+
login: (customerId, callback) => {
|
|
9
|
+
if (Platform.OS === "ios") {
|
|
10
|
+
RNNamiCustomerManager.login(customerId, callback ?? (() => {}));
|
|
11
|
+
} else {
|
|
12
|
+
RNNamiCustomerManager.login(customerId);
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
logout: (callback) => {
|
|
16
|
+
if (Platform.OS === "ios") {
|
|
17
|
+
RNNamiCustomerManager.logout(callback ?? (() => {}));
|
|
18
|
+
} else {
|
|
19
|
+
RNNamiCustomerManager.logout();
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
registerJourneyStateHandler(callback) {
|
|
23
|
+
const subscription = this.emitter.addListener(
|
|
24
|
+
"JourneyStateChanged",
|
|
25
|
+
callback
|
|
26
|
+
);
|
|
27
|
+
RNNamiCustomerManager.registerJourneyStateHandler();
|
|
28
|
+
return subscription.remove;
|
|
29
|
+
},
|
|
30
|
+
registerAccountStateHandler(callback) {
|
|
31
|
+
const subscription = this.emitter.addListener(
|
|
32
|
+
"AccountStateChanged",
|
|
33
|
+
(body) => {
|
|
34
|
+
var action = body.action.toLowerCase();
|
|
35
|
+
var error = body.error;
|
|
36
|
+
var success = body.success;
|
|
37
|
+
callback(action, success, error);
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
RNNamiCustomerManager.registerAccountStateHandler();
|
|
41
|
+
return subscription.remove;
|
|
42
|
+
},
|
|
43
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { EmitterSubscription } from "react-native";
|
|
2
|
+
import { NamiPurchase } from "./NamiPurchaseManager";
|
|
3
|
+
import { NamiSKU } from "./types";
|
|
4
|
+
|
|
5
|
+
export const NamiEntitlementManager: {
|
|
6
|
+
active: () => Promise<Array<NamiEntitlement>>;
|
|
7
|
+
isEntitlementActive: (label?: string) => boolean;
|
|
8
|
+
refresh: (
|
|
9
|
+
resultCallback?: (entitlements?: NamiEntitlement[]) => void
|
|
10
|
+
) => void;
|
|
11
|
+
registerActiveEntitlementsHandler: (
|
|
12
|
+
callback: (activeEntitlements: NamiEntitlement[]) => void
|
|
13
|
+
) => EmitterSubscription["remove"];
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export type NamiEntitlement = {
|
|
17
|
+
activePurchases: NamiPurchase[];
|
|
18
|
+
desc: string;
|
|
19
|
+
name: string;
|
|
20
|
+
namiId: string;
|
|
21
|
+
purchasedSkus: NamiSKU[];
|
|
22
|
+
referenceId: string;
|
|
23
|
+
relatedSkus: NamiSKU[];
|
|
24
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { NativeModules, NativeEventEmitter, Platform } from "react-native";
|
|
2
|
+
|
|
3
|
+
export const { RNNamiEntitlementManager } = NativeModules;
|
|
4
|
+
|
|
5
|
+
export const NamiEntitlementManager = {
|
|
6
|
+
emitter: new NativeEventEmitter(RNNamiEntitlementManager),
|
|
7
|
+
...RNNamiEntitlementManager,
|
|
8
|
+
refresh(resultCallback) {
|
|
9
|
+
if (Platform.OS === "android") {
|
|
10
|
+
RNNamiEntitlementManager.refresh(resultCallback ?? (() => {}));
|
|
11
|
+
} else {
|
|
12
|
+
RNNamiEntitlementManager.refresh();
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
registerActiveEntitlementsHandler(callback) {
|
|
16
|
+
const subscription = this.emitter.addListener(
|
|
17
|
+
"EntitlementsChanged",
|
|
18
|
+
callback
|
|
19
|
+
);
|
|
20
|
+
RNNamiEntitlementManager.registerActiveEntitlementsHandler();
|
|
21
|
+
return subscription.remove;
|
|
22
|
+
},
|
|
23
|
+
};
|