2017-02-22 6 views
0

У меня возникли проблемы с поиском способа сделать это. У меня есть приложение, которое использует Uber SDK для iOS. Я смог добавить «RideRequestButton» с текстом «Ride there with Uber», чтобы сделать debplink для приложения Uber. Кроме того, я закончил запрос маркера с использованием SSO и извлечение маркера с областью запроса. Теперь проблема в том, что ... Я не уверен, как получить статус текущего запроса на поездку, сделанный с помощью deeplink. Это возможно?Uber SDK для iOS - получить статус запроса езды в реальном времени через глубокую ссылку

Спасибо!


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

func refreshRideRequestStatus() { 
    var requestID: String = "" 
    self.ridesClient.fetchCurrentRide({ 
     ride, response in 
     if (ride != nil) { 
      print ("[refreshRideRequestStatus] ride:", ride ?? "no active ride") 
      requestID = (ride?.requestID)! 
     } 
     else { 
      print ("[refreshRideRequestStatus] ride: no active ride") 
      print ("[refreshRideRequestStatus] response: ", response.response ?? "no response") 
     } 
    }) 

    if (requestID.isEmpty) { 
     print ("[refreshRideRequestStatus] no active request") 
    } 
    else { 
     print ("[refreshRideRequestStatus] requestID: ", requestID) 
     self.ridesClient.fetchRideDetails(requestID, completion: { 
      ride, response in 
      self.isTorchUberFlashable = false 
      if (response.statusCode == 200) { 
       let status:Int = (ride?.status)!.rawValue 
       print("refreshRideRequestStatus] status:", status) 
       switch (status) { 
       case 1: 
        print("[refreshRideRequestStatus] accepted") 
       case 2: 
        print("[refreshRideRequestStatus] arriving") 
       case 3: 
        print("[refreshRideRequestStatus] completed") 
       case 4: 
        print("[refreshRideRequestStatus] driverCanceled") 
       case 5: 
        print("[refreshRideRequestStatus] inProgress") 
       case 6: 
        print("[refreshRideRequestStatus] noDriversAvailable") 
       case 7: 
        print("[refreshRideRequestStatus] processing") 
       case 8: 
        print("[refreshRideRequestStatus] ridersCanceled") 
       case 9: 
        print("[refreshRideRequestStatus] unknown") 
       default:break 
       } 
      } 
      else { 
       print("[refreshRideRequestStatus] error: ", response.response ?? "no data request found") 
      } 
     }) 

    } 
} 

Функция выше будет вызываться каждый раз, когда мое приложение установлено на передний план или стало активным.

Извините, но другой вопрос будет. Как я узнаю, будет ли это работать, и есть ли способ проверить это, запросив настоящую поездку и завершить всю транзакцию?

ответ

4

С областью request вы можете посмотреть статус аттракционов, которые инициируются с использованием вашего токена аутентификации. Поэтому, если пользователь отключается в приложении, а затем запрашивает поездку оттуда, у вас не будет доступа к этой информации.

Для того, чтобы получить эту информацию, вам необходимо будет авторизоваться для области all_trips.

+0

благодарит @JohnBrophy! ... После изменения запроса области на all_trips. Является ли мой второй вопрос выполнимым? «Как я узнаю, что это будет работать, и есть ли способ проверить это, запросив настоящую поездку и завершить всю транзакцию?» – mCube

+0

Вы можете использовать песочницу, чтобы проверить поездку и увидеть, как веб-камеры уведомляют ваш сервер, когда поездка активна. –

+0

Привет @ Джон Брофи и Дастин Уиттл. Спасибо за вашу помощь. Еще один вопрос. Я смог сделать функцию, над которой я работаю, и протестировал ее, используя симуляцию (используя CURL через терминал). Мой клиент тоже хотел бы попробовать. Я отправил их сборку через testflight. Они сказали, что они могут установить его, но ожидаемая функциональность не работала над «поездкой в ​​реальном мире». Приложение все еще находится в Sandbox, когда я загружаю его в iTunesConnect. Есть ли что-то, что мне здесь не хватает? Еще раз спасибо – mCube