2016-02-04 35 views
2

我一直在尋找UBER API,並且想知道是否有一種方法可以在我的Android/iOS應用中運行服務,在那裏我的應用可以獲取用戶下拉菜單,關閉位置。使用優步API獲取用戶終點位置

的方式現在我想它是以下情形: - 用戶處於UBER車去目的地 - 我的應用程序得到通知的落客位置(緯度,經度)位置 的 - 我的應用程序建議他們可以通過通知在他們的位置附近做些事情。

這樣的用例有可能嗎?

我感興趣的this API

特別是在這樣的信息: 「目標」:{ 「緯度」:37.7766874, 「東經」: - 122.394857, 「埃塔」:19 }

謝謝。

回答

1

這樣的使用情況是可能的,在更多的細節在下面的鏈接解釋說:

要建立你有權要求本體驗之旅來自用戶的all_trips OAuth scope

all_trips

獲取用戶目前正在不分 它是如何要求(通過Uber應用或第三方應用程序 )的行程細節。

特權

這是一個優越的範圍,因爲它需要使從烏伯第一請求訪問的範圍你做出之後要在您在Uber Developer Dashboard

定義然後應用程序可用代表使用POST /v1/requests用戶的尤伯杯乘坐要求,你可以調用的GET /v1/requests/currentGET /v1/requests/{request_id}拿到行程細節:

{ 
    "request_id":"17cb78a7-b672-4d34-a288-a6c6e44d5315", 
    "status":"accepted", 
    "location":{ 
     "latitude":37.7886532015, 
     "longitude":-122.3961987534, 
     "bearing":135 
    }, 
    "pickup":{ 
     "latitude":37.7872486012, 
     "longitude":-122.4026315287, 
     "eta":5 
    }, 
    "destination":{ 
     "latitude":37.7766874, 
     "longitude":-122.394857, 
     "eta":19 
    }, 
    "driver": { 
     "phone_number": "(555)555-5555", 
     "rating": 5, 
     "picture_url": "https:\/\/d1w2poirtb3as9.cloudfront.net\/img.jpeg", 
     "name": "Bob" 
    }, 
    "vehicle":{ 
     "make": "Bugatti", 
     "model": "Veyron", 
     "license_plate": "I<3Uber", 
     "picture_url": "https:\/\/d1w2poirtb3as9.cloudfront.net\/car.jpeg" 
    }, 
    "surge_multiplier":1.0, 
    "eta": 5 
} 
  • 如果您的應用沒有發出行程請求,則必須輪詢GET /v1/requests/current端點。有關最佳做法,請參閱thisthis

  • 如果您的應用程序,使得乘坐要求,以上/ V1 /請求端點可以與Webhooks事件驅動機制相結合,讓你在你的服務器旅行的status has been updated或接收準備的通知,而不是你必須每3-5秒輪詢一次以獲得最新的細節。

當您收到通過網絡掛接你再調用GET /v1/requests/currentGET /v1/requests/{request_id}端點從尤伯杯的通知。

然後,您收到的數據需要通知您的Android服務(通過服務器到客戶端的通信機制,例如websocket,推送通知等),可以從優步獲得新信息,並基於您向用戶相關信息,例如:
- 當前位置(經度/緯度)
- 取貨地點(緯度/經度)
- ETA換貨(當汽車抵達時)
- 目的地位置(經度/緯度)
- ETA到達目的地(用戶在車內)

網絡掛接收到以下事件:

  • REQUESTS.STATUS_CHANGED

    對於您的應用程序上 代表尤伯杯車友提出的所有要求,我們將請求您網絡掛接網址 每當其狀態改變。這可以幫助您通知用戶或 更改您的應用的狀態以反映狀態更改,而不會連續輪詢/ v1/requests端點的0​​。

  • REQUESTS.RECEIPT_READY

    有關您的代表尤伯杯車手的應用程序發出的所有請求,我們將 每當請求收據 可以讓你的網絡掛接URL的請求。這可以讓您向您的用戶顯示其 票價的詳細信息以及一旦收到可用的收據 後,他們的收費是多少。如果騎手在寬限期過後取消,並且他們收到了 ,收據仍然可用,顯示該收費。

    要訪問請求回執資源,用戶必須擁有 授權您的應用程序才能訪問request_receipt 範圍。

Uber request states

+0

感謝這麼多回復 我瞭解OAuth的部分和網絡掛接(這是真棒,因爲那樣我的應用程序不必繼續在狀態檢查,然後我必須處理電池耗盡問題:))。 我不清楚的一件事是 - 我必須做POST/v1/requests嗎?因爲我不希望我的應用程序啓動該程序,而是希望我的應用程序知道正在進行中,然後通過webhooks,您可以獲得狀態如您所描述的那樣改變。 – user1352234

+0

如果您不想發出乘車請求,您可以使用帶有訪問令牌的訪問令牌來調用[GET /v1/requests/current](https://developer.uber.com/docs/v1-requests-current) [all_trips範圍](https://developer.uber.com/docs/scopes)和行程詳細信息將返回當前請求/行程,而不管哪個應用程序啓動它。all_trips是一個特權範圍,您需要向Uber請求開發人員儀表板中的應用程序訪問權限。 「有關所有未來優步行程的訪問行程詳情,包括所有未來遊樂設施的取件,目的地和實時位置」 – bitek

+0

但存在不足之處如果行程不匹配,您將不會在網站掛接網址中收到狀態更新通知請求不是由您的應用程序提出的。正如[網絡鉤子文檔](https://developer.uber.com/docs/webhooks#section-events)所述:「對於您的應用程序代表優步車手所提出的所有請求,我們會向您的WEBHOOK URL的狀態變化時「。你必須進行輪詢,查看[this](https://developer.uber.com/docs/tutorial-trip-experiences#section-best-practices)和[this](https://developer.uber.com/docs/tutorials-rides-api#section-processing-a-request)以獲得最佳做法 – bitek