AltBeacon / android-beacon-library

Allows Android apps to interact with BLE beacons
Apache License 2.0
2.84k stars 836 forks source link

Monitoring won't work when app is in background and foreground service is running in Android 10+ #1084

Closed albertRCell closed 2 years ago

albertRCell commented 2 years ago

Expected behavior

Monitoring should keep working after app is in the background

Actual behavior

Monitor stops when app is in background specifically when backgroundBetweenScanPeriod is grater than 0 and background location permission is not granted

Steps to reproduce this behavior

  1. Set up this config

    iBeaconManager.beaconParsers.add(
    BeaconParser().setBeaconLayout(BeaconParser.EDDYSTONE_UID_LAYOUT)
    )
    iBeaconManager.beaconParsers.add(
    BeaconParser().setBeaconLayout(BeaconParser.EDDYSTONE_TLM_LAYOUT)
    )
    BeaconManager.setRegionExitPeriod(3000)
    iBeaconManager.enableForegroundServiceScanning(
    BeaconNotificationManager.createNotification(
        context
    ), BeaconNotificationManager.notificationId
    )
    iBeaconManager.setEnableScheduledScanJobs(false)
    iBeaconManager.backgroundBetweenScanPeriod = 1000
    iBeaconManager.backgroundScanPeriod = 1500
    iBeaconManager.foregroundBetweenScanPeriod = 1000
    iBeaconManager.foregroundScanPeriod = 1500
    iBeaconManager.bind()
  2. Location permission is granted. (background location permission is not)

Mobile device model and OS version

Motorola Moto G Power OS version 11

Android Beacon Library version

3.19.2

More notes

This problem stops when backgroundBetweenScanPeriod is 0 or background location permission is granted

I have posted the question in stackoverflow as well. https://stackoverflow.com/q/72104470/7034213

Thanks.

davidgyoung commented 2 years ago

You do need background permission. See here:

https://stackoverflow.com/a/72104832/1461050

davidgyoung commented 2 years ago

You do need background permission. See here:

https://stackoverflow.com/a/72104832/1461050

Metolinam commented 2 years ago

Beklenen davranış

Uygulama arka planda olduktan sonra izleme çalışmaya devam etmelidir

Gerçek davranış

Uygulama arka plandayken özellikle backgroundBetweenScanPeriod 0'dan rende olduğunda ve arka plan konumu izni verilmediğinde monitör durur

Bu davranışı yeniden oluşturma adımları

  1. Bu yapılandırmayı ayarlayın
iBeaconManager.beaconParsers.add(
    BeaconParser().setBeaconLayout(BeaconParser.EDDYSTONE_UID_LAYOUT)
)
iBeaconManager.beaconParsers.add(
    BeaconParser().setBeaconLayout(BeaconParser.EDDYSTONE_TLM_LAYOUT)
)
BeaconManager.setRegionExitPeriod(3000)
iBeaconManager.enableForegroundServiceScanning(
BeaconNotificationManager.createNotification(
        context
    ), BeaconNotificationManager.notificationId
)
iBeaconManager.setEnableScheduledScanJobs(false)
iBeaconManager.backgroundBetweenScanPeriod = 1000
iBeaconManager.backgroundScanPeriod = 1500
iBeaconManager.foregroundBetweenScanPeriod = 1000
iBeaconManager.foregroundScanPeriod = 1500
iBeaconManager.bind()
  1. Konum izni verilir. (arka plan konumu izni değil)

Mobil cihaz modeli ve işletim sistemi sürümü

Motorola Moto G Power OS sürüm 11

Android Beacon Library sürümü

3.19.2

More notlar backgroundBetweenScanPeriod 0 olduğunda veya arka plan konumu izni verildiğinde bu sorun durur

Soruyu stackoverflow'da da yayınladım. https://stackoverflow.com/q/72104470/7034213

Teşekkürler.

.circleci/config.yml