ExpoでHTTP通信を許可する
2024-04-04
HTTP connection on Expo App.
HTTP通信を行う(HTTPSではなくHTTP)
Androidの場合
Androidでhttpなリモート画像のロードやWebViewでURLを開く場合はexpo-build-propertiesを使用します。
npx expo install expo-build-propertiescその後app.jsonに以下を追加します。
{
"expo": {
...省略
"plugins": [
[
"expo-build-properties",
{
"android": {
"usesCleartextTraffic": true
}
}
]
]
}
}iOSの場合
これまではiOSでは特別な設定は必要なくhttpのURLをWebViewで開けていたのですが、Expo SDK 50にアップグレードしたところエラーが表示されるようになりました。
下記のようなエラーが表示されます。
NSURLErrorDomain
The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.iOSの場合はこのエラーを解消するためにapp.jsonのinfoPlistに以下を追加します。
{
"expo": {
...省略
"ios": {
"infoPlist": {
"NSAppTransportSecurity": {
"NSAllowsArbitraryLoads": false,
"NSExceptionDomains": {
"mydomain.jp": {
"NSExceptionAllowsInsecureHTTPLoads": true
}
}
}
}
}
}
}mydomain.jpの部分はhttp通信を許可するドメインに置き換えます。
まとめ
Expo GOアプリでの開発中はhttpリクエストのエラーは出ません。eas buildして内部配布やストア配布を行った際に上記の設定を行わないとOSによってhttp通信をブロックされるようです。