iPhone実機からFlaskサーバへアクセスする

MacでPythonのFlaskでサーバを立てて、iPhone実機のWebViewアプリでアクセスしようとしてハマったのでメモ。

アクセスするIPはPreview(SwiftUIで使えるシュミレータ)と実機で異なる。

# Previewの場合
http://localhost:5000

# iPhone実機の場合(自宅のネットワークのローカルIP、環境によって異なる)
http://192.168.11.8:5000

Previewでは問題なく表示されるが、実機だとWebviewが真っ白に。

Xcodeを見ると以下のエラーが出ていた。

NSURLErrorDomain Code=-1004

アプリに問題があると思い、XcodeのApp Transport Securityの設定をしてみたが何も変わらない。

https://developer.apple.com/jp/news/?id=jxky8h89

AppTransportSecurityは全く関係がなく、Flaskの起動時のオプションが問題であった。

if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0')

Flaskのサーバはデフォルトだと公開されていない:https://qiita.com/tmokmss/items/122dfdb41188176e45b5

host=’0.0.0.0’がないと公開されないようだ。設定したらサーバの再起動もお忘れなく。

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog