본문 바로가기

Flutter

[Flutter] HTTP/HTTPS 사용권한 추가하기

728x90

Flutter로 개발을 할 때 웹뷰 등을 사용할 경우 네트워크 접근이 필요합니다.

이때 권한 설정을 하지 않을 경우 정상동작 하지 않거나 오류 메시지가 표시됩니다.

권한 추가 - Android

안드로이드 경우 프로젝트내 android/app/src/main/AndroidManifest.xml 파일을 수정합니다.

uses-permission 태그를 추가하며 값은 android.permission.INTERNET 으로 설정합니다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.INTERNET" />
    ....
</manifest>

위 내용을 추가할 경우 기본적으로 HTTPS 프로토콜만 허용됩니다.

HTTP 프로토콜도 허용할 경우 application 태그에 android:usesCleartextTraffic=true로 설정하면 됩니다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        android:label="blog_web_app"
        android:name="${applicationName}"
        android:icon="@mipmap/ic_launcher"
        android:usesCleartextTraffic="true"> ...추가한 부분
    ....
</manifest>

권한 추가 - iOS

iOS 경우 기본적으로 HTTPS 프로토콜은 허용됩니다.

HTTP 프로토콜도 허용할 경우, 프로젝트내 ios/Runner/Info.plist 파일을 수정합니다.

dict 에 다음과 같이 NSAllowsArbitraryLoads=true 를 추가합니다.

<plist version="1.0">
<dict>
...
...추가한 부분
    <key>NSAppTransportSecurity</key>
	<dict>
		<key>NSAllowsArbitraryLoads</key>
		<true/>
	</dict>
</dict>
</plist>

권한 추가 - macOS

HTTP 허용을 위한 설정은 iOS와 동일합니다.

다만, 웹뷰를 사용하기 위해 다음 설정을 추가해야합니다.

대상 파일은 macos/Runner/DebugProfile.entitlements, macos/Runner/Release.entitlements 입니다.

dict에 다음과 같이 com.apple.security.network.client=true 를 추가합니다.

<plist version="1.0">
<dict>
	...
	<key>com.apple.security.network.client</key>
	<true/>
</dict>
</plist>
반응형