【问题标题】:Uber SDK for iOS - get real time ride request status made via deep link适用于 iOS 的 Uber SDK - 通过深层链接获取实时乘车请求状态
【发布时间】:2017-07-12 05:48:46
【问题描述】:

我很难找到一种方法来做到这一点。我有一个使用 Uber SDK for iOS 的应用程序。我能够添加“RideRequestButton”和“与优步一起乘车”文本,以对优步应用程序进行深度链接。此外,我已完成使用 SSO 请求令牌并使用请求范围获取令牌。现在的问题是......我不确定如何获取通过深度链接发出的当前乘车请求的状态。这可能吗?

谢谢!


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

    }
}

每次我的应用设置为前台或激活时都会调用上述函数。

抱歉,还有一个问题。 我怎么知道这是否可行?有没有办法通过请求真正的乘车并完成整个交易来测试它?

【问题讨论】:

    标签: ios swift xcode uber-api


    【解决方案1】:

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

    为了获取此信息,您需要获得all_trips 范围的授权。

    【讨论】:

    • 感谢@JohnBrophy!... 将范围请求更改为 all_trips。我的第二个问题可行吗? “我怎么知道这是否可行,有没有办法通过请求真正的乘车并完成整个交易来测试它?”
    • 您可以使用沙盒测试行程,并在行程处于活动状态时查看 webhook 通知您的服务器。
    • 你好@John Brophy 和 Dustin Whittle。谢谢你的帮助。还有一个问题。我能够制作我正在开发的功能并使用模拟骑行(通过终端使用 CURL)对其进行测试。我的客户也想试试。我通过 testflight 向他们发送了构建。他们说他们能够安装它,但预期的功能在“现实世界的骑行”中不起作用。当我将它上传到 iTunesConnect 时,该应用程序仍在沙盒中。有什么我在这里想念的吗?再次感谢
    • 您是否有日志信息来查看哪里出错了?如果您未获准使用 all_trips 范围,则需要将您的客户列在应用的管理员角色中,否则 all_trips 范围将不起作用。
    猜你喜欢
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 2018-03-27
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    相关资源
    最近更新 更多