Я использую Uber и Lyft deeplink в своем приложении.Функциональность заключается в том, что когда пользователь нажимает кнопку «ездить с убером» или «ездить с лифтом», он открывает приложение Uber или Lyft и отправляет координаты посадки и назначения в Uber / Lyft, а приложение Uber / Lyft обрабатывает поездку.
Я использовал стандартную Deeplink для Uber.Все работает нормально, когда Uber уже открыт и работает в фоновом режиме.Когда Uber не находится в фоновом режиме, местоположение получения становится текущим местоположением пользователя (что неверно, поскольку пользователь хочет указать местоположение получения, а не обязательно текущее местоположение).Эта проблема не возникает в Lyft.
Это мой код:
class ViewController: UIViewController {
@IBOutlet weak var uberBtn: UIButton!
@IBOutlet weak var lyftBtn: UIButton!
@IBAction func uberClicked(_ sender: Any) {
if isInstalledOf(app: "uber") {
open(scheme: "uber://?action=setPickup&client_id=7r6zjXf5e1p4nqYkX17d9R44estKs-na&product_id=a12ab23b-66f0-4028-9bb9-856dbcfdbbc7&pickup[formatted_address]=5874%20Newberry%20Street%2C%20Romulus%2C%20MI%2C%20USA&pickup[latitude]=42.265570&pickup[longitude]=-83.387391&dropoff[formatted_address]=15609%20Regina%20Avenue%2C%20Allen%20Park%2C%20MI%2C%20USA&dropoff[latitude]=42.253737&dropoff[longitude]=-83.211945")
} else {
open(scheme: "https://m.uber.com/ul/")
}
}
@IBAction func lyftClicked(_ sender: Any) {
if isInstalledOf(app: "lyft") {
open(scheme: "lyft://ridetype?id=lyft&pickup[latitude]=42.265570&pickup[longitude]=-83.387391&destination[latitude]=42.253737&destination[longitude]=-83.211945")
} else {
open(scheme: "https://www.lyft.com/signup/SDKSIGNUP?clientId=IcEuyAmFO7Gp&sdkName=iOS_direct")
}
}
// check if the app is installed
func isInstalledOf(app: String) -> Bool {
return UIApplication.shared.canOpenURL(URL(string: "\(app)://")!)
}
func open(scheme: String) {
if let url = URL(string: scheme) {
if #available(iOS 10, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
UIApplication.shared.openURL(url)
}
}
}
}