信标接近检测器在 iOS 中不起作用 swift.



我正在构建一个应用程序,该应用程序使用 iPhone 6 中的定位信标应用程序和 iPhone 7 中的我的应用程序检测信标设备邻近度,但应用程序无法检测到信标发射器.我输入了正确的UUID和主要次要编号,但它不起作用。我在装有iOS 7的iPhone 13.5和装有iOS 6的iPhone 12上运行,它没有检测到。

import UIKit
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
@IBOutlet weak var distancestatuslbl: UILabel!
var locationmanager: CLLocationManager!

override func viewDidLoad() {
super.viewDidLoad()

locationmanager = CLLocationManager()
locationmanager.delegate = self

locationmanager.requestAlwaysAuthorization()
}
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {

if status == .authorizedAlways
{
print("Allowed any time")
startScanning()
}

else if status == .authorizedWhenInUse
{
print("Allowed only during run time")
startScanning()
}
}

func startScanning() {
if CLLocationManager.isMonitoringAvailable(for: CLBeaconRegion.self)
{
let uuid = UUID(uuidString: "2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6")
let majornumber: CLBeaconMajorValue = 123
let minornumber: CLBeaconMinorValue = 456

let beaconregion = CLBeaconRegion(uuid: uuid!, major: majornumber, minor: minornumber, identifier: "com.mybeacon")

locationmanager.startMonitoring(for: beaconregion)

print("Started scanning") 
}
}


func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {
if region is CLBeaconRegion
{
if CLLocationManager.isRangingAvailable()
{
locationmanager.startRangingBeacons(in: region as! CLBeaconRegion)

print("Starting ranging...")

}
}
}

func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) {

let nearestbeacon = beacons.first!

switch nearestbeacon.proximity {
case .near:
distancestatuslbl.text = "Near"
break

case .immediate:
distancestatuslbl.text = "Immediate"
break

case .far:
distancestatuslbl.text = "Far"
break
default:
print("sdf")
}        
}
}

您可能需要在viewDidLoad中调用startScanning()。 如前所述,它仅在首次授予权限后调用,这意味着它仅在您第一次运行应用程序并授予权限时启动,然后永远不会再次启动。

另外, 通过在与您的应用程序在同一部手机上运行定位应用程序来检查信标是否实际正在传输. 定位检测吗?

最新更新