Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
4fe50b4
keep existing regions and notifications when possible
ShiCheng-Lu Sep 5, 2025
ff06d8b
notifications remaining
ShiCheng-Lu Sep 5, 2025
7b10532
fix duplicate synced notification issues
ShiCheng-Lu Sep 8, 2025
2b5711e
clean up logs
ShiCheng-Lu Sep 8, 2025
2544640
cleanup
ShiCheng-Lu Sep 8, 2025
4d729af
cleanup
ShiCheng-Lu Sep 8, 2025
b1b8eaf
cleanup
ShiCheng-Lu Sep 8, 2025
c515bd9
add semaphore for editing notifications
ShiCheng-Lu Sep 8, 2025
f168f1a
keep beacon notifications
ShiCheng-Lu Sep 8, 2025
6a2a969
bump version
ShiCheng-Lu Sep 8, 2025
0ed4ef4
.
ShiCheng-Lu Sep 9, 2025
0be314f
.
ShiCheng-Lu Sep 9, 2025
605e9e6
add gpx for testing
ShiCheng-Lu Sep 9, 2025
f8edf70
.
ShiCheng-Lu Sep 9, 2025
2176f14
initialize on tests tab
ShiCheng-Lu Sep 12, 2025
606aeb2
only track first 19 regions
ShiCheng-Lu Sep 12, 2025
db51a3a
early break on loop
ShiCheng-Lu Sep 15, 2025
4d3f7c0
Merge branch 'master' into shicheng/improve-sync-logic
ShiCheng-Lu Sep 15, 2025
035c86b
Merge branch 'master' into shicheng/improve-sync-logic
ShiCheng-Lu Oct 15, 2025
a35ea7f
sync logic in swift
ShiCheng-Lu Oct 16, 2025
1bf9666
revert objC impl to old, and use new version in swift
ShiCheng-Lu Oct 17, 2025
c5afd9f
add back Indoors
ShiCheng-Lu Oct 17, 2025
3fcd1e9
revert beacon manager
ShiCheng-Lu Oct 17, 2025
ae27893
make RadarLocationManagerSwift singleton
ShiCheng-Lu Oct 17, 2025
0aed520
reset NotificationHelper
ShiCheng-Lu Oct 17, 2025
96a28e1
feature flag
ShiCheng-Lu Oct 17, 2025
b13ab07
better comparison on notification request
ShiCheng-Lu Oct 20, 2025
c6f31b9
re-run test?
ShiCheng-Lu Oct 20, 2025
b92f01c
logs and events in UI
ShiCheng-Lu Oct 20, 2025
308a81a
clean up
ShiCheng-Lu Oct 20, 2025
40d978e
Merge branch 'master' into shicheng/improve-sync-logic-2
ShiCheng-Lu Oct 22, 2025
0d0aa4c
add geofence metadata that allows it to skip nearby sync
ShiCheng-Lu Oct 22, 2025
9e2e6d5
don't notify on exit
ShiCheng-Lu Oct 22, 2025
5b65c2f
a bit more logging
ShiCheng-Lu Oct 22, 2025
20475fb
log the list of pending notifications at once
ShiCheng-Lu Oct 22, 2025
8dd90cb
why dust thou stall
ShiCheng-Lu Oct 23, 2025
e8ffc5a
Revert "why dust thou stall"
ShiCheng-Lu Oct 23, 2025
480cec6
Merge branch 'master' into shicheng/improve-sync-logic-2
ShiCheng-Lu Oct 27, 2025
df8b5c8
logs
ShiCheng-Lu Oct 27, 2025
f2aa5c9
beta version
ShiCheng-Lu Oct 27, 2025
d2227e9
update indoor version
ShiCheng-Lu Oct 27, 2025
857a815
beta 2
ShiCheng-Lu Oct 27, 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
8 changes: 6 additions & 2 deletions Example/Example.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
F61886C12EA7DB440072E87C /* MyRadarDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F61886C02EA7DB3F0072E87C /* MyRadarDelegate.swift */; };
F61886C32EA7DB5F0072E87C /* LogsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F61886C22EA7DB5C0072E87C /* LogsView.swift */; };
F61886C52EA7DC820072E87C /* MapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F61886C42EA7DC800072E87C /* MapView.swift */; };
F61886E92EA91CF60072E87C /* DebugView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F61886E82EA91CF60072E87C /* DebugView.swift */; };
F625D7F92C3337650024D1E7 /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F625D7F82C3337650024D1E7 /* Launch Screen.storyboard */; };
F6513F602E6B736200523472 /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6513F5F2E6B736200523472 /* MainView.swift */; };
F66DAD6A2E707F0700896773 /* waypoints.gpx in Sources */ = {isa = PBXBuildFile; fileRef = F66DAD642E707F0300896773 /* waypoints.gpx */; };
Expand Down Expand Up @@ -85,6 +86,7 @@
F61886C02EA7DB3F0072E87C /* MyRadarDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyRadarDelegate.swift; sourceTree = "<group>"; };
F61886C22EA7DB5C0072E87C /* LogsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogsView.swift; sourceTree = "<group>"; };
F61886C42EA7DC800072E87C /* MapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapView.swift; sourceTree = "<group>"; };
F61886E82EA91CF60072E87C /* DebugView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DebugView.swift; sourceTree = "<group>"; };
F625D7F82C3337650024D1E7 /* Launch Screen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = "<group>"; };
F6513F5F2E6B736200523472 /* MainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainView.swift; sourceTree = "<group>"; };
F66DAD642E707F0300896773 /* waypoints.gpx */ = {isa = PBXFileReference; lastKnownFileType = text; path = waypoints.gpx; sourceTree = "<group>"; };
Expand Down Expand Up @@ -132,6 +134,7 @@
F61886C42EA7DC800072E87C /* MapView.swift */,
F61886C02EA7DB3F0072E87C /* MyRadarDelegate.swift */,
F61886B92EA7DB180072E87C /* TestsView.swift */,
F61886E82EA91CF60072E87C /* DebugView.swift */,
F61886C22EA7DB5C0072E87C /* LogsView.swift */,
F66DAD642E707F0300896773 /* waypoints.gpx */,
DD291168230D0AF900049D3A /* Utils.swift */,
Expand Down Expand Up @@ -288,6 +291,7 @@
F66DAD6A2E707F0700896773 /* waypoints.gpx in Sources */,
F61886C52EA7DC820072E87C /* MapView.swift in Sources */,
DD236D27230A006700EB88F9 /* AppDelegate.swift in Sources */,
F61886E92EA91CF60072E87C /* DebugView.swift in Sources */,
F6513F602E6B736200523472 /* MainView.swift in Sources */,
F61886C32EA7DB5F0072E87C /* LogsView.swift in Sources */,
F61886C12EA7DB440072E87C /* MyRadarDelegate.swift in Sources */,
Expand Down Expand Up @@ -350,7 +354,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
Expand Down Expand Up @@ -405,7 +409,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
Expand Down
1 change: 0 additions & 1 deletion Example/Example/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UIWindowSceneDelegate, UN
//radarInitializeOptions.autoHandleNotificationDeepLinks = true
Radar.initialize(publishableKey: "prj_test_pk_0000000000000000000000000000000000000000", options: radarInitializeOptions)
Radar.setUserId("testUserId")
Radar.setMetadata([ "foo": "bar" ])
Radar.setDelegate(self)
Radar.setVerifiedDelegate(self)

