iOS 的 Uber SDK - 获取通过 deep link 发出的实时乘车请求状态
Uber SDK for iOS - get real time ride request status made via deep link
我在寻找执行此操作的方法时遇到了一些问题。我有一个使用 iOS 的 Uber SDK 的应用程序。我能够添加带有 "Ride there with Uber" 文本的 "RideRequestButton" 以对 Uber 应用程序进行深层链接。此外,我已完成使用 SSO 请求令牌并使用 Request 范围获取令牌。现在的问题是......我不确定如何获取通过深层链接发出的当前乘车请求的状态。这可能吗?
谢谢!
我尝试遵循其中一个线程中提到的算法,即使用 RidesClient 获取当前行程,然后在获取行程请求 ID 后获取当前行程详细信息。这是我的代码的一瞥:
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")
}
})
}
}
每次我的应用程序设置为前台或激活时,都会调用上面的函数。
抱歉,另一个问题是。
我怎么知道这是否有效,有没有办法通过请求真正的乘车并完成整个交易来测试它?
在 request
范围内,您只能查看使用您的授权令牌启动的行程的状态。因此,如果用户深层链接到应用程序,然后从那里叫车,您将无法访问该信息。
为了获得此信息,您需要获得 all_trips
范围的授权。
我在寻找执行此操作的方法时遇到了一些问题。我有一个使用 iOS 的 Uber SDK 的应用程序。我能够添加带有 "Ride there with Uber" 文本的 "RideRequestButton" 以对 Uber 应用程序进行深层链接。此外,我已完成使用 SSO 请求令牌并使用 Request 范围获取令牌。现在的问题是......我不确定如何获取通过深层链接发出的当前乘车请求的状态。这可能吗?
谢谢!
我尝试遵循其中一个线程中提到的算法,即使用 RidesClient 获取当前行程,然后在获取行程请求 ID 后获取当前行程详细信息。这是我的代码的一瞥:
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")
}
})
}
}
每次我的应用程序设置为前台或激活时,都会调用上面的函数。
抱歉,另一个问题是。 我怎么知道这是否有效,有没有办法通过请求真正的乘车并完成整个交易来测试它?
在 request
范围内,您只能查看使用您的授权令牌启动的行程的状态。因此,如果用户深层链接到应用程序,然后从那里叫车,您将无法访问该信息。
为了获得此信息,您需要获得 all_trips
范围的授权。