iOS SDKを使っていて、そのアクセス内容をデバッグしたいと思うことがあると思います。幾つかのデバッグツールがあるのですが、netfoxが最もお勧めなようです。
HTTPSの壁
HTTPサイトであればプロキシで十分です。しかしHTTPSの場合は容易ではありません。多くのソフトウェアにおいて、専用の証明書をインストールして信頼することでHTTPSの通信内容を閲覧できるようにします。
Charlesではデバッグできない
ネットワークデバッギングアプリとしてはCharlesが最も有名かと思います。CharlesはiOSシミュレータにも対応しています。iOS Safariなどであれば、HTTPSでの通信内容は閲覧できます。しかしNCMBのiOS SDKにおける通信内容は確認できませんでした。SSLのハンドシェイクの時点でエラーになってしまいます。
netfoxを使う
そこで使ってみたのがnetfoxです。これはSwiftで書かれており、iOSアプリに組み込んで使います。
CocoaPodsでのインストール
まずCocoaPodsでインストールします。本来は use_frameworks!
を使うのですが、NCMBでコメントアウト必須なので変更しています。
# use_frameworks! # Pods for ncmbPhoto pod 'NCMB', :git => 'https://github.com/NIFCloud-mbaas/ncmb_ios.git' pod 'netfox'
そして pod install
します。
$ pod install
読み込む
フレームワークを使っていないので読み込み方は次のようになります。
import netfox
そしてセッションを開始します。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { NFX.sharedInstance().start() : }
これで準備完了です。
アプリをテストする
テストする場合には通常通りにアプリを操作し、デバッグしたいタイミングでシェイクジェスチャーを行います。シミュレータであれば コマンド + コントロール + Zキーです。そうするとデバッグ用のモーダルが表示されます。最初はネットワークアクセスの履歴です。
さらにリクエスト。
そしてレスポンス。
まとめ
netfoxはリアルタイムで通信内容が見られないという問題はありますが、NCMBの通信内容を確認する際には十分な使い勝手でした。ファイルアップロードしたりすると、その内容が大きすぎて見られないという問題があります。とは言え、JSONベースでどういったリクエストをして、どういったレスポンスが返ってくるかといったチェックであればnetfoxが便利でしょう。ぜひ活用してください!
kasketis/netfox: A lightweight, one line setup, iOS / OSX network debugging library! 🦊