Reality Keysと連携するiOSアプリをつくる 第3回 契約セットアップ

f:id:yzono:20150215012540j:plain

はじめに

前回、契約のセットアップに必要なRunKeeperのユーザーIDを取得しました。今回はそれを使って契約セットアップAPIを実行します。

目次

  • 契約セットアップAPI実行

契約セットアップAPI実行

契約セットアップAPIの仕様については過去記事をみてください。

HTTPリクエストはAlamofire、JSONパースはSwiftyJSONを使っています。

@IBAction func setupOneKm(){
    
  let userId = NSUserDefaults.standardUserDefaults().stringForKey("runkeeper_user_id")
  
  var formatter: NSDateFormatter = NSDateFormatter()
  formatter.dateFormat = "yyyy-MM-dd"
  let settlement_date: String = formatter.stringFromDate(NSDate())
  
  let params = [
      "user_id"                   : userId!,
      "activity"                  : "running",
      "measurement"               : "total_distance",
      "comparison"                : "ge",
      "goal"                      : "1000",
      "settlement_date"           : settlement_date,
      "objection_period_secs"     : "604800",
      "accept_terms_of_service"   : "current",
      "use_existing"              : "0"
  ]

  MRProgressOverlayView.showOverlayAddedTo(self.view, animated: true);
  
  Alamofire.request(.POST, "https://www.realitykeys.com/api/v1/runkeeper/new", parameters: params)
      .responseJSON { (request, response, data, error) in
          
      MRProgressOverlayView.dismissOverlayForView(self.view, animated: true)
      
      let contract = Contract()
      
      let json = JSON(data!)
      if let activity = json["activity"].string {
          contract.activity = activity
      }
      if let created_datetime = json["created_datetime"].string {
          contract.created_datetime = created_datetime
      }

      (省略)

      if let yes_pubkey = json["yes_pubkey"].string {
          contract.yes_pubkey = yes_pubkey
      }
      
      let stb = UIStoryboard(name: "Main", bundle: nil)
      let setupResultViewController = stb.instantiateViewControllerWithIdentifier("setup_result") as SetupResultViewController
      setupResultViewController.contract = contract
  
      self.navigationController?.pushViewController(setupResultViewController, animated: true)
  }
}

こんな感じ

f:id:yzono:20150215012417g:plain

P2SHアドレスに必要なYES、NOの公開鍵を取得できました。

no_pubkey = "02c0b9fba37cfd406874d34a8b1ce133f9ff5b1915f9e27ec07dff12fefc7611ec"
yes_pubkey = "02a5d4a751923c4128332df96887e188c86418820c437b0891fa838cc4ad104a58"

まとめ

P2SHアドレスを作成するための情報が整いましたので次回やります。

SwiftのオプショナルとJSONの扱いがよく分かってません..

参考

画面のカラースポイトにめっちゃ便利なMac標準ツール「DigitalColor Meter」

RGB-to-Hex Conversion

http://cflat-inc.hatenablog.com/entry/2014/10/14/074454

iOSシミュレータでiOS8.1だとHTTP通信がエラーに

ウイルスバスター for Mac がインストールされた環境において、Xcode の iOS8 Simulator のネットワーク接続が切れてしまう問題が発生する そういえば以前ウイルスバスターは、time machineの同期が遅くなる原因にもなっていた。

SwiftでiOSアプリ開発をしてみて(#^ω^)ピキピキ な点4つ(2014/12現在)

Alamofire で JSON を返す API を呼び出す

Swiftで面倒なJSONの取り扱いを10倍便利にするSwiftyJSON