При проявлении флаттера мне нужно детектировать IBeacon и сканировать его со всех сторон. В android я делаю это хорошо, и проблем нет.
Теперь на стороне ios я написал собственный плагин с использованием библиотеки CoreLocation и маяка обнаружения с менеджером местоположения.
его работает, и все в порядке.
Но когда я закрываю приложение и разрешение на местоположение всегда, после обнаружения IBeacon, My app go для некоторого плохого зрения, все тексты невидимы, а визуальные эффекты плохие.
На самом деле я установил некоторую проблему с флаттером в этой ссылке.
это мой ios побочный код
import CoreLocation
import Foundation
import UIKit
publi c class BeaconMainClass : NSObject, CLLocationManagerDelegate {
var onBeacon:BeaconDelegate!
var locationManager : CLLocationManager!
public var beaconRegion = CLBeaconRegion(proximityUUID:
UUID(uuidString: "9a71beb2-0e89-4175-b7a8-6167781d1d3c")!,identifier:
"beaconpay")
var isDeliverd = false
public
init(locationManager:CLLocationManager,beaconListener:BeaconDelegate)
{
super.init()
debugPrint("Hello")
self.locationManager = locationManager
self.onBeacon = beaconListener
self.locationManager.delegate = self
self.startMonitoring()
self.startRanging()
}
public func startMonitoring() {
locationManager.startMonitoring(for: self.beaconRegion)
debugPrint("monitoring started")
}
public func stopMonitoring(){
locationManager.stopMonitoring(for: self.beaconRegion)
debugPrint("monitoring stopped")
}
public func startRanging(){
locationManager.startRangingBeacons(in: self.beaconRegion)
debugPrint("ranging start")
}
public func stopRanging(){
locationManager.stopRangingBeacons(in: self.beaconRegion)
debugPrint("ranging stop")
}
public func locationManager(_ manager: CLLocationManager,
didEnterRegion region: CLRegion) {
if CLLocationManager.isRangingAvailable() {
debugPrint("enter region")
startRanging()
}
}
public func locationManager(_ manager: CLLocationManager,
didExitRegion region: CLRegion) {
debugPrint("exit region")
isDeliverd = false
}
public func locationManager(_ manager: CLLocationManager,
didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) {
let knownBeacons = beacons.filter{ $0.proximity !=
CLProximity.unknown }
if knownBeacons.count > 0 {
for beacon in knownBeacons {
print(beacon.accuracy)
if beacon.proximity == CLProximity.immediate {
if !isDeliverd {
isDeliverd = true
self.onBeacon.onBeaconReady(beacon: beacon)
}else {
}
}
}
}
}
}