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.
Files changed (38) hide show
  1. package/React-Repro.podspec +4 -6
  2. package/android/src/main/java/io/repro/android/reactbridge/ReproReactBridgeModule.java +53 -4
  3. package/index.js +41 -3
  4. package/ios/RPRReproReactBridge.m +51 -6
  5. package/package.json +1 -1
  6. package/repro-version.json +3 -3
  7. package/sdk-android/io/repro/repro-android-sdk/5.6.0/repro-android-sdk-5.6.0.aar +0 -0
  8. package/sdk-android/io/repro/repro-android-sdk/5.6.0/repro-android-sdk-5.6.0.aar.md5 +1 -0
  9. package/sdk-android/io/repro/repro-android-sdk/5.6.0/repro-android-sdk-5.6.0.aar.sha1 +1 -0
  10. 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
  11. package/sdk-android/io/repro/repro-android-sdk/5.6.0/repro-android-sdk-5.6.0.pom.md5 +1 -0
  12. package/sdk-android/io/repro/repro-android-sdk/5.6.0/repro-android-sdk-5.6.0.pom.sha1 +1 -0
  13. package/sdk-android/io/repro/repro-android-sdk/maven-metadata.xml +3 -3
  14. package/sdk-android/io/repro/repro-android-sdk/maven-metadata.xml.md5 +1 -1
  15. package/sdk-android/io/repro/repro-android-sdk/maven-metadata.xml.sha1 +1 -1
  16. package/sdk-ios/Repro.xcframework/Info.plist +43 -0
  17. package/sdk-ios/{Repro.framework → Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework}/Headers/RPREventProperties.h +0 -0
  18. package/sdk-ios/{Repro.framework → Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework}/Headers/RPRNewsFeedEntry.h +11 -0
  19. package/sdk-ios/{Repro.framework → Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework}/Headers/RPRRemoteConfig.h +0 -0
  20. package/sdk-ios/{Repro.framework → Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework}/Headers/RPRUserProfileGender.h +0 -0
  21. package/sdk-ios/{Repro.framework → Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework}/Headers/Repro.h +11 -0
  22. package/sdk-ios/{Repro.framework → Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework}/Info.plist +0 -0
  23. package/sdk-ios/{Repro.framework → Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework}/Modules/module.modulemap +0 -0
  24. package/sdk-ios/Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework/Repro +0 -0
  25. package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Headers/RPREventProperties.h +90 -0
  26. package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Headers/RPRNewsFeedEntry.h +40 -0
  27. package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Headers/RPRRemoteConfig.h +119 -0
  28. package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Headers/RPRUserProfileGender.h +14 -0
  29. package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Headers/Repro.h +166 -0
  30. package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Info.plist +0 -0
  31. package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Modules/module.modulemap +6 -0
  32. package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Repro +0 -0
  33. package/sdk-android/io/repro/repro-android-sdk/5.3.0/repro-android-sdk-5.3.0.aar +0 -0
  34. package/sdk-android/io/repro/repro-android-sdk/5.3.0/repro-android-sdk-5.3.0.aar.md5 +0 -1
  35. package/sdk-android/io/repro/repro-android-sdk/5.3.0/repro-android-sdk-5.3.0.aar.sha1 +0 -1
  36. package/sdk-android/io/repro/repro-android-sdk/5.3.0/repro-android-sdk-5.3.0.pom.md5 +0 -1
  37. package/sdk-android/io/repro/repro-android-sdk/5.3.0/repro-android-sdk-5.3.0.pom.sha1 +0 -1
  38. package/sdk-ios/Repro.framework/Repro +0 -0
@@ -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 => "9.0", :tvos => "9.0" }
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.public_header_files = "sdk-ios/Repro.framework/Headers/*.h"
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.framework"
18
+ s.vendored_frameworks = "sdk-ios/Repro.xcframework"
20
19
 
21
- s.frameworks = 'CoreTelephony', 'MobileCoreServices', 'Security', 'SystemConfiguration', 'WebKit'
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
- "deviceID": this.deviceID,
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
- NSArray<RPRNewsFeedEntry *> * entries = [Repro getNewsFeeds:limit error:&error];
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
- NSArray<RPRNewsFeedEntry *> *entries = [Repro getNewsFeeds:limit offsetID:offsetID error:&error];
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-repro",
3
- "version": "3.3.1",
3
+ "version": "3.7.0",
4
4
  "description": "Repro is a mobile analytics tool that lets you have much deeper understanding of mobile app users with play-by-play videos.",
5
5
  "main": "index.js",
6
6
  "keywords": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "ios-sdk": "5.4.0",
3
- "android-sdk": "5.3.0",
4
- "bridge": "3.3.1"
2
+ "ios-sdk": "5.8.0",
3
+ "android-sdk": "5.6.0",
4
+ "bridge": "3.7.0"
5
5
  }
@@ -0,0 +1 @@
1
+ 95128ff0f21c7dce392fbe7376049930
@@ -0,0 +1 @@
1
+ db014f9b390093608d5678da13c524b8f6f5ab7d
@@ -4,6 +4,6 @@
4
4
  <modelVersion>4.0.0</modelVersion>
5
5
  <groupId>io.repro</groupId>
6
6
  <artifactId>repro-android-sdk</artifactId>
7
- <version>5.3.0</version>
7
+ <version>5.6.0</version>
8
8
  <packaging>aar</packaging>
9
9
  </project>
@@ -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.3.0</release>
6
+ <release>5.6.0</release>
7
7
  <versions>
8
- <version>5.3.0</version>
8
+ <version>5.6.0</version>
9
9
  </versions>
10
- <lastUpdated>20210416182421</lastUpdated>
10
+ <lastUpdated>20211207144549</lastUpdated>
11
11
  </versioning>
12
12
  </metadata>
@@ -1 +1 @@
1
- efa51ec660bf682bf222424c59f4c34a
1
+ 924daf8076ee56d2d816355b8cd95e8e
@@ -1 +1 @@
1
- cdbf5af4e30a8e2a619fba1c4528bc6840f70b69
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>
@@ -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;
@@ -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
 
@@ -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
+
@@ -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
@@ -0,0 +1,6 @@
1
+ framework module Repro {
2
+ umbrella header "Repro.h"
3
+
4
+ export *
5
+ module * { export * }
6
+ }
@@ -1 +0,0 @@
1
- 1926b7dbdd04860b4102bffd15d0301e
@@ -1 +0,0 @@
1
- 0adb951f679279ac9cc609bdc05d9cb29c7746bb
@@ -1 +0,0 @@
1
- b6a9e15d19d0426cbae61baebc71c6a4
@@ -1 +0,0 @@
1
- f513f7ce8c2112ab9fba66f4d23751be6af114bf
Binary file