Expand Down
52 changes: 52 additions & 0 deletions Example/Example/DebugView.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
//
// DebugView.swift
// Example
//
// Created by ShiCheng Lu on 10/22/25.
// Copyright © 2025 Radar Labs, Inc. All rights reserved.
//

import SwiftUI
import RadarSDK

struct DebugView: View {
@StateObject var state: ViewState

var regionListFont = {
if #available(iOS 15.0, *) {
Font.system(size: 12).monospaced()
} else {
Font.system(size: 12)
}
}()

let timer = Timer.publish(every: 0.5, on: .main, in: .common).autoconnect()

var body: some View {
VStack {
Text("Monitoring regions: \(state.monitoringRegions.count)")
List(state.monitoringRegions, id: \.self) { region in
HStack {
Text(region.identifier).font(regionListFont)
Button("X") {
CLLocationManager().stopMonitoring(for: region)
}
}
}

Text("Pending notifications: \(state.pendingNotifications.count)")
List(state.pendingNotifications, id: \.self) { notification in
HStack {
Text(notification.identifier).font(regionListFont)
Button("X") {
UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [notification.identifier])
}
}
}
}
}
}

#Preview {
DebugView(state: ViewState())
}
16 changes: 6 additions & 10 deletions Example/Example/LogsView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,28 +9,27 @@ import SwiftUI
import RadarSDK

