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通信をブロックされるようです。