2017-02-22 21 views
0

我在寻找一种方法来解决这个问题时遇到了一些麻烦。我有一个应用程序使用Uber SDK for iOS。我能够添加“RideRequestButton”和“乘坐Uber”文本,以便与Uber应用进行深层链接。另外,我完成了使用SSO请求令牌并使用请求范围获取令牌。现在的问题是......我不知道如何获取通过深层链接进行的当前骑乘请求的状态。这可能吗?适用于iOS的Uber SDK - 通过深层链接获得实时乘车请求状态

谢谢!


我试图在螺纹,其是使用RidesClient来获取当前行驶然后获得乘坐的requestId后得到当前行驶细节中的一个提到的算法如下。这里是我的代码一瞥:

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") 
      } 
     }) 

    } 
} 

以上函数将被调用每次我的应用程序设置为前景或变得活跃的时间。

对不起,但另一个问题是。 我如何知道这是否会起作用,并且是否有办法通过请求真正的驾驶并完成整个交易来测试?

回答

4

对于request作用域,您只能查看使用身份验证令牌启动的游乐设施的状态。因此,如果用户深入到应用程序中,然后从那里请求搭车,则无法访问该信息。

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

+0

谢谢@JohnBrophy!...将范围请求更改为all_trips后。我的第二个问题是否可行? “我如何知道这是否会起作用,并且是否有办法通过请求真正的搭车并完成整个交易来测试这一点?” – mCube

+0

您可以使用沙盒来测试旅程,并在旅程激活时查看webhooks通知您的服务器。 –

+0

你好@John Brophy和Dustin Whittle。谢谢你的帮助。还有一个问题。我能够使我正在使用的功能,并使用模拟驾驶(使用终端使用CURL)进行测试。我的客户也想尝试一下。我通过testflight将它们发送给他们。他们表示,他们能够安装它,但预期的功能在“真实世界之旅”上无效。当我将它上传到iTunesConnect时,该应用仍在Sandbox中。有什么我在这里失踪?再次感谢 – mCube

相关问题