2017-02-22 14 views
0

これを行う方法を見つけるのに問題があります。 iOS用のUber SDKを使用するアプリがあります。 Uberアプリへのディープリンクを行うために、「Ride there with Uber」というテキストを「RideRequestButton」に追加することができました。また、SSOを使用してトークンを要求し、要求スコープでトークンをフェッチしました。今問題は...私はディープリンク経由で行われた現在の乗車要求のステータスを取得する方法がわかりません。これは可能ですか?iOS用Uber SDK - ディープリンク経由でリアルタイムの乗車要求ステータスを取得

ありがとうございます!


Iは乗りrequestIDを得た後、現在の乗車の詳細を取得し、現在の乗車をフェッチするRidesClientを使用することであるスレッドのいずれかに記載されたアルゴリズムに従って試みました。関数は、上記の私のアプリがフォアグラウンドに設定したり、アクティブになっているたびに呼び出されることになるだろう

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

スコープでは、認証トークンを使用して開始された乗り物のステータスのみを見ることができます。そのため、ユーザーがアプリに逆リンクしてそこから乗り物をリクエストすると、その情報にアクセスすることはできなくなります。

この情報を取得するには、all_tripsの有効範囲を取得する必要があります。

+0

ありがとう@JohnBrophy!...スコープリクエストをall_tripsに変更した後。私の2番目の質問は実行可能ですか? 「これがうまくいくかどうか私はどのように分かり、実際の乗り物を要求してこれをテストし、取引全体を完了させる方法があるのだろうか? – mCube

+0

サンドボックスを使用して旅行をテストし、旅行がアクティブなときにwebhooksがサーバーに通知することを確認できます。 –

+0

こんにちは@John BrophyとDustin Whittle。ご協力いただきありがとうございます。もう1つの質問。私は、私が取り組んでいる機能を作り、シミュレートされた乗り物を使ってそれをテストしました(端末経由のCURLを使用して)。私のクライアントもそれを試してみたいと思います。私はtestflight経由でビルドを送った。彼らはそれをインストールすることができると言ったが、期待された機能は "現実世界の乗り物"で動作しませんでした。私がiTunesConnectにアップロードすると、まだサンドボックスに入っています。私がここで紛失しているものはありますか?もう一度ありがとう – mCube

関連する問題