Flutter에서 iOS 앱의 로컬 네트워크 접근 설정하기

2024-05-31


 

사진: Unsplash 의 Jorgen Hendriksen


Flutter로 iOS 앱을 개발하면서 로컬 네트워크에 있는 서버에 접근해야 할 때가 있습니다. 이때 iOS 14 이상에서는 NSLocalNetworkUsageDescription을 설정해야 하며, HTTP를 사용하는 경우에는 ATS(App Transport Security) 설정도 필요합니다. 이번 포스트에서는 Info.plist 파일을 수정하여 이러한 설정을 추가하는 방법을 소개합니다.


1. Info.plist 파일이란?

Info.plist 파일은 iOS 앱의 설정 파일로, 앱이 실행될 때 필요한 각종 설정과 권한을 정의합니다. 이 파일은 Flutter 프로젝트의 ios/Runner 디렉토리에 위치해 있습니다.


2. Info.plist 파일 수정하기

1.Info.plist 파일 열기

 

먼저 Flutter 프로젝트의 루트 디렉토리로 이동하여 ios/Runner/Info.plist 파일을 엽니다. 이 파일을 텍스트 에디터 또는 Xcode로 열 수 있습니다.


2. NSLocalNetworkUsageDescription 추가

 

iOS 14 이상에서는 로컬 네트워크에 접근하기 위해 사용자의 허가를 받아야 합니다. 이를 위해 Info.plist 파일에 NSLocalNetworkUsageDescription 키를 추가합니다. 이 키는 사용자가 앱이 로컬 네트워크에 접근할 때 표시되는 설명을 정의합니다.

 

 
<key>NSLocalNetworkUsageDescription</key>
<string>앱이 로컬 네트워크에 접근하기 위해 필요합니다.</string>

3. ATS(App Transport Security) 설정 추가 (필요 시)

만약 로컬 서버가 HTTP 프로토콜을 사용하고 있다면, ATS 설정을 통해 HTTP 요청을 허용해야 합니다. 기본적으로 iOS는 보안을 위해 HTTPS 연결만 허용합니다. Info.plist 파일에 아래와 같은 예외 규칙을 추가하여 HTTP 요청을 허용할 수 있습니다.

 

 
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

4. 최종 Info.plist 파일 예제

아래는 NSLocalNetworkUsageDescription과 NSAppTransportSecurity 설정이 추가된 Info.plist 파일의 예제입니다.

 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    ...
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    <key>NSLocalNetworkUsageDescription</key>
    <string>앱이 로컬 네트워크에 접근하기 위해 필요합니다.</string>
    ...
</dict>
</plist>

5. 결론

이번 포스트에서는 Flutter로 개발한 iOS 앱에서 로컬 네트워크 접근을 위해 필요한 설정을 Info.plist 파일에 추가하는 방법을 소개했습니다. NSLocalNetworkUsageDescription과 NSAppTransportSecurity 설정을 통해 사용자에게 필요한 권한을 요청하고, HTTP 요청을 허용할 수 있습니다. 이 설정을 통해 로컬 네트워크에 있는 서버와 원활하게 통신할 수 있기를 바랍니다.

 

https://developer.apple.com/documentation/bundleresources/information_property_list/nslocalnetworkusagedescription

 

NSLocalNetworkUsageDescription | Apple Developer Documentation

A message that tells the user why the app is requesting access to the local network.

developer.apple.com

 


메인 이미지 출처 : 사진: UnsplashJorgen Hendriksen