react-native-repro 3.3.1 → 3.7.0
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/React-Repro.podspec +4 -6
- package/android/src/main/java/io/repro/android/reactbridge/ReproReactBridgeModule.java +53 -4
- package/index.js +41 -3
- package/ios/RPRReproReactBridge.m +51 -6
- package/package.json +1 -1
- package/repro-version.json +3 -3
- package/sdk-android/io/repro/repro-android-sdk/5.6.0/repro-android-sdk-5.6.0.aar +0 -0
- package/sdk-android/io/repro/repro-android-sdk/5.6.0/repro-android-sdk-5.6.0.aar.md5 +1 -0
- package/sdk-android/io/repro/repro-android-sdk/5.6.0/repro-android-sdk-5.6.0.aar.sha1 +1 -0
- package/sdk-android/io/repro/repro-android-sdk/{5.3.0/repro-android-sdk-5.3.0.pom → 5.6.0/repro-android-sdk-5.6.0.pom} +1 -1
- package/sdk-android/io/repro/repro-android-sdk/5.6.0/repro-android-sdk-5.6.0.pom.md5 +1 -0
- package/sdk-android/io/repro/repro-android-sdk/5.6.0/repro-android-sdk-5.6.0.pom.sha1 +1 -0
- package/sdk-android/io/repro/repro-android-sdk/maven-metadata.xml +3 -3
- package/sdk-android/io/repro/repro-android-sdk/maven-metadata.xml.md5 +1 -1
- package/sdk-android/io/repro/repro-android-sdk/maven-metadata.xml.sha1 +1 -1
- package/sdk-ios/Repro.xcframework/Info.plist +43 -0
- package/sdk-ios/{Repro.framework → Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework}/Headers/RPREventProperties.h +0 -0
- package/sdk-ios/{Repro.framework → Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework}/Headers/RPRNewsFeedEntry.h +11 -0
- package/sdk-ios/{Repro.framework → Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework}/Headers/RPRRemoteConfig.h +0 -0
- package/sdk-ios/{Repro.framework → Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework}/Headers/RPRUserProfileGender.h +0 -0
- package/sdk-ios/{Repro.framework → Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework}/Headers/Repro.h +11 -0
- package/sdk-ios/{Repro.framework → Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework}/Info.plist +0 -0
- package/sdk-ios/{Repro.framework → Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework}/Modules/module.modulemap +0 -0
- package/sdk-ios/Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework/Repro +0 -0
- package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Headers/RPREventProperties.h +90 -0
- package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Headers/RPRNewsFeedEntry.h +40 -0
- package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Headers/RPRRemoteConfig.h +119 -0
- package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Headers/RPRUserProfileGender.h +14 -0
- package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Headers/Repro.h +166 -0
- package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Info.plist +0 -0
- package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Modules/module.modulemap +6 -0
- package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Repro +0 -0
- package/sdk-android/io/repro/repro-android-sdk/5.3.0/repro-android-sdk-5.3.0.aar +0 -0
- package/sdk-android/io/repro/repro-android-sdk/5.3.0/repro-android-sdk-5.3.0.aar.md5 +0 -1
- package/sdk-android/io/repro/repro-android-sdk/5.3.0/repro-android-sdk-5.3.0.aar.sha1 +0 -1
- package/sdk-android/io/repro/repro-android-sdk/5.3.0/repro-android-sdk-5.3.0.pom.md5 +0 -1
- package/sdk-android/io/repro/repro-android-sdk/5.3.0/repro-android-sdk-5.3.0.pom.sha1 +0 -1
- package/sdk-ios/Repro.framework/Repro +0 -0
package/React-Repro.podspec
CHANGED
|
@@ -10,16 +10,14 @@ Pod::Spec.new do |s|
|
|
|
10
10
|
s.license = "See ./LICENSE"
|
|
11
11
|
|
|
12
12
|
s.author = { package["author"]["name"] => package["author"]["email"] }
|
|
13
|
-
s.platforms = { :ios => "
|
|
13
|
+
s.platforms = { :ios => "10.0" }
|
|
14
14
|
s.source = { :git => "https://github.com/reproio/repro-ios-sdk", :tag => "local_link_only" }
|
|
15
15
|
|
|
16
|
-
s.
|
|
17
|
-
s.source_files = "sdk-ios/Repro.framework/Headers/*.h", "ios/*.{h,m}"
|
|
16
|
+
s.source_files = "ios/*.{h,m}"
|
|
18
17
|
|
|
19
|
-
s.vendored_frameworks = "sdk-ios/Repro.
|
|
18
|
+
s.vendored_frameworks = "sdk-ios/Repro.xcframework"
|
|
20
19
|
|
|
21
|
-
s.frameworks = '
|
|
22
|
-
s.libraries = 'z'
|
|
20
|
+
s.frameworks = 'UIKit', 'CoreGraphics', 'QuartzCore', 'SystemConfiguration', 'WebKit', 'UserNotifications'
|
|
23
21
|
|
|
24
22
|
s.dependency "React"
|
|
25
23
|
end
|
|
@@ -15,7 +15,9 @@ import com.facebook.react.bridge.WritableNativeArray;
|
|
|
15
15
|
import com.facebook.react.bridge.ReadableArray;
|
|
16
16
|
import com.facebook.react.bridge.Arguments;
|
|
17
17
|
|
|
18
|
+
import java.util.EnumSet;
|
|
18
19
|
import java.util.HashMap;
|
|
20
|
+
import java.util.Iterator;
|
|
19
21
|
import java.util.Map;
|
|
20
22
|
import java.util.ArrayList;
|
|
21
23
|
import java.util.List;
|
|
@@ -26,6 +28,7 @@ import java.util.Date;
|
|
|
26
28
|
import org.json.JSONObject;
|
|
27
29
|
|
|
28
30
|
import io.repro.android.Repro;
|
|
31
|
+
import io.repro.android.newsfeed.NewsFeedCampaignType;
|
|
29
32
|
import io.repro.android.tracking.AddPaymentInfoProperties;
|
|
30
33
|
import io.repro.android.tracking.AddToCartProperties;
|
|
31
34
|
import io.repro.android.tracking.AddToWishlistProperties;
|
|
@@ -46,6 +49,12 @@ public class ReproReactBridgeModule extends ReactContextBaseJavaModule {
|
|
|
46
49
|
public static final int GENDER_MALE = 1;
|
|
47
50
|
public static final int GENDER_FEMALE = 2;
|
|
48
51
|
|
|
52
|
+
public static final int CAMPAIGN_TYPE_UNKNOWN = 0;
|
|
53
|
+
public static final int CAMPAIGN_TYPE_PUSH_NOTIFICATION = (1 << 0);
|
|
54
|
+
public static final int CAMPAIGN_TYPE_IN_APP_MESSAGE = (1 << 1);
|
|
55
|
+
public static final int CAMPAIGN_TYPE_WEB_MESSAGE = (1 << 2);
|
|
56
|
+
public static final int CAMPAIGN_TYPE_ALL = (1 << 3);
|
|
57
|
+
|
|
49
58
|
private final ReactApplicationContext reactContext;
|
|
50
59
|
|
|
51
60
|
public ReproReactBridgeModule(ReactApplicationContext reactContext) {
|
|
@@ -71,6 +80,12 @@ public class ReproReactBridgeModule extends ReactContextBaseJavaModule {
|
|
|
71
80
|
constants.put("LOGLEVEL_WARN", Log.WARN);
|
|
72
81
|
constants.put("LOGLEVEL_ERROR", Log.ERROR);
|
|
73
82
|
|
|
83
|
+
constants.put("CAMPAIGN_TYPE_UNKNOWN", CAMPAIGN_TYPE_UNKNOWN);
|
|
84
|
+
constants.put("CAMPAIGN_TYPE_PUSH_NOTIFICATION", CAMPAIGN_TYPE_PUSH_NOTIFICATION);
|
|
85
|
+
constants.put("CAMPAIGN_TYPE_IN_APP_MESSAGE", CAMPAIGN_TYPE_IN_APP_MESSAGE);
|
|
86
|
+
constants.put("CAMPAIGN_TYPE_WEB_MESSAGE", CAMPAIGN_TYPE_WEB_MESSAGE);
|
|
87
|
+
constants.put("CAMPAIGN_TYPE_ALL", CAMPAIGN_TYPE_ALL);
|
|
88
|
+
|
|
74
89
|
return constants;
|
|
75
90
|
}
|
|
76
91
|
|
|
@@ -347,6 +362,7 @@ public class ReproReactBridgeModule extends ReactContextBaseJavaModule {
|
|
|
347
362
|
entryMap.putString("title", entry.title);
|
|
348
363
|
entryMap.putString("summary", entry.summary);
|
|
349
364
|
entryMap.putString("body", entry.body);
|
|
365
|
+
entryMap.putInt("campaign_type", convertCampaignTypeToInt(entry.campaignType));
|
|
350
366
|
|
|
351
367
|
entryMap.putBoolean("shown", entry.shown);
|
|
352
368
|
entryMap.putBoolean("read", entry.read);
|
|
@@ -363,9 +379,11 @@ public class ReproReactBridgeModule extends ReactContextBaseJavaModule {
|
|
|
363
379
|
}
|
|
364
380
|
|
|
365
381
|
@ReactMethod
|
|
366
|
-
public void getNewsFeeds(final int limit, Callback callback) {
|
|
382
|
+
public void getNewsFeeds(final int limit, final int campaignType, Callback callback) {
|
|
383
|
+
NewsFeedCampaignType type = convertCampaignTypeFromInt(campaignType);
|
|
384
|
+
|
|
367
385
|
try {
|
|
368
|
-
callback.invoke(null, toWritableArray(Repro.getNewsFeeds(limit)));
|
|
386
|
+
callback.invoke(null, toWritableArray(Repro.getNewsFeeds(limit, type)));
|
|
369
387
|
} catch (Exception e) {
|
|
370
388
|
WritableMap entryMap = Arguments.createMap();
|
|
371
389
|
entryMap.putString("message", e.getMessage());
|
|
@@ -374,9 +392,11 @@ public class ReproReactBridgeModule extends ReactContextBaseJavaModule {
|
|
|
374
392
|
}
|
|
375
393
|
|
|
376
394
|
@ReactMethod
|
|
377
|
-
public void getNewsFeedsFor(final int limit, final int offsetID, Callback callback) {
|
|
395
|
+
public void getNewsFeedsFor(final int limit, final int offsetID, final int campaignType, Callback callback) {
|
|
396
|
+
NewsFeedCampaignType type = convertCampaignTypeFromInt(campaignType);
|
|
397
|
+
|
|
378
398
|
try {
|
|
379
|
-
callback.invoke(null, toWritableArray(Repro.getNewsFeeds(limit, offsetID)));
|
|
399
|
+
callback.invoke(null, toWritableArray(Repro.getNewsFeeds(limit, offsetID, type)));
|
|
380
400
|
} catch (Exception e) {
|
|
381
401
|
WritableMap entryMap = Arguments.createMap();
|
|
382
402
|
entryMap.putString("message", e.getMessage());
|
|
@@ -402,6 +422,35 @@ public class ReproReactBridgeModule extends ReactContextBaseJavaModule {
|
|
|
402
422
|
callback.invoke(error);
|
|
403
423
|
}
|
|
404
424
|
}
|
|
425
|
+
|
|
426
|
+
private NewsFeedCampaignType convertCampaignTypeFromInt(int type) {
|
|
427
|
+
switch (type) {
|
|
428
|
+
case CAMPAIGN_TYPE_PUSH_NOTIFICATION:
|
|
429
|
+
return NewsFeedCampaignType.PushNotification;
|
|
430
|
+
case CAMPAIGN_TYPE_IN_APP_MESSAGE:
|
|
431
|
+
return NewsFeedCampaignType.InAppMessage;
|
|
432
|
+
case CAMPAIGN_TYPE_WEB_MESSAGE:
|
|
433
|
+
return NewsFeedCampaignType.WebMessage;
|
|
434
|
+
case CAMPAIGN_TYPE_ALL:
|
|
435
|
+
return NewsFeedCampaignType.All;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
return NewsFeedCampaignType.Unknown;
|
|
439
|
+
}
|
|
440
|
+
private int convertCampaignTypeToInt(NewsFeedCampaignType type) {
|
|
441
|
+
switch (type.toString()) {
|
|
442
|
+
case "push_notification":
|
|
443
|
+
return CAMPAIGN_TYPE_PUSH_NOTIFICATION;
|
|
444
|
+
case "in_app_message":
|
|
445
|
+
return CAMPAIGN_TYPE_IN_APP_MESSAGE;
|
|
446
|
+
case "web_message":
|
|
447
|
+
return CAMPAIGN_TYPE_WEB_MESSAGE;
|
|
448
|
+
case "all":
|
|
449
|
+
return CAMPAIGN_TYPE_ALL;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
return CAMPAIGN_TYPE_UNKNOWN;
|
|
453
|
+
}
|
|
405
454
|
}
|
|
406
455
|
|
|
407
456
|
|
package/index.js
CHANGED
|
@@ -15,6 +15,7 @@ class NewsFeedEntry {
|
|
|
15
15
|
this.title = value["title"];
|
|
16
16
|
this.summary = value["summary"];
|
|
17
17
|
this.body = safeString(value["body"]);
|
|
18
|
+
this.campaignType = value["campaign_type"];
|
|
18
19
|
this.shown = value["shown"];
|
|
19
20
|
this.read = value["read"];
|
|
20
21
|
|
|
@@ -27,10 +28,11 @@ class NewsFeedEntry {
|
|
|
27
28
|
toJson() {
|
|
28
29
|
return {
|
|
29
30
|
"newsfeed_id": this.id,
|
|
30
|
-
"
|
|
31
|
+
"device_id": this.deviceID,
|
|
31
32
|
"title": this.title,
|
|
32
33
|
"summary": this.summary,
|
|
33
34
|
"body": this.body,
|
|
35
|
+
"campaign_type": this.campaignType,
|
|
34
36
|
"shown": this.shown,
|
|
35
37
|
"read": this.read,
|
|
36
38
|
"delivered_at": this.deliveredAt,
|
|
@@ -42,7 +44,25 @@ class NewsFeedEntry {
|
|
|
42
44
|
|
|
43
45
|
const NewsFeedModule = {
|
|
44
46
|
getNewsFeeds: (limit, callback) => {
|
|
45
|
-
NativeModules.Repro.getNewsFeeds(limit, (error, items) => {
|
|
47
|
+
NativeModules.Repro.getNewsFeeds(limit, NativeModules.Repro.CAMPAIGN_TYPE_PUSH_NOTIFICATION, (error, items) => {
|
|
48
|
+
if (!callback) return;
|
|
49
|
+
if (!items) {
|
|
50
|
+
callback(null, []);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const newsFeeds = [];
|
|
55
|
+
|
|
56
|
+
for (const item of items) {
|
|
57
|
+
newsFeeds.push(new NewsFeedEntry(item));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
callback(error, newsFeeds);
|
|
61
|
+
})
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
getNewsFeedsWithCampaignType: (limit, campaignType, callback) => {
|
|
65
|
+
NativeModules.Repro.getNewsFeeds(limit, campaignType, (error, items) => {
|
|
46
66
|
if (!callback) return;
|
|
47
67
|
if (!items) {
|
|
48
68
|
callback(null, []);
|
|
@@ -60,7 +80,25 @@ const NewsFeedModule = {
|
|
|
60
80
|
},
|
|
61
81
|
|
|
62
82
|
getNewsFeedsFor: (limit, offsetID, callback) => {
|
|
63
|
-
NativeModules.Repro.getNewsFeedsFor(limit, offsetID, (error, items) => {
|
|
83
|
+
NativeModules.Repro.getNewsFeedsFor(limit, offsetID, NativeModules.Repro.CAMPAIGN_TYPE_PUSH_NOTIFICATION, (error, items) => {
|
|
84
|
+
if (!callback) return;
|
|
85
|
+
if (!items) {
|
|
86
|
+
callback(null, []);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const newsFeeds = [];
|
|
91
|
+
|
|
92
|
+
for (const item of items) {
|
|
93
|
+
newsFeeds.push(new NewsFeedEntry(item));
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
callback(error, newsFeeds);
|
|
97
|
+
})
|
|
98
|
+
},
|
|
99
|
+
|
|
100
|
+
getNewsFeedsWithCampaignTypeFor: (limit, offsetID, campaignType, callback) => {
|
|
101
|
+
NativeModules.Repro.getNewsFeedsFor(limit, offsetID, campaignType, (error, items) => {
|
|
64
102
|
if (!callback) return;
|
|
65
103
|
if (!items) {
|
|
66
104
|
callback(null, []);
|
|
@@ -61,6 +61,15 @@ safe_value(id value)
|
|
|
61
61
|
RPRRemoteConfigFetchStatusTimeoutReached, integerValue)
|
|
62
62
|
@end
|
|
63
63
|
|
|
64
|
+
@implementation RCTConvert (RPRCampaignType)
|
|
65
|
+
RCT_ENUM_CONVERTER(RPRCampaignType, (@{
|
|
66
|
+
@"CAMPAIGN_TYPE_UNKNOWN" : @(RPRCampaignTypeUnknown),
|
|
67
|
+
@"CAMPAIGN_TYPE_PUSH_NOTIFICATION" : @(RPRCampaignTypePushNotification),
|
|
68
|
+
@"CAMPAIGN_TYPE_IN_APP_MESSAGE" : @(RPRCampaignTypeInAppMessage),
|
|
69
|
+
@"CAMPAIGN_TYPE_WEB_MESSAGE" : @(RPRCampaignTypeWebMessage)}),
|
|
70
|
+
RPRCampaignTypePushNotification, integerValue)
|
|
71
|
+
@end
|
|
72
|
+
|
|
64
73
|
@interface RPRRemoteConfigBridge ()
|
|
65
74
|
|
|
66
75
|
@property (nonatomic) RPRRemoteConfig* remoteConfig;
|
|
@@ -197,6 +206,12 @@ RCT_EXPORT_MODULE(Repro)
|
|
|
197
206
|
@"REMOTE_CONFIG_SUCCESS" : @(RPRRemoteConfigFetchStatusSuccess),
|
|
198
207
|
@"REMOTE_CONFIG_TIMEOUT_REACHED" : @(RPRRemoteConfigFetchStatusTimeoutReached),
|
|
199
208
|
@"REMOTE_CONFIG_ALREADY_FETCHED" : @(RPRRemoteConfigFetchStatusAlreadyFetched),
|
|
209
|
+
|
|
210
|
+
@"CAMPAIGN_TYPE_UNKNOWN" : @(RPRCampaignTypeUnknown),
|
|
211
|
+
@"CAMPAIGN_TYPE_PUSH_NOTIFICATION" : @(RPRCampaignTypePushNotification),
|
|
212
|
+
@"CAMPAIGN_TYPE_IN_APP_MESSAGE" : @(RPRCampaignTypeInAppMessage),
|
|
213
|
+
@"CAMPAIGN_TYPE_WEB_MESSAGE" : @(RPRCampaignTypeWebMessage),
|
|
214
|
+
@"CAMPAIGN_TYPE_ALL" : @(RPRCampaignTypeAll),
|
|
200
215
|
};
|
|
201
216
|
};
|
|
202
217
|
|
|
@@ -452,10 +467,24 @@ RCT_EXPORT_METHOD(disableInAppMessagesOnForegroundTransition)
|
|
|
452
467
|
[Repro disableInAppMessagesOnForegroundTransition];
|
|
453
468
|
}
|
|
454
469
|
|
|
455
|
-
RCT_EXPORT_METHOD(getNewsFeeds:(uint64_t)limit callback:(RCTResponseSenderBlock)callback)
|
|
470
|
+
RCT_EXPORT_METHOD(getNewsFeeds:(uint64_t)limit campaignType:(nonnull NSNumber *)type callback:(RCTResponseSenderBlock)callback)
|
|
456
471
|
{
|
|
457
472
|
NSError *error = nil;
|
|
458
|
-
|
|
473
|
+
RPRCampaignType campaignType = RPRCampaignTypeUnknown;
|
|
474
|
+
|
|
475
|
+
if (type) {
|
|
476
|
+
if ([type isEqualToNumber:@(RPRCampaignTypePushNotification)]) {
|
|
477
|
+
campaignType = RPRCampaignTypePushNotification;
|
|
478
|
+
} else if ([type isEqualToNumber:@(RPRCampaignTypeInAppMessage)]) {
|
|
479
|
+
campaignType = RPRCampaignTypeInAppMessage;
|
|
480
|
+
} else if ([type isEqualToNumber:@(RPRCampaignTypeWebMessage)]) {
|
|
481
|
+
campaignType = RPRCampaignTypeWebMessage;
|
|
482
|
+
} else if ([type isEqualToNumber:@(RPRCampaignTypeAll)]) {
|
|
483
|
+
campaignType = RPRCampaignTypeAll;
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
NSArray<RPRNewsFeedEntry *> * entries = [Repro getNewsFeeds:limit campaignType:campaignType error:&error];
|
|
459
488
|
|
|
460
489
|
if (error) {
|
|
461
490
|
NSString *errString = [error localizedDescription];
|
|
@@ -481,11 +510,12 @@ RCT_EXPORT_METHOD(getNewsFeeds:(uint64_t)limit callback:(RCTResponseSenderBlock)
|
|
|
481
510
|
@"title": entry.title,
|
|
482
511
|
@"summary": entry.summary,
|
|
483
512
|
@"body": entry.body,
|
|
513
|
+
@"campaign_type": @(entry.campaignType),
|
|
484
514
|
@"shown": @(entry.shown),
|
|
485
515
|
@"read": @(entry.read),
|
|
486
516
|
@"delivered_at": formattedDateString,
|
|
487
517
|
@"link_url": entry.linkUrl ? [entry.linkUrl absoluteString] : @"",
|
|
488
|
-
@"image_url": entry.imageUrl ? [entry.imageUrl absoluteString] : @""
|
|
518
|
+
@"image_url": entry.imageUrl ? [entry.imageUrl absoluteString] : @"",
|
|
489
519
|
};
|
|
490
520
|
|
|
491
521
|
[entryJsons addObject:entryJson];
|
|
@@ -494,10 +524,24 @@ RCT_EXPORT_METHOD(getNewsFeeds:(uint64_t)limit callback:(RCTResponseSenderBlock)
|
|
|
494
524
|
callback(@[[NSNull null], safe_value(entryJsons)]);
|
|
495
525
|
}
|
|
496
526
|
|
|
497
|
-
RCT_EXPORT_METHOD(getNewsFeedsFor:(uint64_t)limit offsetID:(uint64_t)offsetID callback:(RCTResponseSenderBlock)callback)
|
|
527
|
+
RCT_EXPORT_METHOD(getNewsFeedsFor:(uint64_t)limit offsetID:(uint64_t)offsetID campaignType:(nonnull NSNumber *)type callback:(RCTResponseSenderBlock)callback)
|
|
498
528
|
{
|
|
499
529
|
NSError *error = nil;
|
|
500
|
-
|
|
530
|
+
RPRCampaignType campaignType = RPRCampaignTypeUnknown;
|
|
531
|
+
|
|
532
|
+
if (type) {
|
|
533
|
+
if ([type isEqualToNumber:@(RPRCampaignTypePushNotification)]) {
|
|
534
|
+
campaignType = RPRCampaignTypePushNotification;
|
|
535
|
+
} else if ([type isEqualToNumber:@(RPRCampaignTypeInAppMessage)]) {
|
|
536
|
+
campaignType = RPRCampaignTypeInAppMessage;
|
|
537
|
+
} else if ([type isEqualToNumber:@(RPRCampaignTypeWebMessage)]) {
|
|
538
|
+
campaignType = RPRCampaignTypeWebMessage;
|
|
539
|
+
} else if ([type isEqualToNumber:@(RPRCampaignTypeAll)]) {
|
|
540
|
+
campaignType = RPRCampaignTypeAll;
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
NSArray<RPRNewsFeedEntry *> *entries = [Repro getNewsFeeds:limit offsetID:offsetID campaignType:campaignType error:&error];
|
|
501
545
|
|
|
502
546
|
if (error) {
|
|
503
547
|
NSString *errString = [error localizedDescription];
|
|
@@ -523,11 +567,12 @@ RCT_EXPORT_METHOD(getNewsFeedsFor:(uint64_t)limit offsetID:(uint64_t)offsetID ca
|
|
|
523
567
|
@"title": entry.title,
|
|
524
568
|
@"summary": entry.summary,
|
|
525
569
|
@"body": entry.body,
|
|
570
|
+
@"campaign_type": @(entry.campaignType),
|
|
526
571
|
@"shown": @(entry.shown),
|
|
527
572
|
@"read": @(entry.read),
|
|
528
573
|
@"delivered_at": formattedDateString,
|
|
529
574
|
@"link_url": entry.linkUrl ? [entry.linkUrl absoluteString] : @"",
|
|
530
|
-
@"image_url": entry.imageUrl ? [entry.imageUrl absoluteString] : @""
|
|
575
|
+
@"image_url": entry.imageUrl ? [entry.imageUrl absoluteString] : @"",
|
|
531
576
|
};
|
|
532
577
|
|
|
533
578
|
[entryJsons addObject:entryJson];
|
package/package.json
CHANGED
package/repro-version.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
95128ff0f21c7dce392fbe7376049930
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
db014f9b390093608d5678da13c524b8f6f5ab7d
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
8887c317b5c45b11836fa33156a40986
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
6320bb92fa20c8a49d146decfdc83a49a0b00da3
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
<groupId>io.repro</groupId>
|
|
4
4
|
<artifactId>repro-android-sdk</artifactId>
|
|
5
5
|
<versioning>
|
|
6
|
-
<release>5.
|
|
6
|
+
<release>5.6.0</release>
|
|
7
7
|
<versions>
|
|
8
|
-
<version>5.
|
|
8
|
+
<version>5.6.0</version>
|
|
9
9
|
</versions>
|
|
10
|
-
<lastUpdated>
|
|
10
|
+
<lastUpdated>20211207144549</lastUpdated>
|
|
11
11
|
</versioning>
|
|
12
12
|
</metadata>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
924daf8076ee56d2d816355b8cd95e8e
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
467c78928268a9e2770584753d8185648538be1d
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>AvailableLibraries</key>
|
|
6
|
+
<array>
|
|
7
|
+
<dict>
|
|
8
|
+
<key>LibraryIdentifier</key>
|
|
9
|
+
<string>ios-arm64_armv7_armv7s</string>
|
|
10
|
+
<key>LibraryPath</key>
|
|
11
|
+
<string>Repro.framework</string>
|
|
12
|
+
<key>SupportedArchitectures</key>
|
|
13
|
+
<array>
|
|
14
|
+
<string>arm64</string>
|
|
15
|
+
<string>armv7</string>
|
|
16
|
+
<string>armv7s</string>
|
|
17
|
+
</array>
|
|
18
|
+
<key>SupportedPlatform</key>
|
|
19
|
+
<string>ios</string>
|
|
20
|
+
</dict>
|
|
21
|
+
<dict>
|
|
22
|
+
<key>LibraryIdentifier</key>
|
|
23
|
+
<string>ios-arm64_i386_x86_64-simulator</string>
|
|
24
|
+
<key>LibraryPath</key>
|
|
25
|
+
<string>Repro.framework</string>
|
|
26
|
+
<key>SupportedArchitectures</key>
|
|
27
|
+
<array>
|
|
28
|
+
<string>arm64</string>
|
|
29
|
+
<string>i386</string>
|
|
30
|
+
<string>x86_64</string>
|
|
31
|
+
</array>
|
|
32
|
+
<key>SupportedPlatform</key>
|
|
33
|
+
<string>ios</string>
|
|
34
|
+
<key>SupportedPlatformVariant</key>
|
|
35
|
+
<string>simulator</string>
|
|
36
|
+
</dict>
|
|
37
|
+
</array>
|
|
38
|
+
<key>CFBundlePackageType</key>
|
|
39
|
+
<string>XFWK</string>
|
|
40
|
+
<key>XCFrameworkFormatVersion</key>
|
|
41
|
+
<string>1.0</string>
|
|
42
|
+
</dict>
|
|
43
|
+
</plist>
|
|
File without changes
|
|
@@ -6,6 +6,16 @@
|
|
|
6
6
|
|
|
7
7
|
#import <Foundation/Foundation.h>
|
|
8
8
|
|
|
9
|
+
|
|
10
|
+
typedef NS_ENUM(NSUInteger, RPRCampaignType) {
|
|
11
|
+
RPRCampaignTypeUnknown NS_SWIFT_NAME(unknown) = 0,
|
|
12
|
+
|
|
13
|
+
RPRCampaignTypePushNotification NS_SWIFT_NAME(pushNotification) = (1 << 0),
|
|
14
|
+
RPRCampaignTypeInAppMessage NS_SWIFT_NAME(inAppMessage) = (1 << 1),
|
|
15
|
+
RPRCampaignTypeWebMessage NS_SWIFT_NAME(webMessage) = (1 << 2),
|
|
16
|
+
RPRCampaignTypeAll NS_SWIFT_NAME(all) = (1 << 3),
|
|
17
|
+
};
|
|
18
|
+
|
|
9
19
|
NS_ASSUME_NONNULL_BEGIN
|
|
10
20
|
|
|
11
21
|
@interface RPRNewsFeedEntry : NSObject
|
|
@@ -15,6 +25,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
15
25
|
@property (nonatomic, readonly) NSString *title;
|
|
16
26
|
@property (nonatomic, readonly) NSString *summary;
|
|
17
27
|
@property (nonatomic, readonly) NSString *body;
|
|
28
|
+
@property (nonatomic, readonly) RPRCampaignType campaignType;
|
|
18
29
|
@property (nonatomic, readonly, nullable) NSURL *linkUrl;
|
|
19
30
|
@property (nonatomic, readonly, nullable) NSURL *imageUrl;
|
|
20
31
|
@property (nonatomic, readonly) NSDate *deliveredAt;
|
|
File without changes
|
|
File without changes
|
|
@@ -144,11 +144,22 @@ NS_SWIFT_NAME(set(silverEggProdKey:));
|
|
|
144
144
|
error:(NSError * _Nullable * _Nullable)error
|
|
145
145
|
NS_SWIFT_NAME(getNewsFeeds(_:));
|
|
146
146
|
|
|
147
|
+
+ (nullable NSArray<RPRNewsFeedEntry *> *)getNewsFeeds:(uint64_t)limit
|
|
148
|
+
campaignType:(RPRCampaignType)campaignType
|
|
149
|
+
error:(NSError * _Nullable * _Nullable)error
|
|
150
|
+
NS_SWIFT_NAME(getNewsFeeds(_:campaignType:));
|
|
151
|
+
|
|
147
152
|
+ (nullable NSArray<RPRNewsFeedEntry *> *)getNewsFeeds:(uint64_t)limit
|
|
148
153
|
offsetID:(uint64_t)offsetID
|
|
149
154
|
error:(NSError * _Nullable * _Nullable)error
|
|
150
155
|
NS_SWIFT_NAME(getNewsFeeds(_:offsetID:));
|
|
151
156
|
|
|
157
|
+
+ (nullable NSArray<RPRNewsFeedEntry *> *)getNewsFeeds:(uint64_t)limit
|
|
158
|
+
offsetID:(uint64_t)offsetID
|
|
159
|
+
campaignType:(RPRCampaignType)campaignType
|
|
160
|
+
error:(NSError * _Nullable * _Nullable)error
|
|
161
|
+
NS_SWIFT_NAME(getNewsFeeds(_:offsetID:campaignType:));
|
|
162
|
+
|
|
152
163
|
+ (BOOL)updateNewsFeeds:(nonnull NSArray<RPRNewsFeedEntry *> *)newsFeeds error:(NSError * _Nullable * _Nullable)error
|
|
153
164
|
NS_SWIFT_NAME(updateNewsFeeds(_:));
|
|
154
165
|
|
|
Binary file
|
|
File without changes
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Repro iOS SDK
|
|
3
|
+
//
|
|
4
|
+
// Copyright (c) 2014 Repro Inc. All rights reserved.
|
|
5
|
+
//
|
|
6
|
+
|
|
7
|
+
#import <Foundation/Foundation.h>
|
|
8
|
+
|
|
9
|
+
@interface RPRViewContentProperties : NSObject
|
|
10
|
+
@property (nonatomic, readwrite) double value;
|
|
11
|
+
@property (nonatomic, readwrite, copy) NSString *currency;
|
|
12
|
+
@property (nonatomic, readwrite, copy) NSString *contentName;
|
|
13
|
+
@property (nonatomic, readwrite, copy) NSString *contentCategory;
|
|
14
|
+
@property (nonatomic, readwrite, copy) NSDictionary *extras;
|
|
15
|
+
@end
|
|
16
|
+
|
|
17
|
+
@interface RPRSearchProperties : NSObject
|
|
18
|
+
@property (nonatomic, readwrite) double value;
|
|
19
|
+
@property (nonatomic, readwrite, copy) NSString *currency;
|
|
20
|
+
@property (nonatomic, readwrite, copy) NSString *contentCategory;
|
|
21
|
+
@property (nonatomic, readwrite, copy) NSString *contentID;
|
|
22
|
+
@property (nonatomic, readwrite, copy) NSString *searchString;
|
|
23
|
+
@property (nonatomic, readwrite, copy) NSDictionary *extras;
|
|
24
|
+
@end
|
|
25
|
+
|
|
26
|
+
@interface RPRAddToCartProperties : NSObject
|
|
27
|
+
@property (nonatomic, readwrite) double value;
|
|
28
|
+
@property (nonatomic, readwrite, copy) NSString *currency;
|
|
29
|
+
@property (nonatomic, readwrite, copy) NSString *contentName;
|
|
30
|
+
@property (nonatomic, readwrite, copy) NSString *contentCategory;
|
|
31
|
+
@property (nonatomic, readwrite, copy) NSDictionary *extras;
|
|
32
|
+
@end
|
|
33
|
+
|
|
34
|
+
@interface RPRAddToWishlistProperties : NSObject
|
|
35
|
+
@property (nonatomic, readwrite) double value;
|
|
36
|
+
@property (nonatomic, readwrite, copy) NSString *currency;
|
|
37
|
+
@property (nonatomic, readwrite, copy) NSString *contentName;
|
|
38
|
+
@property (nonatomic, readwrite, copy) NSString *contentCategory;
|
|
39
|
+
@property (nonatomic, readwrite, copy) NSString *contentID;
|
|
40
|
+
@property (nonatomic, readwrite, copy) NSDictionary *extras;
|
|
41
|
+
@end
|
|
42
|
+
|
|
43
|
+
@interface RPRInitiateCheckoutProperties : NSObject
|
|
44
|
+
@property (nonatomic, readwrite) double value;
|
|
45
|
+
@property (nonatomic, readwrite, copy) NSString *currency;
|
|
46
|
+
@property (nonatomic, readwrite, copy) NSString *contentName;
|
|
47
|
+
@property (nonatomic, readwrite, copy) NSString *contentCategory;
|
|
48
|
+
@property (nonatomic, readwrite, copy) NSString *contentID;
|
|
49
|
+
@property (nonatomic, readwrite) NSInteger numItems;
|
|
50
|
+
@property (nonatomic, readwrite, copy) NSDictionary *extras;
|
|
51
|
+
@end
|
|
52
|
+
|
|
53
|
+
@interface RPRAddPaymentInfoProperties : NSObject
|
|
54
|
+
@property (nonatomic, readwrite) double value;
|
|
55
|
+
@property (nonatomic, readwrite, copy) NSString *currency;
|
|
56
|
+
@property (nonatomic, readwrite, copy) NSString *contentCategory;
|
|
57
|
+
@property (nonatomic, readwrite, copy) NSString *contentID;
|
|
58
|
+
@property (nonatomic, readwrite, copy) NSDictionary *extras;
|
|
59
|
+
@end
|
|
60
|
+
|
|
61
|
+
@interface RPRPurchaseProperties : NSObject
|
|
62
|
+
@property (nonatomic, readwrite, copy) NSString *contentName;
|
|
63
|
+
@property (nonatomic, readwrite, copy) NSString *contentCategory;
|
|
64
|
+
@property (nonatomic, readwrite) NSInteger numItems;
|
|
65
|
+
@property (nonatomic, readwrite, copy) NSDictionary *extras;
|
|
66
|
+
@end
|
|
67
|
+
|
|
68
|
+
@interface RPRShareProperties : NSObject
|
|
69
|
+
@property (nonatomic, readwrite, copy) NSString *contentCategory;
|
|
70
|
+
@property (nonatomic, readwrite, copy) NSString *contentID;
|
|
71
|
+
@property (nonatomic, readwrite, copy) NSString *contentName;
|
|
72
|
+
@property (nonatomic, readwrite, copy) NSString *serviceName;
|
|
73
|
+
@property (nonatomic, readwrite, copy) NSDictionary *extras;
|
|
74
|
+
@end
|
|
75
|
+
|
|
76
|
+
@interface RPRLeadProperties : NSObject
|
|
77
|
+
@property (nonatomic, readwrite) double value;
|
|
78
|
+
@property (nonatomic, readwrite, copy) NSString *currency;
|
|
79
|
+
@property (nonatomic, readwrite, copy) NSString *contentName;
|
|
80
|
+
@property (nonatomic, readwrite, copy) NSString *contentCategory;
|
|
81
|
+
@property (nonatomic, readwrite, copy) NSDictionary *extras;
|
|
82
|
+
@end
|
|
83
|
+
|
|
84
|
+
@interface RPRCompleteRegistrationProperties : NSObject
|
|
85
|
+
@property (nonatomic, readwrite) double value;
|
|
86
|
+
@property (nonatomic, readwrite, copy) NSString *currency;
|
|
87
|
+
@property (nonatomic, readwrite, copy) NSString *contentName;
|
|
88
|
+
@property (nonatomic, readwrite, copy) NSString *status;
|
|
89
|
+
@property (nonatomic, readwrite, copy) NSDictionary *extras;
|
|
90
|
+
@end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Repro iOS SDK
|
|
3
|
+
//
|
|
4
|
+
// Copyright (c) 2014 Repro Inc. All rights reserved.
|
|
5
|
+
//
|
|
6
|
+
|
|
7
|
+
#import <Foundation/Foundation.h>
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
typedef NS_ENUM(NSUInteger, RPRCampaignType) {
|
|
11
|
+
RPRCampaignTypeUnknown NS_SWIFT_NAME(unknown) = 0,
|
|
12
|
+
|
|
13
|
+
RPRCampaignTypePushNotification NS_SWIFT_NAME(pushNotification) = (1 << 0),
|
|
14
|
+
RPRCampaignTypeInAppMessage NS_SWIFT_NAME(inAppMessage) = (1 << 1),
|
|
15
|
+
RPRCampaignTypeWebMessage NS_SWIFT_NAME(webMessage) = (1 << 2),
|
|
16
|
+
RPRCampaignTypeAll NS_SWIFT_NAME(all) = (1 << 3),
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
20
|
+
|
|
21
|
+
@interface RPRNewsFeedEntry : NSObject
|
|
22
|
+
|
|
23
|
+
@property (nonatomic, readonly) uint64_t ID;
|
|
24
|
+
@property (nonatomic, readonly) NSString *deviceID;
|
|
25
|
+
@property (nonatomic, readonly) NSString *title;
|
|
26
|
+
@property (nonatomic, readonly) NSString *summary;
|
|
27
|
+
@property (nonatomic, readonly) NSString *body;
|
|
28
|
+
@property (nonatomic, readonly) RPRCampaignType campaignType;
|
|
29
|
+
@property (nonatomic, readonly, nullable) NSURL *linkUrl;
|
|
30
|
+
@property (nonatomic, readonly, nullable) NSURL *imageUrl;
|
|
31
|
+
@property (nonatomic, readonly) NSDate *deliveredAt;
|
|
32
|
+
@property (nonatomic) BOOL shown;
|
|
33
|
+
@property (nonatomic) BOOL read;
|
|
34
|
+
|
|
35
|
+
- (instancetype)init NS_UNAVAILABLE;
|
|
36
|
+
- (instancetype)initWithDictionary:(NSDictionary *)dictionary;
|
|
37
|
+
|
|
38
|
+
@end
|
|
39
|
+
|
|
40
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Repro iOS SDK
|
|
3
|
+
//
|
|
4
|
+
// Copyright (c) 2014 Repro Inc. All rights reserved.
|
|
5
|
+
//
|
|
6
|
+
|
|
7
|
+
#import <Foundation/Foundation.h>
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
/// Wrapper class around remote config values.
|
|
11
|
+
@interface RPRRemoteConfigValue : NSObject
|
|
12
|
+
// Will be `nil` if both remote config and local config did not contain a value.
|
|
13
|
+
@property(nonatomic, readonly, nullable) NSString *stringValue;
|
|
14
|
+
@end
|
|
15
|
+
|
|
16
|
+
/// Status reported via fetch callback.
|
|
17
|
+
typedef NS_ENUM(NSInteger, RPRRemoteConfigFetchStatus) {
|
|
18
|
+
RPRRemoteConfigFetchStatusSuccess NS_SWIFT_NAME(success) = 0,
|
|
19
|
+
RPRRemoteConfigFetchStatusTimeoutReached NS_SWIFT_NAME(timeoutReached),
|
|
20
|
+
RPRRemoteConfigFetchStatusAlreadyFetched NS_SWIFT_NAME(alreadyFetched)
|
|
21
|
+
} NS_SWIFT_NAME(RPRRemoteConfigFetchStatus);
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
/// Remote config fetch result will be passed with this completion handler.
|
|
27
|
+
typedef void (^RPRRemoteConfigFetchCompletion)(RPRRemoteConfigFetchStatus status)
|
|
28
|
+
NS_SWIFT_NAME(RPRRemoteConfigFetchCompletion);
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
@interface RPRRemoteConfig : NSObject
|
|
35
|
+
|
|
36
|
+
/// Access remote config via `Repro.remoteConfig` instead of initializing this class.
|
|
37
|
+
- (nonnull instancetype)init NS_UNAVAILABLE;
|
|
38
|
+
|
|
39
|
+
#pragma mark - Remote Config Setup
|
|
40
|
+
|
|
41
|
+
/// You may not need this method because the default behavior is:
|
|
42
|
+
/// - After a call to `Repro.setup()`, automatically fetch every time the app will enter foreground
|
|
43
|
+
/// - Run `activateFetched` as soon as a response was received.
|
|
44
|
+
///
|
|
45
|
+
/// If you need a completionHandler to ensure the remoteConfig gets activated at a certain point in time
|
|
46
|
+
/// or want to validate remote config functionality while development, you should use this method. You can
|
|
47
|
+
/// only set one completionHandler at a time. Also only one fetch per app foreground/background cycle is
|
|
48
|
+
/// permitted. Therefore you should call this when your app comes to foreground, preferably
|
|
49
|
+
/// from `applicationWillEnterForeground`.
|
|
50
|
+
///
|
|
51
|
+
/// If the completionHandler handler is called with status `RPRRemoteConfigFetchStatusSuccess`, you should
|
|
52
|
+
/// proceed with calling `activateFetched` in the completionHandler or after the completionHandler has
|
|
53
|
+
/// been executed.
|
|
54
|
+
///
|
|
55
|
+
/// After `activateFetched` has been called, new remote config values are available. This completionHandler
|
|
56
|
+
/// is always guaranteed to be called on the main thread. The callback will be invalidated and not executed
|
|
57
|
+
/// if the app goes to background or the end-user OptsOut via the OptIn/OptOut API.
|
|
58
|
+
- (void)fetchWithTimeout:(NSTimeInterval)timeout
|
|
59
|
+
completionHandler:(nonnull RPRRemoteConfigFetchCompletion)completionHandler
|
|
60
|
+
NS_SWIFT_NAME(fetch(withTimeout:completionHandler:));
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
/// This is only needed if you use `fetchWithTimeout:completionHandler:`. See above.
|
|
64
|
+
/// Returns YES if a previously fetched remote config has replaced the current remote config.
|
|
65
|
+
- (BOOL)activateFetched
|
|
66
|
+
NS_SWIFT_NAME(activateFetched());
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
#pragma mark - Local Default Settings
|
|
74
|
+
|
|
75
|
+
/// Set local defaults for remote config queries via dictionary.
|
|
76
|
+
- (BOOL)setDefaultsFromDictionary:(nonnull NSDictionary<NSString *, id> *)defaults
|
|
77
|
+
NS_SWIFT_NAME(setDefaults(fromDictionary:));
|
|
78
|
+
|
|
79
|
+
/// Set local defaults for remote config queries via a json file.
|
|
80
|
+
- (BOOL)setDefaultsFromJsonFile:(nonnull NSURL *)fileNameURL
|
|
81
|
+
NS_SWIFT_NAME(setDefaults(fromJsonFile:));
|
|
82
|
+
|
|
83
|
+
/// Set local defaults for remote config queries via a json string.
|
|
84
|
+
- (BOOL)setDefaultsFromJsonString:(nonnull NSString *)string
|
|
85
|
+
NS_SWIFT_NAME(setDefaults(fromJsonString:));
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
#pragma mark - Query Remote Config
|
|
93
|
+
|
|
94
|
+
/// Access to remote config values.
|
|
95
|
+
- (nonnull RPRRemoteConfigValue *)valueForKey:(nonnull NSString *)key
|
|
96
|
+
NS_SWIFT_NAME(value(forKey:));
|
|
97
|
+
|
|
98
|
+
/// Access to remote config values via subscript syntax.
|
|
99
|
+
- (nonnull RPRRemoteConfigValue *)objectForKeyedSubscript:(nonnull NSString *)key;
|
|
100
|
+
|
|
101
|
+
/// Return a dictonary with all key value pairs.
|
|
102
|
+
- (nonnull NSDictionary<NSString *, RPRRemoteConfigValue *> *)allValues
|
|
103
|
+
NS_SWIFT_NAME(allValues());
|
|
104
|
+
|
|
105
|
+
/// Return a dictonary with all key value pairs for a given prefix. Pass `nil` or an empty string to get all values.
|
|
106
|
+
- (nonnull NSDictionary<NSString *, RPRRemoteConfigValue *> *)allValuesWithPrefix:(nullable NSString *)prefix
|
|
107
|
+
NS_SWIFT_NAME(allValues(withPrefix:));
|
|
108
|
+
|
|
109
|
+
/// Returns the local default value for a key.
|
|
110
|
+
- (nonnull RPRRemoteConfigValue *)localDefaultValueForKey:(nonnull NSString *)key
|
|
111
|
+
NS_SWIFT_NAME(localDefaultValue(forKey:));
|
|
112
|
+
|
|
113
|
+
/// Reset all data. Local config & remote Config. Should only be used while in development.
|
|
114
|
+
- (void)forceReset
|
|
115
|
+
NS_SWIFT_NAME(forceReset());
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
@end
|
|
119
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Repro iOS SDK
|
|
3
|
+
//
|
|
4
|
+
// Copyright (c) 2014 Repro Inc. All rights reserved.
|
|
5
|
+
//
|
|
6
|
+
|
|
7
|
+
#import <Foundation/Foundation.h>
|
|
8
|
+
|
|
9
|
+
typedef NS_ENUM(NSInteger, RPRUserProfileGender) {
|
|
10
|
+
RPRUserProfileGenderOther NS_SWIFT_NAME(other) = 0,
|
|
11
|
+
RPRUserProfileGenderMale NS_SWIFT_NAME(male),
|
|
12
|
+
RPRUserProfileGenderFemale NS_SWIFT_NAME(female)
|
|
13
|
+
};
|
|
14
|
+
|
package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Headers/Repro.h
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Repro iOS SDK
|
|
3
|
+
//
|
|
4
|
+
// Copyright (c) 2014 Repro Inc. All rights reserved.
|
|
5
|
+
//
|
|
6
|
+
|
|
7
|
+
#import <Foundation/Foundation.h>
|
|
8
|
+
|
|
9
|
+
#import <Repro/RPREventProperties.h>
|
|
10
|
+
#import <Repro/RPRUserProfileGender.h>
|
|
11
|
+
#import <Repro/RPRRemoteConfig.h>
|
|
12
|
+
#import <Repro/RPRNewsFeedEntry.h>
|
|
13
|
+
|
|
14
|
+
@protocol WKNavigationDelegate;
|
|
15
|
+
|
|
16
|
+
//! Project version number for Repro.
|
|
17
|
+
FOUNDATION_EXPORT double ReproVersionNumber;
|
|
18
|
+
|
|
19
|
+
//! Project version string for Repro.
|
|
20
|
+
FOUNDATION_EXPORT const unsigned char ReproVersionString[];
|
|
21
|
+
|
|
22
|
+
typedef NS_ENUM(NSInteger, RPRLogLevel) {
|
|
23
|
+
RPRLogLevelDebug NS_SWIFT_NAME(debug),
|
|
24
|
+
RPRLogLevelInfo NS_SWIFT_NAME(info),
|
|
25
|
+
RPRLogLevelWarn NS_SWIFT_NAME(warn),
|
|
26
|
+
RPRLogLevelError NS_SWIFT_NAME(error),
|
|
27
|
+
RPRLogLevelNone NS_SWIFT_NAME(none)
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
@interface Repro : NSObject
|
|
31
|
+
|
|
32
|
+
// Session (Initialization)
|
|
33
|
+
+ (void)setup:(nonnull NSString *)token
|
|
34
|
+
NS_SWIFT_NAME(setup(token:));
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
// OptIn / OptOut
|
|
38
|
+
+ (void)optIn:(BOOL)endUserOptedIn
|
|
39
|
+
NS_SWIFT_NAME(optIn(endUserOptedIn:));
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
// User profile
|
|
43
|
+
+ (void)setUserID:(nonnull NSString *)userID
|
|
44
|
+
NS_SWIFT_NAME(set(userID:));
|
|
45
|
+
|
|
46
|
+
+ (nonnull NSString *)getUserID
|
|
47
|
+
NS_SWIFT_NAME(userID());
|
|
48
|
+
|
|
49
|
+
+ (nullable NSString *)getDeviceID
|
|
50
|
+
NS_SWIFT_NAME(deviceID());
|
|
51
|
+
|
|
52
|
+
+ (void)setStringUserProfile:(nonnull NSString *)value forKey:(nonnull NSString *)key
|
|
53
|
+
NS_SWIFT_NAME(setUserProfile(stringValue:forKey:));
|
|
54
|
+
|
|
55
|
+
+ (void)setIntUserProfile:(NSInteger)value forKey:(nonnull NSString *)key
|
|
56
|
+
NS_SWIFT_NAME(setUserProfile(integerValue:forKey:));
|
|
57
|
+
|
|
58
|
+
+ (void)setDoubleUserProfile:(double)value forKey:(nonnull NSString *)key
|
|
59
|
+
NS_SWIFT_NAME(setUserProfile(doubleValue:forKey:));
|
|
60
|
+
|
|
61
|
+
+ (void)setDateUserProfile:(nonnull NSDate *)value forKey:(nonnull NSString *)key
|
|
62
|
+
NS_SWIFT_NAME(setUserProfile(dateValue:forKey:));
|
|
63
|
+
|
|
64
|
+
+ (void)setUserGender:(RPRUserProfileGender)value
|
|
65
|
+
NS_SWIFT_NAME(setUserProfile(gender:));
|
|
66
|
+
|
|
67
|
+
+ (void)setUserEmailAddress:(nonnull NSString *)value
|
|
68
|
+
NS_SWIFT_NAME(setUserProfile(emailAddress:));
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
// Event tracking
|
|
72
|
+
+ (void)track:(nonnull NSString *)name properties:(nullable NSDictionary *)properties
|
|
73
|
+
NS_SWIFT_NAME(track(event:properties:));
|
|
74
|
+
|
|
75
|
+
+ (void)startWebViewTracking:(nonnull id<WKNavigationDelegate>)delegate
|
|
76
|
+
NS_SWIFT_NAME(startWebViewTracking(delegate:));
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
// Standard event tracking
|
|
80
|
+
+ (void)trackViewContent:(nonnull NSString *)contentID properties:(nullable RPRViewContentProperties *)properties
|
|
81
|
+
NS_SWIFT_NAME(trackViewContentEvent(contentID:properties:));
|
|
82
|
+
|
|
83
|
+
+ (void)trackSearch:(nullable RPRSearchProperties *)properties
|
|
84
|
+
NS_SWIFT_NAME(trackSearchEvent(properties:));
|
|
85
|
+
|
|
86
|
+
+ (void)trackAddToCart:(nonnull NSString *)contentID properties:(nullable RPRAddToCartProperties *)properties
|
|
87
|
+
NS_SWIFT_NAME(trackAddToCartEvent(contentID:properties:));
|
|
88
|
+
|
|
89
|
+
+ (void)trackAddToWishlist:(nullable RPRAddToWishlistProperties *)properties
|
|
90
|
+
NS_SWIFT_NAME(trackAddToWishlistEvent(properties:));
|
|
91
|
+
|
|
92
|
+
+ (void)trackInitiateCheckout:(nullable RPRInitiateCheckoutProperties *)properties
|
|
93
|
+
NS_SWIFT_NAME(trackInitiateCheckoutEvent(properties:));
|
|
94
|
+
|
|
95
|
+
+ (void)trackAddPaymentInfo:(nullable RPRAddPaymentInfoProperties *)properties
|
|
96
|
+
NS_SWIFT_NAME(trackAddPaymentInfoEvent(properties:));
|
|
97
|
+
|
|
98
|
+
+ (void)trackPurchase:(nonnull NSString *)contentID value:(double)value currency:(nonnull NSString *)currency properties:(nullable RPRPurchaseProperties *)properties
|
|
99
|
+
NS_SWIFT_NAME(trackPurchaseEvent(contentID:value:currency:properties:));
|
|
100
|
+
|
|
101
|
+
+ (void)trackShare:(nullable RPRShareProperties *)properties
|
|
102
|
+
NS_SWIFT_NAME(trackShareEvent(properties:));
|
|
103
|
+
|
|
104
|
+
+ (void)trackCompleteRegistration:(nullable RPRCompleteRegistrationProperties *)properties
|
|
105
|
+
NS_SWIFT_NAME(trackCompleteRegistrationEvent(properties:));
|
|
106
|
+
|
|
107
|
+
+ (void)trackLead:(nullable RPRLeadProperties *)properties
|
|
108
|
+
NS_SWIFT_NAME(trackLeadEvent(properties:));
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
// Log
|
|
112
|
+
+ (void)setLogLevel:(RPRLogLevel)level
|
|
113
|
+
NS_SWIFT_NAME(set(logLevel:));
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
// Push Notification
|
|
117
|
+
+ (void)setPushDeviceToken:(nonnull NSData *)pushDeviceToken
|
|
118
|
+
NS_SWIFT_NAME(setPushDeviceToken(data:));
|
|
119
|
+
|
|
120
|
+
+ (void)setPushDeviceTokenString:(nonnull NSString *)pushDeviceToken
|
|
121
|
+
NS_SWIFT_NAME(setPushDeviceToken(string:));
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
// In App Message
|
|
125
|
+
|
|
126
|
+
+ (void)enableInAppMessagesOnForegroundTransition
|
|
127
|
+
NS_SWIFT_NAME(enableInAppMessagesOnForegroundTransition());
|
|
128
|
+
|
|
129
|
+
+ (void)disableInAppMessagesOnForegroundTransition
|
|
130
|
+
NS_SWIFT_NAME(disableInAppMessagesOnForegroundTransition());
|
|
131
|
+
|
|
132
|
+
// Silver Egg In-app
|
|
133
|
+
+ (void)setSilverEggCookie:(nonnull NSString *)silverEggCookie
|
|
134
|
+
NS_SWIFT_NAME(set(silverEggCookie:));
|
|
135
|
+
|
|
136
|
+
+ (void)setSilverEggProdKey:(nonnull NSString *)silverEggProdKey
|
|
137
|
+
NS_SWIFT_NAME(set(silverEggProdKey:));
|
|
138
|
+
|
|
139
|
+
// Remote Configuration
|
|
140
|
+
@property (class, nonatomic, readonly, nonnull) RPRRemoteConfig *remoteConfig;
|
|
141
|
+
|
|
142
|
+
// NewsFeed
|
|
143
|
+
+ (nullable NSArray<RPRNewsFeedEntry *> *)getNewsFeeds:(uint64_t)limit
|
|
144
|
+
error:(NSError * _Nullable * _Nullable)error
|
|
145
|
+
NS_SWIFT_NAME(getNewsFeeds(_:));
|
|
146
|
+
|
|
147
|
+
+ (nullable NSArray<RPRNewsFeedEntry *> *)getNewsFeeds:(uint64_t)limit
|
|
148
|
+
campaignType:(RPRCampaignType)campaignType
|
|
149
|
+
error:(NSError * _Nullable * _Nullable)error
|
|
150
|
+
NS_SWIFT_NAME(getNewsFeeds(_:campaignType:));
|
|
151
|
+
|
|
152
|
+
+ (nullable NSArray<RPRNewsFeedEntry *> *)getNewsFeeds:(uint64_t)limit
|
|
153
|
+
offsetID:(uint64_t)offsetID
|
|
154
|
+
error:(NSError * _Nullable * _Nullable)error
|
|
155
|
+
NS_SWIFT_NAME(getNewsFeeds(_:offsetID:));
|
|
156
|
+
|
|
157
|
+
+ (nullable NSArray<RPRNewsFeedEntry *> *)getNewsFeeds:(uint64_t)limit
|
|
158
|
+
offsetID:(uint64_t)offsetID
|
|
159
|
+
campaignType:(RPRCampaignType)campaignType
|
|
160
|
+
error:(NSError * _Nullable * _Nullable)error
|
|
161
|
+
NS_SWIFT_NAME(getNewsFeeds(_:offsetID:campaignType:));
|
|
162
|
+
|
|
163
|
+
+ (BOOL)updateNewsFeeds:(nonnull NSArray<RPRNewsFeedEntry *> *)newsFeeds error:(NSError * _Nullable * _Nullable)error
|
|
164
|
+
NS_SWIFT_NAME(updateNewsFeeds(_:));
|
|
165
|
+
|
|
166
|
+
@end
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1926b7dbdd04860b4102bffd15d0301e
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0adb951f679279ac9cc609bdc05d9cb29c7746bb
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
b6a9e15d19d0426cbae61baebc71c6a4
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
f513f7ce8c2112ab9fba66f4d23751be6af114bf
|
|
Binary file
|