iPhone実機でサーバと通信出来ないときの最も簡単な解決方法

  • 17
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

今回はRailsでapiを作成し、実機からそのapiをいくら叩いても

Could not connect to the server.

となってしまいハマってしまいましたん。

もちろんシミュレータでは全く問題なく通信ができます。

解決方法

① PCとiPhoneを同じWifiに繋ぐ
rails sではなくrails s -b 0.0.0.0でサーバを起動する
③ iOS側でapiを叩く時にlocalhostではなく PCのIPアドレス を使用する。

① PCとiPhoneを同じWifiに繋ぐ

PCとiPhoneを同じネット環境に置きましょう。

rails sではなくrails s -b 0.0.0.0でサーバを起する

rails sでは同じネット環境内のクライアントでもサーバにアクセスすることはできません。つまりPC外であるiPhoneはサーバにアクセスすることができないのです。

rails s -b 0.0.0.0とすることで同じネット環境内でPC外のクライアントからサーバにアクセスすることができるようになります。

③ iOS側でapiを叩く時にlocalhostではなく PCのIPアドレス を使用する。

localhostというのは言わばPCの中でしか通用しません。そこにはIPアドレスというものが振られています。

以下PCのIPアドレスの取得方法です

ifconfig | grep 192

このコマンドを打つと
◯◯◯.◯◯◯.◯◯◯.◯◯◯ (◯には数字が入る) という12桁の数字が表示されるので

iOS側でapiを叩く際に

"http://◯◯◯.◯◯◯.◯◯◯.◯◯◯:3000/"

として使ってあげると良いです。

参考

http://ja.stackoverflow.com/questions/18253/xcode7-iphone%E5%AE%9F%E6%A9%9F%E9%80%9A%E4%BF%A1%E3%82%A8%E3%83%A9%E3%83%BC-nsurlerrordomain-code-1004