struct LogsView: View {
@StateObject var radarDelegateState = RadarDelegateState()
let radarDelegate = MyRadarDelegate()
@StateObject var state: ViewState

var body: some View {
VStack {
HStack {
Text("Logs")
Button("clear") {
radarDelegateState.logs.removeAll()
state.logs.removeAll()
}
}
List(radarDelegateState.logs, id:\.0) { item in
List(state.logs, id:\.0) { item in
return Text("\(item.1)")
}

HStack {
Text("Events")
Button("clear") {
radarDelegateState.events.removeAll()
state.events.removeAll()
}
}
List(radarDelegateState.events, id:\.self) { item in
List(state.events, id:\.self) { item in
let type = RadarEvent.string(for: item.type) ?? "unknown-type"
var description = ""
if let geofence = item.geofence {
Expand All @@ -39,13 +38,10 @@ struct LogsView: View {
return Text("\(type): \(description)")
}

}.onAppear {
radarDelegate.state = radarDelegateState
Radar.setDelegate(radarDelegate)
}
}
}

#Preview {
LogsView()
LogsView(state: ViewState())
}
32 changes: 30 additions & 2 deletions Example/Example/MainView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,29 +9,57 @@
import SwiftUI
import RadarSDK

class ViewState: ObservableObject {
@Published var logs: [(Int, String)] = []
@Published var events: [RadarEvent] = []
@Published var user: RadarUser? = nil
@Published var lastTrackedLocation: CLLocation? = nil
@Published var monitoringRegions = [CLCircularRegion]()
@Published var pendingNotifications = [UNNotificationRequest]()
}

struct MainView: View {

enum TabIdentifier {
case Map
case Debug
case Logs
case Tests
}

@State private var selectedTab: TabIdentifier = .Tests;
var state = ViewState()
let timer = Timer.publish(every: 1.0, on: .main, in: .common).autoconnect()

let radarDelegate = MyRadarDelegate()

var body: some View {
TabView(selection: $selectedTab) {
MapView().tabItem {
MapView(state: state).tabItem {
Text("Map")
}.tag(TabIdentifier.Map)

LogsView().tabItem {
DebugView(state: state).tabItem {
Text("Debug")
}.tag(TabIdentifier.Debug)

LogsView(state: state).tabItem {
Text("Logs")
}.tag(TabIdentifier.Logs)

TestsView().tabItem {
Text("Tests")
}.tag(TabIdentifier.Tests)
}.onAppear {
radarDelegate.state = self.state
Radar.setDelegate(radarDelegate)
}.onReceive(timer) { _ in
state.monitoringRegions = Array(CLLocationManager().monitoredRegions) as? [CLCircularRegion] ?? []
UNUserNotificationCenter.current().getPendingNotificationRequests { requests in
DispatchQueue.main.async {
state.pendingNotifications = requests
}
}
}
}
}
Expand Down
18 changes: 12 additions & 6 deletions Example/Example/MapView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,29 @@ import MapKit

struct MapView: View {

@State var monitoringRegions: [CLCircularRegion] = [];
let timer = Timer.publish(every: 1.0, on: .main, in: .common).autoconnect()
@StateObject var state: ViewState

var body: some View {
if #available(iOS 17.0, *) {
Map(initialPosition: .userLocation(fallback: .automatic)) {
UserAnnotation()

ForEach(monitoringRegions, id:\.self) {region in
ForEach(state.monitoringRegions, id:\.self) {region in
let color = region.identifier.contains("bubble") ? Color.blue : Color.orange
MapCircle(center: region.center, radius: region.radius)
.foregroundStyle(color.opacity(0.2))
.stroke(color, lineWidth: 2)

}
}.onReceive(timer) { _ in
monitoringRegions = Array(CLLocationManager().monitoredRegions) as? [CLCircularRegion] ?? []
ForEach(state.pendingNotifications, id:\.self) {request in
if let trigger = request.trigger as? UNLocationNotificationTrigger,
let region = trigger.region as? CLCircularRegion {
let color = Color.green
MapCircle(center: region.center, radius: region.radius)
.foregroundStyle(color.opacity(0.2))
.stroke(color, lineWidth: 2)
}
}
}
} else {
// Map with SwiftUI is not available before iOS 17
Expand All @@ -37,5 +43,5 @@ struct MapView: View {
}

#Preview {
MapView()
MapView(state: ViewState())
}
13 changes: 3 additions & 10 deletions Example/Example/MyRadarDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,14 @@

import RadarSDK

class RadarDelegateState: ObservableObject {
@Published var logs: [(Int, String)] = []
@Published var events: [RadarEvent] = []
@Published var user: RadarUser? = nil
@Published var lastTrackedLocation: CLLocation? = nil
}

class MyRadarDelegate: NSObject, RadarDelegate, ObservableObject {
var state: RadarDelegateState? = nil

var state: ViewState? = nil
func didReceiveEvents(_ events: [RadarEvent], user: RadarUser?) {
state?.events.append(contentsOf: events)
state?.user = user
}

func didUpdateLocation(_ location: CLLocation, user: RadarUser) {
state?.lastTrackedLocation = location
state?.user = user
Expand Down
2 changes: 1 addition & 1 deletion Package.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// swift-tools-version:5.3
import PackageDescription

let version = "3.23.4"
let version = "3.24.1-beta.2"

let package = Package(
name: "RadarSDK",
Expand Down
2 changes: 1 addition & 1 deletion RadarSDK.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'RadarSDK'
s.version = '3.23.4'
s.version = '3.24.1-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.' => '[email protected]' }
Expand Down
12 changes: 10 additions & 2 deletions RadarSDK.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,8 @@
E6B93B752C90E5B8003CB858 /* RadarInitializeOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = E6B93B732C90E5B8003CB858 /* RadarInitializeOptions.m */; };
E6EEC56E2B20F41A00DD096B /* RadarFileStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = E6EEC56D2B20F41A00DD096B /* RadarFileStorage.h */; };
E6EEC5702B20F45D00DD096B /* RadarFileStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = E6EEC56F2B20F45D00DD096B /* RadarFileStorage.m */; };
F61886892EA135320072E87C /* RadarLocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F61886882EA135320072E87C /* RadarLocationManager.swift */; };
F61886962EA2D10B0072E87C /* RadarState.swift in Sources */ = {isa = PBXBuildFile; fileRef = F61886952EA2D10B0072E87C /* RadarState.swift */; };
F64FF0D32E4D2B2400DF3926 /* RadarInAppMessageDelegate+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F64FF0D22E4D2B1800DF3926 /* RadarInAppMessageDelegate+Internal.h */; };
F64FF0D52E4D2B4700DF3926 /* RadarInAppMessageDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F64FF0D42E4D2B4700DF3926 /* RadarInAppMessageDelegate.m */; };
F64FF0D72E4D2B7300DF3926 /* RadarInAppMessageDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F64FF0D62E4D2B7300DF3926 /* RadarInAppMessageDelegate.swift */; };
Expand Down Expand Up @@ -367,6 +369,8 @@
E6B93B732C90E5B8003CB858 /* RadarInitializeOptions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RadarInitializeOptions.m; sourceTree = "<group>"; };
E6EEC56D2B20F41A00DD096B /* RadarFileStorage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RadarFileStorage.h; sourceTree = "<group>"; };
E6EEC56F2B20F45D00DD096B /* RadarFileStorage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RadarFileStorage.m; sourceTree = "<group>"; };
F61886882EA135320072E87C /* RadarLocationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadarLocationManager.swift; sourceTree = "<group>"; };
F61886952EA2D10B0072E87C /* RadarState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadarState.swift; sourceTree = "<group>"; };
F64FF0D22E4D2B1800DF3926 /* RadarInAppMessageDelegate+Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "RadarInAppMessageDelegate+Internal.h"; sourceTree = "<group>"; };
F64FF0D42E4D2B4700DF3926 /* RadarInAppMessageDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RadarInAppMessageDelegate.m; sourceTree = "<group>"; };
F64FF0D62E4D2B7300DF3926 /* RadarInAppMessageDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadarInAppMessageDelegate.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -544,6 +548,7 @@
E6B93B732C90E5B8003CB858 /* RadarInitializeOptions.m */,
DD236CF723088F8400EB88F9 /* RadarLocationManager.h */,
DD236CF823088F8400EB88F9 /* RadarLocationManager.m */,
F61886882EA135320072E87C /* RadarLocationManager.swift */,
96A5A11527ADA02E007B960B /* RadarLog.h */,
96A5A11427ADA02E007B960B /* RadarLog.m */,
96A5A11627ADA02E007B960B /* RadarLogBuffer.h */,
Expand Down Expand Up @@ -571,6 +576,7 @@
F64FF0DE2E4D2C2A00DF3926 /* RadarSettings.swift */,
DD236D0E2309B3FE00EB88F9 /* RadarState.h */,
DD236D0F2309B3FE00EB88F9 /* RadarState.m */,
F61886952EA2D10B0072E87C /* RadarState.swift */,
DD236CEB2308821600EB88F9 /* RadarTrackingOptions.m */,
DD8CCDF7246872360011690D /* RadarTripOptions.m */,
DD236D0323099B8400EB88F9 /* RadarUtils.h */,
Expand Down Expand Up @@ -927,6 +933,7 @@
F64FF0D52E4D2B4700DF3926 /* RadarInAppMessageDelegate.m in Sources */,
0107AB23262201EC008AB52F /* RadarSettings.m in Sources */,
0107AAAA26220165008AB52F /* RadarGeofenceGeometry.m in Sources */,
F61886892EA135320072E87C /* RadarLocationManager.swift in Sources */,
0107AAEC262201A6008AB52F /* RadarTrip.m in Sources */,
9679F4A327CD8DE200800797 /* CLLocation+Radar.m in Sources */,
0107AB08262201CE008AB52F /* RadarAPIClient.m in Sources */,
Expand All @@ -942,6 +949,7 @@
828D1A472E29599500663787 /* RadarTripOrder.m in Sources */,
0107AB1D262201E5008AB52F /* RadarLocationManager.m in Sources */,
0107AAB02622016B008AB52F /* RadarPlace.m in Sources */,
F61886962EA2D10B0072E87C /* RadarState.swift in Sources */,
0107AAE6262201A1008AB52F /* RadarSegment.m in Sources */,
0107AB20262201E9008AB52F /* RadarPermissionsHelper.m in Sources */,
0107AAC22622017E008AB52F /* RadarRoute.m in Sources */,
Expand Down Expand Up @@ -1129,7 +1137,7 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MARKETING_VERSION = 3.23.4;
MARKETING_VERSION = 3.24.1;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
Expand Down Expand Up @@ -1187,7 +1195,7 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MARKETING_VERSION = 3.23.4;
MARKETING_VERSION = 3.24.1;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
OTHER_CFLAGS = "-fembed-bitcode";
Expand Down
2 changes: 1 addition & 1 deletion RadarSDK/RadarAPIClient.m
Original file line number Diff line number Diff line change
Expand Up @@ -449,7 +449,7 @@ - (void)trackWithLocation:(CLLocation *_Nonnull)location
source:source
verified:verified
publishableKey:publishableKey
notificationsRemaining:notificationsDelivered
notificationsRemaining:notificationsRemaining
locationMetadata:locationMetadata
completionHandler:completionHandler];
}];
Expand Down
11 changes: 11 additions & 0 deletions RadarSDK/RadarLocationManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,17 @@

NS_ASSUME_NONNULL_BEGIN

API_AVAILABLE(ios(13.0))
@interface RadarLocationManagerSwift : NSObject

@property (nonatomic, strong) CLLocationManager * _Nullable locationManager;

+ (RadarLocationManagerSwift * _Nonnull)shared;
- (void)replaceMonitoredRegionsWithGeofences:(NSArray<RadarGeofence *> * _Nonnull)geofences;
- (nonnull instancetype)initWithLocationManager:(CLLocationManager * _Nonnull)locationManager;
@end


@interface RadarLocationManager : NSObject<CLLocationManagerDelegate>

@property (nonnull, strong, nonatomic) CLLocationManager *locationManager;
Expand Down
Loading
Loading