2017-01-20 3 views
0

Я хочу показать одно уведомление, когда маяки появятся в регионе. Я использовал следующий код:Показывать уведомление, когда маяк находится в регионе

func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) { 
    if region is CLBeaconRegion { 
     BeaconNotificationFound() 
    } 
} 

Менеджер мест и регион верны. Единственная проблема заключается в том, что с этой функцией ничего не происходит. Что мне делать?

Это код выше:

let locationManager = CLLocationManager() 
let region = CLBeaconRegion(proximityUUID: UUID(uuidString: "E2C56DB5-DFFB-48D2-B060-D0F5A71096E0")!, identifier: "AirLocate") 

    override func viewDidLoad() { 
    super.viewDidLoad() 

    //Darf Standort genutzt werden? 
    locationManager.delegate = self 
    if (CLLocationManager.authorizationStatus() != CLAuthorizationStatus.authorizedWhenInUse) { 
     locationManager.requestWhenInUseAuthorization() 
     } 
    locationManager.startRangingBeacons(in: region) 
    locationManager.startMonitoring(for: region) 
} 
+0

Как выглядит код внутри BeaconNotificationFound()? Вы знаете, вызван ли этот метод? – davidgyoung

+0

Да, функция работает. Он попробовал это на другой должности. – luki512

+0

Хорошо, знаете ли вы, что BeaconNotificationFound() вызывается в этом случае? Проблема может быть просто в том, что это не так, что вы не получаете обратный вызов в регистровой записи. Это может быть много, много причин. Вероятно, вам нужно показать свой код, который настраивает мониторинг региона, и запрашивает разрешения на размещение в вашем приложении, чтобы мы могли быть уверены, что все правильно. – davidgyoung

ответ

0

Похоже, вы не получаете обратные вызовы метода didEnterRegion. Несколько вещей, чтобы проверить:

  1. Убедитесь, что Info.plist содержит запись, как показано ниже, в противном случае он не сможет подсказать вам для доступа местоположения: <key>NSLocationWhenInUseUsageDescription</key><string>This app needs to access your location so it can tell when you are near a beacon.</string>
  2. Убедитесь, что запрос на место доступ, и вы действительно предоставили его. Зайдите в «Настройки» -> [Имя вашего приложения] -> «Местоположение» и подтвердите, что «ДОСТУП ДОСТУПА К ЛОКАЦИИ» имеет галочку, которая не находится рядом с «Никогда».

  3. Убедитесь, что bluetooth включен.

  4. Завершите выезд из региона, перенеся приложение на передний план и выключив маячок не менее 60 секунд. Как только это будет сделано, снова включите маячок.

  5. Если ни одно из вышеперечисленных работ не используется, используйте приложение-детектор маякового устройства, например Locate, или AirLocate, чтобы убедиться, что он может видеть ваш маяк при передаче. Если вы используете одно из этих приложений, вы должны настроить свой UUID в приложении для обнаружения.

Смежные вопросы