Skip to content

Commit 34f3b10

Browse files
jennantillajinliu9508
authored andcommitted
Merge pull request #1942 from OneSignal/fix/location_sharing
Fix: Update startGetLocation to only run if location is shared
2 parents d4b090b + 59462ad commit 34f3b10

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/preferences/IPreferencesService.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,11 @@ object PreferenceOneSignalKeys {
194194
*/
195195
const val PREFS_OS_LAST_LOCATION_TIME = "OS_LAST_LOCATION_TIME"
196196

197+
/**
198+
* (Boolean) Whether location should be shared with OneSignal.
199+
*/
200+
const val PREFS_OS_LOCATION_SHARED = "OS_LOCATION_SHARED"
201+
197202
// Permissions
198203

199204
/**

OneSignalSDK/onesignal/location/src/main/java/com/onesignal/location/internal/LocationManager.kt

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import android.os.Build
44
import com.onesignal.common.AndroidUtils
55
import com.onesignal.common.threading.suspendifyOnThread
66
import com.onesignal.core.internal.application.IApplicationService
7+
import com.onesignal.core.internal.preferences.IPreferencesService
8+
import com.onesignal.core.internal.preferences.PreferenceOneSignalKeys
9+
import com.onesignal.core.internal.preferences.PreferenceStores
710
import com.onesignal.core.internal.startup.IStartableService
811
import com.onesignal.debug.LogLevel
912
import com.onesignal.debug.internal.logging.Logging
@@ -22,13 +25,17 @@ internal class LocationManager(
2225
private val _capturer: ILocationCapturer,
2326
private val _locationController: ILocationController,
2427
private val _locationPermissionController: LocationPermissionController,
28+
private val _prefs: IPreferencesService,
2529
) : ILocationManager, IStartableService, ILocationPermissionChangedHandler {
26-
private var _isShared: Boolean = false
30+
private var _isShared: Boolean = _prefs.getBool(PreferenceStores.ONESIGNAL, PreferenceOneSignalKeys.PREFS_OS_LOCATION_SHARED, false)!!
2731
override var isShared
2832
get() = _isShared
2933
set(value) {
3034
Logging.debug("LocationManager.setIsShared(value: $value)")
35+
_prefs.saveBool(PreferenceStores.ONESIGNAL, PreferenceOneSignalKeys.PREFS_OS_LOCATION_SHARED, value)
3136
_isShared = value
37+
38+
onLocationPermissionChanged(value)
3239
}
3340

3441
override fun start() {
@@ -71,7 +78,7 @@ internal class LocationManager(
7178
var result = false
7279
withContext(Dispatchers.Main) {
7380
if (!isShared) {
74-
return@withContext false
81+
Logging.warn("Requesting location permission, but location sharing must also be enabled by setting isShared to true")
7582
}
7683

7784
val hasFinePermissionGranted =
@@ -179,13 +186,20 @@ internal class LocationManager(
179186

180187
// Started from this class or PermissionActivity
181188
private suspend fun startGetLocation() {
189+
if (!isShared) {
190+
return
191+
}
192+
182193
Logging.debug("LocationManager.startGetLocation()") // with lastLocation: " + lastLocation)
183194
try {
184195
if (!_locationController.start()) {
185196
Logging.warn("LocationManager.startGetLocation: not possible, no location dependency found")
186197
}
187198
} catch (t: Throwable) {
188-
Logging.warn("LocationManager.startGetLocation: Location permission exists but there was an error initializing: ", t)
199+
Logging.warn(
200+
"LocationManager.startGetLocation: Location permission exists but there was an error initializing: ",
201+
t,
202+
)
189203
}
190204
}
191205
}

0 commit comments

Comments
 (0)