我一直在关注UBER API,我想知道是否有办法在我的Android / iOS应用程序中运行服务,我的应用程序可以让用户下载位置。
我现在正在考虑的方式是以下场景: - 用户在UBER汽车前往目的地 - 我的应用程序会收到下拉位置(纬度,长度)位置的通知 - 我的应用程序通过通知建议他们可以在他们的下车地点做的事情。
这样的用例是否可能?
我对this API
感兴趣特别是在这个信息中: “目的地”:{ “纬度”:37.7766874, “东经”: - 122.394857, “埃塔”:19 }
感谢。
答案 0 :(得分:1)
这样的用例是可能的,并在以下链接中进行了更详细的解释:
要构建此次旅行体验,您必须向用户请求all_trips OAuth scope:
all_trips
获取用户当前正在旅行的详细信息 如何请求(通过优步应用程序或第三方 应用程序)。
特权
这是一个特权范围,因为您需要先从Uber请求访问权限,以便在Uber Developer Dashboard
中定义的应用程序中使用该范围然后,在您使用POST /v1/requests代表用户发出优步乘车请求后,您可以拨打GET /v1/requests/current或GET /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端点。有关最佳做法,请参阅this和this。
如果您的应用发出了乘车请求,则上述/ v1 /请求端点可以与Webhooks事件驱动机制结合使用,以便在您的服务器上通知您旅行的{{ {3}}或收据准备就绪,而不是每3-5秒轮询一次,以获得最新的详细信息。
当您通过网络连接收到优步的通知时,请拨打status has been updated或GET /v1/requests/current端点。
然后根据您收到的数据,您需要通知您的Android服务(通过服务器到客户端通信机制,例如websocket,推送通知等),可以从优步获得新信息,并根据您向用户显示的信息给出了“旅行背景”的相关信息。您想要使用的数据,例如:
- 当前位置(纬度/经度)
- 取件地点(纬度/经度)
- ETA接送(当车到达时)
- 目的地位置(纬度/经度)
- 到目的地的ETA(当用户在车内时)
webhook收到以下事件:
对于您的申请所提出的所有请求 代表优步车手,我们将向您的WEBHOOK网址发出请求 每当它的状态发生变化这可以帮助您通知用户或 更改应用的状态以反映状态更改 持续轮询/ v1 / requests端点。
对于您的申请代表优步车手提出的所有要求,我们 每当收到请求收据时,都会向您的WEBHOOK URL发出请求 可用。这将允许您向用户显示他们的详细信息 他们的收据一收到,他们的收费是多少 可用。如果骑手在宽限期后取消,他们就是 收费,收据仍然可用,显示该费用。
要访问“请求收据”资源,用户必须具有此权限 授权您的应用程序访问request_receipt 范围。