Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
27fc369
implement client side ramp up
KennyHuRadar Oct 16, 2024
9206728
fix parsing of geofences
KennyHuRadar Oct 16, 2024
e2efd53
use swift 5.0
KennyHuRadar Oct 16, 2024
429b4ed
change build definition of radar test to remove un-needed source files
KennyHuRadar Oct 17, 2024
1a38ecd
remove un-needed logging, just flacky tests
KennyHuRadar Oct 17, 2024
e84a9f0
remove logging
KennyHuRadar Oct 17, 2024
61f6b8e
update pod file
KennyHuRadar Oct 17, 2024
eb7e5d8
remove un-needed imports
KennyHuRadar Oct 17, 2024
decb2a8
update normal trackonce behaviour
KennyHuRadar Oct 17, 2024
6e54e28
clean up
KennyHuRadar Oct 17, 2024
e6e3c6a
add new swift definitions
KennyHuRadar Oct 17, 2024
65b9250
add logger to be accessible by swift
KennyHuRadar Oct 17, 2024
9142abf
add flag
KennyHuRadar Oct 17, 2024
3397fc6
put feature behind flag
KennyHuRadar Oct 17, 2024
c4e115b
bump beta version
KennyHuRadar Oct 21, 2024
e8522f3
Merge branch 'master' into kenny/off-line-ramp-up
KennyHuRadar Oct 21, 2024
d404d57
bump to right beta version
KennyHuRadar Oct 21, 2024
3fd5b00
Update RadarSettings.m
KennyHuRadar Oct 21, 2024
c2fb45d
add build settings and suppress testing on builds for now
KennyHuRadar Oct 21, 2024
4015e47
add flag to project
KennyHuRadar Oct 21, 2024
c4828b8
uncomment out the tests
KennyHuRadar Oct 21, 2024
a87cea2
clean up
KennyHuRadar Oct 21, 2024
28ce949
remove duplicate soruce and also add some logging to adding nearby ge…
KennyHuRadar Oct 21, 2024
be8c1d2
add back compile source
KennyHuRadar Oct 21, 2024
bdfcc07
add inside geofence log message for radar offline manager
KennyHuRadar Oct 21, 2024
5ac6d23
use ramp up specific json resource and improve logging in radar state
KennyHuRadar Oct 22, 2024
c5572b3
make compatible with replays
KennyHuRadar Oct 24, 2024
b6dc7fa
only call when replay is unsuccessful
KennyHuRadar Oct 24, 2024
9b4f71d
change json file for test
KennyHuRadar Oct 24, 2024
af9e4f7
change how geofenes are turned to jsons
KennyHuRadar Oct 24, 2024
f9f874c
change shape of alternative tracking options
KennyHuRadar Oct 25, 2024
aa12fd4
Merge branch 'master' into kenny/off-line-ramp-up
KennyHuRadar Oct 28, 2024
39af20d
refactor geofenceTag and tracking option extraction logic
KennyHuRadar Oct 28, 2024
25d1094
disable user script in build setting in radarSDKMotion
KennyHuRadar Oct 28, 2024
6dd7481
use xcode 16 in circle ci
KennyHuRadar Oct 28, 2024
4f277fd
use iphone 16 in ci
KennyHuRadar Oct 28, 2024
7f8c280
Merge branch 'master' into kenny/off-line-ramp-up
KennyHuRadar Oct 28, 2024
25e455d
Update RadarSDKMotion.podspec
KennyHuRadar Oct 28, 2024
fc75f16
define cocoapods version (#410)
KennyHuRadar Oct 29, 2024
f2baf95
rename
KennyHuRadar Oct 29, 2024
3785164
Merge branch 'master' into kenny/off-line-ramp-up
KennyHuRadar Oct 29, 2024
85e1abe
rename
KennyHuRadar Oct 29, 2024
761ef37
refactor updateTrackingFromConfig
KennyHuRadar Oct 30, 2024
b1cae04
Merge branch 'master' into kenny/off-line-ramp-up
KennyHuRadar Oct 30, 2024
880cbe7
rename and fix typo
KennyHuRadar Oct 30, 2024
b6f811b
increase number of geofences synced
KennyHuRadar Nov 5, 2024
999b459
Merge branch 'master' into kenny/off-line-ramp-up
KennyHuRadar Nov 11, 2024
41c7a36
Merge
lmeier Dec 30, 2024
ac5011e
3.19.7-beta.1
lmeier Dec 30, 2024
4769e5e
Fix merge
lmeier Dec 30, 2024
6c18d6e
use event metadata
KennyHuRadar Feb 5, 2025
e8001f1
update parsing
KennyHuRadar Feb 11, 2025
9e4d340
add campaign type
KennyHuRadar Feb 13, 2025
576a8ee
condition on correct type
KennyHuRadar Feb 13, 2025
125082c
Merge branch 'master' into kenny/use-event-metadata-for-campaign
KennyHuRadar Mar 31, 2025
39bd8c2
use isequal instead for lint
KennyHuRadar Mar 31, 2025
af1a7bd
Merge branch 'master' into kenny/off-line-ramp-up
KennyHuRadar Mar 31, 2025
8681189
fix xcode merge issue
KennyHuRadar Mar 31, 2025
f219214
Merge branch 'master' into kenny/use-event-metadata-for-campaign
KennyHuRadar Apr 1, 2025
572f5a9
use campaignType
KennyHuRadar Apr 1, 2025
400a25c
first init
KennyHuRadar Apr 2, 2025
009cf4b
revert extra change
KennyHuRadar Apr 2, 2025
aef8617
simplify diff
KennyHuRadar Apr 2, 2025
e38329d
revert change for event changes
KennyHuRadar Apr 2, 2025
14c6a8f
remove extra refactor
KennyHuRadar Apr 2, 2025
e5b17f3
bump beta
KennyHuRadar Apr 2, 2025
24b4d9e
Merge branch 'master' into kenny/off-line-ramp-up
KennyHuRadar Apr 14, 2025
123d98c
compiles
KennyHuRadar Apr 17, 2025
08a684f
typo
KennyHuRadar Apr 17, 2025
4ed3989
tested manually
KennyHuRadar Apr 17, 2025
e46ebe1
.
KennyHuRadar Apr 17, 2025
0f24da5
fix bug
KennyHuRadar Apr 17, 2025
c36fc68
Merge branch 'kenny/offline-event-generation' into send-up-live-activ…
KennyHuRadar Apr 17, 2025
f5a62ea
cleanup
KennyHuRadar Apr 17, 2025
88d1931
Update XCFramework-Bridging-Header.h
KennyHuRadar Apr 17, 2025
737c074
bump version
KennyHuRadar Apr 18, 2025
4c803ce
suppress xcode lint issues
KennyHuRadar Apr 18, 2025
4d31f2c
.
KennyHuRadar Apr 18, 2025
89dd1b7
use dic value of geofences
KennyHuRadar Apr 18, 2025
668e201
add location manager
KennyHuRadar Apr 22, 2025
b101d69
log live activites are not enabled
KennyHuRadar Apr 22, 2025
a527eff
change to start updates
KennyHuRadar Apr 22, 2025
414829f
Experiment with always startUpdates
lmeier Apr 22, 2025
b113c9d
Revert "Experiment with always startUpdates"
lmeier Apr 22, 2025
dabe9d6
Merge branch 'kenny/use-event-metadata-for-campaign' into kenny/conso…
KennyHuRadar May 5, 2025
00ba9fb
bump beta
KennyHuRadar May 5, 2025
7b20cd0
bump beta version
KennyHuRadar May 6, 2025
b475f40
also add notifications for uuid beacons
KennyHuRadar May 7, 2025
1a11af7
save for branch change
KennyHuRadar May 7, 2025
4c25e9e
use results from track to enrich beacons
KennyHuRadar May 12, 2025
1e1b4de
add in import
KennyHuRadar May 12, 2025
72a3938
save for new regions based csbn
KennyHuRadar May 13, 2025
0051a38
remove old code
KennyHuRadar May 13, 2025
e8ce080
maintain backwards compatibility with metedata based notifications
KennyHuRadar May 13, 2025
ed15274
change type of metadata passed down
KennyHuRadar May 15, 2025
87c296b
Merge branch 'master' into kenny/beacons-notification-spike
KennyHuRadar May 15, 2025
4348e38
.
KennyHuRadar May 16, 2025
ae9029d
clean up
KennyHuRadar May 16, 2025
91327b1
merge in beacons stuff
KennyHuRadar May 16, 2025
f82efa3
add additional logging
KennyHuRadar May 19, 2025
5517d17
make track once on start respect beacon config
KennyHuRadar May 19, 2025
6a47a54
.
KennyHuRadar May 19, 2025
9045e73
bump version
KennyHuRadar May 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/release-sdk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ jobs:
run: xcodebuild clean build analyze test -workspace Example/Example.xcodeproj/project.xcworkspace -scheme RadarSDK -destination "platform=iOS Simulator,name=iPhone 15 Pro" | xcpretty

- name: Build archive for iPhone simulator (RadarSDK)
run: xcodebuild archive -scheme RadarSDK -archivePath "RadarSDK-iphonesimulator.xcarchive" -sdk iphonesimulator SKIP_INSTALL=NO CODE_SIGN_IDENTITY= CODE_SIGNING_REQUIRED=NO
run: xcodebuild archive -scheme RadarSDK -archivePath "RadarSDK-iphonesimulator.xcarchive" -sdk iphonesimulator SKIP_INSTALL=NO CODE_SIGN_IDENTITY= CODE_SIGNING_REQUIRED=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES

- name: Build archive for iPhone device (RadarSDK)
run: xcodebuild archive -scheme RadarSDK -archivePath "RadarSDK-iphoneos.xcarchive" -sdk iphoneos SKIP_INSTALL=NO CODE_SIGN_IDENTITY= CODE_SIGNING_REQUIRED=NO
run: xcodebuild archive -scheme RadarSDK -archivePath "RadarSDK-iphoneos.xcarchive" -sdk iphoneos SKIP_INSTALL=NO CODE_SIGN_IDENTITY= CODE_SIGNING_REQUIRED=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES

- name: Build archive for iPhone simulator (RadarSDKMotion)
run: cd RadarSDKMotion && xcodebuild archive -scheme RadarSDKMotion -archivePath "../RadarSDKMotion-iphonesimulator.xcarchive" -sdk iphonesimulator SKIP_INSTALL=NO CODE_SIGN_IDENTITY= CODE_SIGNING_REQUIRED=NO
Expand Down
5 changes: 3 additions & 2 deletions RadarSDK.podspec
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
Pod::Spec.new do |s|
s.name = 'RadarSDK'
s.version = '3.21.4'
s.version = '3.21.5-beta.2'
s.summary = 'iOS SDK for Radar, the leading geofencing and location tracking platform'
s.homepage = 'https://radar.com'
s.author = { 'Radar Labs, Inc.' => 'support@radar.com' }
s.platform = :ios
s.source = { :git => 'https://github.com/radarlabs/radar-sdk-ios.git', :tag => s.version.to_s }
s.source_files = ["RadarSDK/*.{h,m}", "RadarSDK/Internal/*.{h,m}", "RadarSDK/Include/*.h"]
s.source_files = ["RadarSDK/*.{h,m,swift}", "RadarSDK/Internal/*.{h,m}", "RadarSDK/Include/*.h"]
s.module_name = 'RadarSDK'
s.ios.deployment_target = '12.0'
s.frameworks = 'CoreLocation'
s.requires_arc = true
s.license = { :type => 'Apache-2.0' }
s.resource_bundles = {'RadarSDK' => ['RadarSDK/PrivacyInfo.xcprivacy']}
s.swift_version = '5.0'
end
97 changes: 71 additions & 26 deletions RadarSDK.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion RadarSDK/Include/Radar.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,9 @@ typedef NS_ENUM(NSInteger, RadarLocationSource) {
/// Beacon exit
RadarLocationSourceBeaconExit,
/// Unknown
RadarLocationSourceUnknown
RadarLocationSourceUnknown,
/// Offline
RadarLocationSourceOffline
};

/**
Expand Down
1 change: 1 addition & 0 deletions RadarSDK/Include/RadarTrackingOptions.h
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@ typedef NS_ENUM(NSInteger, RadarTrackingOptionsSyncLocations) {
+ (NSString *)stringForSyncLocations:(RadarTrackingOptionsSyncLocations)syncLocations;
+ (RadarTrackingOptionsSyncLocations)syncLocationsForString:(NSString *)str;
+ (RadarTrackingOptions *_Nullable)trackingOptionsFromDictionary:(NSDictionary *_Nonnull)dictionary;
+ (RadarTrackingOptions *_Nullable)trackingOptionsFromObject:(NSObject *_Nonnull)object;
- (NSDictionary *)dictionaryValue;

@end
Expand Down
48 changes: 23 additions & 25 deletions RadarSDK/Radar.m
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ + (void)initializeWithPublishableKey:(NSString *)publishableKey options:(RadarIn
verified:NO
completionHandler:^(RadarStatus status, RadarConfig *config) {
if (status == RadarStatusSuccess && config) {
[[RadarLocationManager sharedInstance] updateTrackingFromMeta:config.meta];
[[RadarLocationManager sharedInstance] updateTrackingFromConfig:config];
[RadarSettings setSdkConfiguration:config.meta.sdkConfiguration];
}

Expand All @@ -103,7 +103,7 @@ + (void)initializeWithPublishableKey:(NSString *)publishableKey options:(RadarIn
[Radar startTrackingWithOptions:[RadarSettings trackingOptions]];
}
if (sdkConfiguration.trackOnceOnAppOpen) {
[Radar trackOnceWithCompletionHandler:nil];
[Radar trackOnceWithDesiredAccuracy:RadarTrackingOptionsDesiredAccuracyMedium beacons:[Radar getTrackingOptions].beacons completionHandler:nil];
}

[self flushLogs];
Expand Down Expand Up @@ -214,20 +214,17 @@ + (void)trackOnceWithDesiredAccuracy:(RadarTrackingOptionsDesiredAccuracy)desire
beacons:beacons
completionHandler:^(RadarStatus status, NSDictionary *_Nullable res, NSArray<RadarEvent *> *_Nullable events, RadarUser *_Nullable user,
NSArray<RadarGeofence *> *_Nullable nearbyGeofences, RadarConfig *_Nullable config, RadarVerifiedLocationToken *_Nullable token) {
if (status == RadarStatusSuccess) {
[[RadarLocationManager sharedInstance] replaceSyncedGeofences:nearbyGeofences];
if (config != nil) {
[[RadarLocationManager sharedInstance] updateTrackingFromMeta:config.meta];
}

}
[[RadarLocationManager sharedInstance] updateTrackingFromConfig:config];
if (status == RadarStatusSuccess) {
[[RadarLocationManager sharedInstance] replaceSyncedGeofences:nearbyGeofences];
}

if (completionHandler) {
[RadarUtils runOnMainThread:^{
completionHandler(status, location, events, user);
}];
}
}];
if (completionHandler) {
[RadarUtils runOnMainThread:^{
completionHandler(status, location, events, user);
}];
}
}];
};

if (beacons) {
Expand Down Expand Up @@ -287,15 +284,13 @@ + (void)trackOnceWithLocation:(CLLocation *)location completionHandler:(RadarTra
beacons:nil
completionHandler:^(RadarStatus status, NSDictionary *_Nullable res, NSArray<RadarEvent *> *_Nullable events, RadarUser *_Nullable user,
NSArray<RadarGeofence *> *_Nullable nearbyGeofences, RadarConfig *_Nullable config, RadarVerifiedLocationToken *_Nullable token) {
if (status == RadarStatusSuccess && config != nil) {
[[RadarLocationManager sharedInstance] updateTrackingFromMeta:config.meta];
[[RadarLocationManager sharedInstance] updateTrackingFromConfig:config];
if (completionHandler) {
[RadarUtils runOnMainThread:^{
completionHandler(status, location, events, user);
}];
}
if (completionHandler) {
[RadarUtils runOnMainThread:^{
completionHandler(status, location, events, user);
}];
}
}];
}];
}

+ (void)trackVerifiedWithCompletionHandler:(RadarTrackVerifiedCompletionHandler)completionHandler {
Expand Down Expand Up @@ -1274,6 +1269,9 @@ + (NSString *)stringForLocationSource:(RadarLocationSource)source {
case RadarLocationSourceBeaconExit:
str = @"BEACON_EXIT";
break;
case RadarLocationSourceOffline:
str = @"OFFLINE_DETECTION";
break;
case RadarLocationSourceUnknown:
str = @"UNKNOWN";
}
Expand Down Expand Up @@ -1346,7 +1344,7 @@ - (void)applicationWillEnterForeground {
if (status != RadarStatusSuccess || !config) {
return;
}
[[RadarLocationManager sharedInstance] updateTrackingFromMeta:config.meta];
[[RadarLocationManager sharedInstance] updateTrackingFromConfig:config];
[RadarSettings setSdkConfiguration:config.meta.sdkConfiguration];
}];
}
Expand All @@ -1355,7 +1353,7 @@ - (void)applicationWillEnterForeground {

RadarSdkConfiguration *sdkConfiguration = [RadarSettings sdkConfiguration];
if (sdkConfiguration.trackOnceOnAppOpen) {
[Radar trackOnceWithCompletionHandler:nil];
[Radar trackOnceWithDesiredAccuracy:RadarTrackingOptionsDesiredAccuracyMedium beacons:[Radar getTrackingOptions].beacons completionHandler:nil];
}
}

Expand Down
2 changes: 1 addition & 1 deletion RadarSDK/RadarAPIClient.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
#import "RadarRoutes.h"
#import "RadarUser.h"
#import "RadarVerifiedLocationToken.h"

#import "RadarSwiftUtils.h"
NS_ASSUME_NONNULL_BEGIN

typedef void (^_Nonnull RadarTrackAPICompletionHandler)(RadarStatus status,
Expand Down
55 changes: 50 additions & 5 deletions RadarSDK/RadarAPIClient.m
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#import "Radar.h"
#import "RadarAddress+Internal.h"
#import "RadarBeacon+Internal.h"
#import "RadarBeaconManager.h"
#import "RadarConfig.h"
#import "RadarContext+Internal.h"
#import "RadarCoordinate+Internal.h"
Expand All @@ -35,6 +36,7 @@
#import "RadarVerifiedLocationToken+Internal.h"
#import "RadarNotificationHelper.h"
#import <os/log.h>
#import "RadarOfflineManager.h"

@implementation RadarAPIClient

Expand Down Expand Up @@ -227,6 +229,7 @@ - (void)trackWithLocation:(CLLocation *_Nonnull)location
params[@"anonymous"] = @(anonymous);
if (anonymous) {
params[@"deviceId"] = @"anonymous";
// this can be updated by offline event detection, which feels correct, not going to address right now for simplicity
params[@"geofenceIds"] = [RadarState geofenceIds];
params[@"placeId"] = [RadarState placeId];
params[@"regionIds"] = [RadarState regionIds];
Expand Down Expand Up @@ -313,6 +316,9 @@ - (void)trackWithLocation:(CLLocation *_Nonnull)location
RadarTrackingOptions *options = [Radar getTrackingOptions];
if (options.syncGeofences) {
params[@"nearbyGeofences"] = @(YES);
if (sdkConfiguration.useOfflineRTOUpdates) {
params[@"nearbyGeofencesLimit"] = @(100);
}
}
if (beacons) {
params[@"beacons"] = [RadarBeacon arrayForBeacons:beacons];
Expand All @@ -326,6 +332,7 @@ - (void)trackWithLocation:(CLLocation *_Nonnull)location
params[@"locationAccuracyAuthorization"] = locationAccuracyAuthorization;
}
params[@"notificationAuthorization"] = @([RadarState notificationPermissionGranted]);
params[@"liveActivityAvailable"] = @([RadarSwiftUtils areActivitiesEnabled]);

params[@"trackingOptions"] = [options dictionaryValue];

Expand Down Expand Up @@ -465,13 +472,25 @@ - (void)makeTrackRequestWithParams:(NSDictionary *)params
if (status != RadarStatusSuccess) {
[[RadarLogger sharedInstance] logWithLevel:RadarLogLevelDebug message:[NSString stringWithFormat:@"Failed to flush replays"]];
[[RadarDelegateHolder sharedInstance] didFailWithStatus:status];
if ([RadarSettings sdkConfiguration].useOfflineRTOUpdates) {
NSArray<RadarGeofence *> *userGeofences = [RadarOfflineManager getUserGeofencesFromLocation:location];
[RadarOfflineManager generateEventsFromOfflineLocations:location userGeofences:userGeofences completionHandler:^(NSArray<RadarEvent *> *events, RadarUser *user, CLLocation *location) {
if (events && events.count) {
[[RadarDelegateHolder sharedInstance] didReceiveEvents:events user:user];
}

[[RadarDelegateHolder sharedInstance] didUpdateLocation:location user:user];
}];
return [RadarOfflineManager updateTrackingOptionsFromOfflineLocation:userGeofences completionHandler:^(RadarConfig * _Nullable config) {
return completionHandler(status, nil, nil, nil, nil, config, nil);
}];
}
} else {
[[RadarLogger sharedInstance] logWithLevel:RadarLogLevelDebug message:[NSString stringWithFormat:@"Successfully flushed replays"]];
[RadarState setLastFailedStoppedLocation:nil];
[RadarSettings updateLastTrackedTime];
}

completionHandler(status, nil, nil, nil, nil, nil, nil);
return completionHandler(status, nil, nil, nil, nil, nil, nil);
}];
} else {
[self.apiHelper requestWithMethod:@"POST"
Expand All @@ -497,10 +516,28 @@ - (void)makeTrackRequestWithParams:(NSDictionary *)params
}

[[RadarDelegateHolder sharedInstance] didFailWithStatus:status];
if ([RadarSettings sdkConfiguration].useOfflineRTOUpdates) {
NSArray<RadarGeofence *> *userGeofences = [RadarOfflineManager getUserGeofencesFromLocation:location];
[RadarOfflineManager generateEventsFromOfflineLocations:location userGeofences:userGeofences completionHandler:^(NSArray<RadarEvent *> *events, RadarUser *user, CLLocation *location) {
[[RadarLogger sharedInstance] logWithLevel:RadarLogLevelInfo message:[NSString stringWithFormat:@"events from offline manager: %@", events]];
if (events && events.count) {
[[RadarDelegateHolder sharedInstance] didReceiveEvents:events user:user];
}
[[RadarLogger sharedInstance] logWithLevel:RadarLogLevelInfo message:[NSString stringWithFormat:@"location from offline manager: %@", location]];

[[RadarDelegateHolder sharedInstance] didUpdateLocation:location user:user];

}];

return [RadarOfflineManager updateTrackingOptionsFromOfflineLocation:userGeofences completionHandler:^(RadarConfig * _Nullable config) {
return completionHandler(status, nil, nil, nil, nil, config, nil);
}];
} else {
return completionHandler(status, nil, nil, nil, nil, nil, nil);
}


return completionHandler(status, nil, nil, nil, nil, nil, nil);
}

[[RadarReplayBuffer sharedInstance] clearBuffer];
[RadarState setLastFailedStoppedLocation:nil];
[Radar flushLogs];
Expand All @@ -510,6 +547,7 @@ - (void)makeTrackRequestWithParams:(NSDictionary *)params

id eventsObj = res[@"events"];
id userObj = res[@"user"];

id nearbyGeofencesObj = res[@"nearbyGeofences"];
NSArray<RadarEvent *> *events = [RadarEvent eventsFromObject:eventsObj];
RadarUser *user = [[RadarUser alloc] initWithObject:userObj];
Expand Down Expand Up @@ -559,7 +597,6 @@ - (void)makeTrackRequestWithParams:(NSDictionary *)params
}
[RadarState setBeaconIds:beaconIds];
}

if (events && user) {
[RadarSettings setId:user._id];

Expand All @@ -583,6 +620,14 @@ - (void)makeTrackRequestWithParams:(NSDictionary *)params
[[RadarDelegateHolder sharedInstance] didUpdateToken:token];
}

[RadarState setRadarUser:user];

id nearbyBeaconRegionsObj = res[@"nearbyBeaconRegions"];
if (nearbyBeaconRegionsObj && [nearbyBeaconRegionsObj isKindOfClass:[NSArray class]]) {
NSArray<NSDictionary<NSString *, NSString *> *> *beaconRegions = (NSArray<NSDictionary<NSString *, NSString *> *> *)nearbyBeaconRegionsObj;
[[RadarBeaconManager sharedInstance] registerBeaconRegionNotificationsFromArray:beaconRegions];
}

return completionHandler(RadarStatusSuccess, res, events, user, nearbyGeofences, config, token);
} else {
[[RadarLogger sharedInstance] logWithLevel:RadarLogLevelInfo message:[NSString stringWithFormat:@"Setting %lu notifications remaining", (unsigned long)notificationsRemaining.count]];
Expand Down
1 change: 1 addition & 0 deletions RadarSDK/RadarBeaconManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonnull, strong, nonatomic) RadarPermissionsHelper *permissionsHelper;

+ (instancetype)sharedInstance;
- (void)registerBeaconRegionNotificationsFromArray:(NSArray<NSDictionary<NSString *, NSString*> *> *_Nonnull)beaconArray;
- (void)rangeBeacons:(NSArray<RadarBeacon *> *_Nonnull)beacons completionHandler:(RadarBeaconCompletionHandler)completionHandler;
- (void)rangeBeaconUUIDs:(NSArray<NSString *> *_Nonnull)beaconUUIDs completionHandler:(RadarBeaconCompletionHandler)completionHandler;
- (void)handleBeaconEntryForRegion:(CLBeaconRegion *)region completionHandler:(RadarBeaconCompletionHandler)completionHandler;
Expand Down
Loading