解決策を見つけようとしていますが、私はfirebaseのデータ文字列を呼び出し、UIAlertViewの "title"と "message"として使用したいと思います。私はこのUIAlertViewをジオフェンスメッセージとして使用しています。ジオフェンスは、UIAlertViewをメッセージに入力する基本的な場所に設定しただけで、他のユーザーが読むために書いたメッセージを呼び出す必要があります。これまでのところ、このセットアップでは「OK」ボタンだけがポップアップし、一度リージョンに入力すると何も表示されません。Swift Firebase UIAlertViewとFirebaseのデータ文字列
func locationManager(_ manager: CLLocationManager, didDetermineState state: CLRegionState, for region: CLRegion) {
showAlert(withTitle: name, message: message)
//showAlert(withTitle: "Enter \(region.identifier)", message: "Geofence Message")
print(state)
print("region :\(region.identifier)")
}
func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {
showAlert()
//showAlert(withTitle: "Enter \(region.identifier)", message: "Geofence Message")
print("DID ENTER REGION")
}
func locationManager(_ manager: CLLocationManager, didExitRegion region: CLRegion) {
//showAlert(withTitle: "Exit \(region.identifier)", message: "Message Exit")
//TODO: stop local sequence
print("DID EXIT REGION")
}
func showAlert(withTitle title: String?, message: String?) {
FIRDatabase.database().reference().child("Businesses").observeSingleEvent(of: .value, with: { snapshot in
if let dictionary = snapshot.value as? [String: AnyObject] {
self.name = dictionary["businessName"] as? String
self.message = dictionary["geofenceMessage"] as? String
}
let alert = UIAlertController(title: self.name, message: self.message, preferredStyle: .alert)
let action = UIAlertAction(title: "Ok", style: .cancel, handler: nil)
alert.addAction(action)
self.present(alert, animated: true, completion: nil)
})
}
詳細
// Populate Map With Firebase Businesses
func loadPlaces(){
if CLLocationManager.isMonitoringAvailable(for: CLCircularRegion.self) {
FIRDatabase.database().reference().child("Businesses").observe(.value, with: { snapshot in
self.locationData = snapshot.value as? NSDictionary
if let data = self.locationData{
for (key,obj) in data{
let value = obj as? NSDictionary
let locationValue = value as! [String: Any]
let lat = Double(locationValue["businessLatitude"] as! String)
let long = Double(locationValue["businessLongitude"] as! String)
let businessTitle = String(locationValue["businessName"] as! String)
let center = CLLocationCoordinate2D(latitude: lat!, longitude: long!)
let radius = CLLocationDistance(500.0)
let geoRegion = CLCircularRegion(center: center, radius: radius, identifier: businessTitle!)
self.geofences.append(geoRegion)
self.locationManager.startMonitoring(for: geoRegion)
let overlay = MKCircle(center: center, radius: radius)
self.mapView.add(overlay)
geoRegion.notifyOnEntry = true
geoRegion.notifyOnExit = true
let annotation = MKPointAnnotation()
annotation.coordinate = geoRegion.center
annotation.title = businessTitle
self.mapView.addAnnotation(annotation)
self.nameKeyDict[(value?.value(forKey: "businessName") as? String)!] = key as? String
}
}
})
} else {
print("No Bueno")
}
}
Firebaseデータ構造
あなたが答えを理解していないからといって、答えが「狂っている」わけではありません。それはあなたを助けるために自由時間を費やす人々について少し謙虚であるようにあなたに適しています。 – matiastofteby