ios - no puedo encontrar la manera de insertar correctamente mi ubicación actual en el cuerpo del mensaje con CLPlacemark
swift swift2 (1)
Simplemente al crear CLPlacemark no obtendrá la ubicación para usted. Deberá crear el objeto de CLLocationManager y luego actualizar su ubicación actual utilizando el método startUpdatingLocation del objeto CLLocationManager. También deberá implementar métodos delegados para recibir la ubicación actual de esta manera.
import UIKit
import CoreLocation
class Location: UIViewController, CLLocationManagerDelegate {
let locationManager = CLLocationManager()
var currentLocation : CLPlacemark?
var locationManager = CLLocationManager()
private override init() {
super.init()
locationManager.delegate = self
}
func updateLocation()
{
locationManager.startUpdatingLocation()
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
locationManager.stopUpdatingLocation()
let location : CLLocation = locations.last as CLLocation!
//use reverse geocoding to get the address from location coordinates you got
}
}
Una vez que obtenga las coordenadas de ubicación, puede hacer una geocodificación inversa para obtener la marca de lugar o la dirección exacta. Consulte Ubicación de geocodificación inversa en Swift para geocodificación inversa. En cuanto al error que está recibiendo, puede verificar si el objeto de marca de posición es nulo antes de crear un mensaje.
Hace unos días, apenas intenté insertar mi ubicación actual en el cuerpo del mensaje en mi iPhone, pero fallé.
Intenté todo lo que tenía en mente, pero solo obtuve errores
El último error que obtuve es
"error fatal: encontrado inesperadamente nulo mientras desenvuelve un valor opcional"
CLPlacemark
un objeto de CLPlacemark
y lo hice opcional, lo que significa que podría tener valor o podría no tener valor.
¿Hay alguna manera de crear un mensaje con mi ubicación actual?
Archivo MainMenu
import UIKit
import Social
import MessageUI
import Foundation
import CoreLocation
class MainMenu: UIViewController , MFMessageComposeViewControllerDelegate , UINavigationControllerDelegate , MFMailComposeViewControllerDelegate, CLLocationManagerDelegate {
let locationManager = CLLocationManager()
func messageComposeViewController(controller: MFMessageComposeViewController, didFinishWithResult result: MessageComposeResult) {
}
let placeMarks = Location()
@IBAction func TapOnEmergency(sender: UIButton) {
let textMessageRecipients = ["+123456789"]
let messageComposer = MFMessageComposeViewController()
let Emergency = UIAlertController(title: "Do You Need Help ?", message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet)
let Yes = UIAlertAction(title: "YES", style: .Default) { (action) in
if (MFMessageComposeViewController.canSendText()) {
messageComposer.messageComposeDelegate = self
messageComposer.recipients = textMessageRecipients
messageComposer.body = "I''m Lost, I need some Help, Here''s my Location /(self.placeMarks.currentLocation!.country)"
self.navigationController?.presentViewController(messageComposer, animated: true){}
self.presentViewController(messageComposer, animated: true, completion: nil)
self.messageComposeViewController(messageComposer, didFinishWithResult: MessageComposeResultCancelled)
} else {
let errorAlert = UIAlertController(title: "Cannot Send Text Message", message: "Your device is not able to send text messages.", preferredStyle: UIAlertControllerStyle.Alert)
errorAlert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Cancel, handler: nil))
self.presentViewController(errorAlert, animated: true, completion: nil)
}
let Options = UIAlertController(title: "Do You Want to Call Your Supervisor ?", message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet)
let dialNumber = UIAlertAction(title: "YES", style: .Default) { (action) in
let call:NSURL = NSURL(string: "tel://123456789")!
UIApplication.sharedApplication().openURL(call)
}
Options.addAction(dialNumber)
let Dismiss = UIAlertAction(title: "Dismiss", style: .Destructive) { (action) in
}
Options.addAction(Dismiss)
self.presentViewController(Options, animated: true) {}
}
Emergency.addAction(Yes)
let No = UIAlertAction(title: "Dismiss", style: .Destructive) { (action) in
}
Emergency.addAction(No)
self.presentViewController(Emergency, animated: true) {}
}
}
Archivo de ubicación
import UIKit
import CoreLocation
class Location: UIViewController, CLLocationManagerDelegate {
let locationManager = CLLocationManager()
var currentLocation : CLPlacemark?
}