iOS版Uber SDK-通过深度链接获取实时乘车请求状态

iOS版Uber SDK-通过深度链接获取实时乘车请求状态,ios,swift,xcode,uber-api,Ios,Swift,Xcode,Uber Api,我找不到办法来做这件事。我有一个应用程序,它在iOS上使用Uber SDK。我可以添加“RideRequestButton”和“Ride there with Uber”文本,以进行Uber应用程序的深度链接。另外,我已经完成了使用SSO请求令牌并获取具有请求范围的令牌。现在的问题是。。。我不知道如何获取通过deeplink发出的当前乘坐请求的状态。这可能吗 谢谢 我尝试遵循其中一个线程中提到的算法,即使用RidesClient获取当前的骑乘,然后在获取骑乘请求ID后获取当前的骑乘细节。以下是

我找不到办法来做这件事。我有一个应用程序,它在iOS上使用Uber SDK。我可以添加“RideRequestButton”和“Ride there with Uber”文本,以进行Uber应用程序的深度链接。另外,我已经完成了使用SSO请求令牌并获取具有请求范围的令牌。现在的问题是。。。我不知道如何获取通过deeplink发出的当前乘坐请求的状态。这可能吗

谢谢


我尝试遵循其中一个线程中提到的算法,即使用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")
            }
        })

    }
}
每当我的应用程序设置为前台或处于活动状态时,就会调用上面的函数

对不起,另一个问题是。
我如何知道这是否有效?是否有办法通过请求真实的骑乘并完成整个交易来测试这一点?

使用
请求
范围,您只能查看使用身份验证令牌启动的骑乘的状态。因此,如果用户深度链接到应用程序,然后请求从那里乘车,您将无法访问该信息


为了获得此信息,您需要获得
所有行程范围的授权。

通过
请求范围,您只能查看使用您的认证令牌启动的骑乘的状态。因此,如果用户深度链接到应用程序,然后请求从那里乘车,您将无法访问该信息


为了获得此信息,您需要获得
所有行程的授权。
范围。

谢谢@JohnBrophy!。。。将范围请求更改为所有_行程后。我的第二个问题可行吗?“我如何知道这是否有效,是否有办法通过请求一次真正的旅行并完成整个事务来测试这一点?”您可以使用沙箱测试旅行,并在旅行激活时看到Webhook通知您的服务器。Hello@John Brophy和Dustin Whittle。谢谢你的帮助。还有一个问题。我能够制作我正在开发的功能,并使用模拟骑乘(通过终端使用CURL)对其进行了测试。我的客户也想试试。我通过testflight向他们发送了构建。他们说他们能够安装它,但预期的功能在“真实世界的骑行”中不起作用。当我将应用程序上传到iTunesConnect时,它仍在沙箱中。这里有我遗漏的东西吗?再次感谢您,您有日志信息来查看哪里出错了?如果未批准您使用all_trips范围,您需要在应用程序的管理员角色中列出您的客户,否则all_trips范围将无法工作。谢谢@JohnBrophy!。。。将范围请求更改为所有_行程后。我的第二个问题可行吗?“我如何知道这是否有效,是否有办法通过请求一次真正的旅行并完成整个事务来测试这一点?”您可以使用沙箱测试旅行,并在旅行激活时看到Webhook通知您的服务器。Hello@John Brophy和Dustin Whittle。谢谢你的帮助。还有一个问题。我能够制作我正在开发的功能,并使用模拟骑乘(通过终端使用CURL)对其进行了测试。我的客户也想试试。我通过testflight向他们发送了构建。他们说他们能够安装它,但预期的功能在“真实世界的骑行”中不起作用。当我将应用程序上传到iTunesConnect时,它仍在沙箱中。这里有我遗漏的东西吗?再次感谢您,您有日志信息来查看哪里出错了?如果未批准您使用all_trips范围,则需要将您的客户端列在应用程序的管理员角色中,否则all_trips范围将无法工作。