스트리밍은 대부분의 브라우저와
Developer 앱에서 사용할 수 있습니다.
-
변화하는 네트워크 상황에 맞춰 대응하기
Apple 기기는 동시에 여러 네트워크에 연결할 수 있습니다. 앱이 최적의 경험을 위해 가장 적합한 네트워크를 자동으로 선택하도록 설정하는 방법을 알아보세요. 아울러 다양한 네트워크 유형 및 각 네트워크의 특징을 살펴보세요. URLSession 및 Network 프레임워크를 사용하여 요구 사항을 적절하게 설명하면 시스템이 상황별로 앱에 가장 적합한 인터페이스를 스마트하게 선택할 수 있습니다.
리소스
관련 비디오
WWDC21
-
다운로드
Eric Kinnear: 안녕하세요 인터넷 기술 팀의 Eric입니다 본 프레젠테이션에서는 네트워크 변화에 따라 앱을 변경하는 방법을 알아보겠습니다 먼저 다양한 네트워크 유형과 그 고유한 속성을 살펴봅니다 Apple 플랫폼에서 사용할 수 있는 API를 통해 네트워크 요구 사항을 시스템에 설명하는 방법 네트워크 문제가 있을 때 앱에서 연결을 재시도할 시점을 알 수 있는 방법 앱의 모든 사용자에게 탁월한 경험을 제공하기 위해 다양한 네트워크 환경에서 테스트하는 방법을 차례로 살펴봅니다 먼저 네트워크에 대해 다루겠습니다 Apple 기기는 셀룰러 네트워크, Wi-Fi 등 다양한 방법으로 네트워크에 연결합니다 기기에 셀룰러 네트워크만 연결되는 경우 인터넷 트래픽은 셀룰러 인터페이스를 사용합니다 그런데 기기가 Wi-Fi 네트워크에 연결되면 인터넷 트래픽이 Wi-Fi 인터페이스를 사용한다고 생각하실 수 있는데요 이 상황에서 기기는 최소 2개의 인터페이스를 사용할 수 있습니다 일부 프로토콜과 앱은 두 인터페이스 중 하나 또는 동시에 모두를 사용할 수 있습니다 기존 연결에는 후속 커뮤니케이션에 더 원활한 연결을 사용할 수 있다는 라우팅 알림이 표시될 수 있습니다 예를 들어 연결이 끊어지면 앱은 Multipath TCP QUIC 같은 다중 경로 기술을 사용하여 셀룰러와 Wi-Fi 간에 마이그레이션이 원활한 연결을 생성할 수 있습니다 원활한 앱 경험을 제공하기 위해, Wi-Fi 대신 5G 네트워크가 사용될 수도 있습니다 네트워크별 속성이 다르므로 경우에 따라 다양하게 선택하여 사용하면 됩니다 예를 들어 셀룰러 네트워크는 요금이 높고, 사용량이 제한되는 경우와 무제한인 경우가 있습니다 일부 Wi-Fi 네트워크는 개인용 핫스팟에 연결된 경우 대용량 데이터 처리에 적합하지 않습니다 사용자가 데이터 사용을 제한하기 위해 저데이터 모드를 활성화한 경우도 있을 것입니다 시스템에서 VPN 등 별도의 인터페이스를 가동해야 사용 가능한 네트워크 리소스도 있습니다 iPhone이나 iPad는 앱에 이더넷 연결을 사용할 수도 있습니다 이것들은 기기에서 사용할 수 있는 다양한 연결 유형의 일부에 불과합니다 다행히 앱에서 탁월한 경험을 제공하기 위해 이 많은 조합을 모두 계산할 필요는 없습니다 Apple 플랫폼은 앱 연결에 최적인 인터페이스를 스마트하게 선택합니다 이 기능을 활용하려면 앱의 네트워킹 요구 사항을 시스템에 설명하면 됩니다 그 방법을 함께 알아보죠 모든 네트워크 유형을 고려하는 최선의 방법은 네트워크의 유형이 아닌 속성을 추론하는 것입니다 이렇게 하면 시스템에서 앱 연결에 최적인 인터페이스를 조합, 선택할 수 있습니다 네트워킹 요구 사항 선언에 사용할 수 있는 속성은 2개입니다 이 두 속성만 사용하면 앱은 사용자가 설정한 내용에 맞춰 가장 적합한 네트워크를 선택하게 됩니다 제한된 네트워크는 적은 데이터 사용을 위해 저데이터 모드가 활성화됐을 때 적용되며 개인용 핫스팟 사용 시 자동으로 활성화됩니다 URLSessionConfiguration에 allowsConstrainedNetworkAccess를 사용하고 Network 프레임워크 사용시 prohibitsConstrainedPaths를 사용하여 제한된 네트워크에서 연결을 유지할지 선택할 수 있습니다 제한된 네트워크에서 앱은 전송을 작은 페이로드로 제한하고 명시적인 사용자 동작을 허용하는 작업만 처리해야 합니다 제한된 네트워크에서는 대용량 전송, 백그라운드 프리페치를 수행하면 안 됩니다 네트워크 사용료가 높은 경우에도 비슷한 논리가 적용됩니다 이런 네트워크는 사용자가 시작한 작업에만 사용해야 합니다 이 경우 URLSession과 Network 프레임워크에 비슷한 API를 사용하여, 네트워크 사용을 허용 또는 금지하면 됩니다 제한된/고비용 네트워크에 모두 유사한 로직을 사용하는 것이 좋습니다 연결 속성에 따라 사용할 네트워크의 유형을 설명했으니 다음 단계는 연결을 시도해 보는 것입니다 연결에 앞서 기기가 Wi-Fi에 연결되어 있는지, VPN에 접근할 수 있는지 확인하고 싶더라도 이는 피해야 합니다 네트워크 상태는 자주 변경되며, 앱이 요청하여 이러한 변경을 트리거할 수도 있습니다 즉 사전 체크는 부정확하며, 앱에서 의도하지 않은 동작이 발생하기 쉽습니다 SCNetworkReachability를 사용한 사전 체크는 iOS 17.4부터 지원이 중단되었습니다 연결을 바로 시도해 보세요 네트워크 환경 때문에 시스템이 요청을 즉시 처리할 수 없는 경우 URLSessionConfiguration을 waitsForConnectivity로 설정하거나 NW 연결에 대기 상태를 설정하면 앱은 시스템에 작업 대기 중임을 알리고 네트워크 환경이 변하면 시스템은 자동으로 요청을 재시도합니다 시스템이 자동으로 연결을 기다릴 수 있으므로 언제 요청을 재시도할지 쉽게 알 수 있습니다 이 상황에서 필요한 조치를 살펴보죠 waitsForConnectivity를 사용할 때 시스템이 네트워크 요청을 즉시 시작할 수 없는 경우 요청은 대기 상태가 되고 앱은 urlSession 작업 위임자를 통해 작업이 연결 대기 중이라는 알림을 받게 됩니다 이 경우, 연결 상태 변경 시 요청을 재시도할 필요가 없습니다 시스템이 자동으로 처리하니까요 작업이 연결 대기 중일 때는 사용자에게 알려 주어 필요한 조치를 취하도록 하고 사용자가 앱을 계속 사용할 수 있는 방법을 제공하는 것이 좋습니다 이 예제에서는 기기가 무제한 네트워크에 연결되면 앱의 데이터가 자동으로 동기화됩니다 그러나 ‘지금 동기화’를 탭하면 제한이 완화되고 제한된 네트워크에서 동기화됩니다 네트워크 상태를 알릴 때는 알림은 최소한으로 사용하세요 알림은 중요한 정보를 전달하지만 네트워크 상태는 통제가 어려운 경우가 많아 매우 혼란스러울 수 있습니다 대신 명확하고 쉬운 진행 방법과 함께 정보와 옵션을 제공하세요 마지막으로 테스트를 살펴보겠습니다 사용자는 앱을 사용할 때 네트워크 상태를 다양하게 경험하므로 다양한 환경을 테스트해야 합니다 Xcode를 사용하여 기기 및 시뮬레이터 윈도우에서 다양한 네트워크 환경을 시뮬레이션할 수 있습니다 네트워크 연결 조건과 LTE 프로파일을 선택하면 평균적인 LTE 네트워크 환경을 시뮬레이션할 수 있습니다 그런 다음 앱에서 워크플로우를 테스트하여 모두 잘 작동하는지 확인할 수 있습니다 iPhone 또는 iPad에서 앱을 테스트하려면 개발자 설정에서 ‘네트워크 링크 컨디셔너’를 사용하면 됩니다 여기에서 Xcode처럼 네트워크 환경을 시뮬레이션할 수 있습니다 또한 ‘네트워크 오버라이드’로 기기의 네트워크 속성 변경을 시뮬레이션할 수 있습니다 각 인터페이스의 설정에서 저데이터 모드도 활성화할 수 있습니다 여기에서 시스템의 셀룰러 및 Wi-Fi 인터페이스의 비용 수준을 설정할 수 있습니다 Wi-Fi의 안정성이나 보안이 낮으면 5G 네트워크를 선호하도록 구성할 수도 있습니다 이렇게 하면 레거시 네트워킹 코드가 더 원활한 연결을 사용하지 못하는 환경을 찾아낼 수 있습니다 앱이 이러한 모범 사례를 따라 Network 프레임워크와 URLSession에 요구 사항을 설명하기만 하면 시스템이 추가 작업 없이도 최적의 인터페이스를 스마트하게 선택합니다 현재 최신 네트워킹 사례를 채택하여 기기의 네트워크 인터페이스를 모두 활용할 수 있습니다 이를 위해서는 요청이 제한된 네트워크에 적합한지 등의 네트워킹 요구 사항 속성을 시스템에 설명하세요 Wi-Fi, 셀룰러 등 특정 인터페이스로 요청을 제한하지 마세요 앱에서 네트워킹 사전 체크를 제거하고 수동 재시도 대신 waitsForConnectivity를 사용하여 조건이 앱의 요구 사항을 충족하면 연결이 자동으로 재개되도록 하세요 앱이 HTTP/3 QUIC 등 최신 프로토콜을 사용하도록 하세요 자세한 내용을 보려면 ‘HTTP/3 및 QUIC으로 네트워킹 가속화하기’를 시청하세요 이 방식을 통해 변화하는 네트워크 조건에 앱의 연결이 자동으로 변경되어 원활한 경험을 제공할 수 있습니다 시청해 주셔서 감사합니다
-
-
찾고 계신 콘텐츠가 있나요? 위에 주제를 입력하고 원하는 내용을 바로 검색해 보세요.
쿼리를 제출하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해 주세요.