iOS/Swift

WCSession / WCSessionDelegate 정리

Joo-Topia 2023. 2. 28. 20:58

WCSession은 WatchConnectivity 프레임워크에서 제공하는 클래스로, iOS 앱과 Apple Watch에서 실행되는 watchOS 앱 간의 통신을 가능하게 합니다. 이 클래스는 두 기기 간에 데이터를 주고받을 수 있는 메서드와 통신 세션의 상태를 관리하는 메서드를 제공합니다.

WCSessionDelegate는 iOS 앱과 watchOS 앱 간의 통신 세션과 관련된 이벤트를 처리할 수 있는 메서드를 정의하는 프로토콜입니다. 이 프로토콜의 메서드는 WCSession 객체에 의해 호출되며, 세션이 활성화되거나 비활성화되거나, 메시지를 수신하는 등의 이벤트에 대응합니다.

 

WCSession의 주요 메서드

activate()
iOS 앱과 watchOS 앱 간의 세션을 활성화합니다. 데이터를 보내거나 받기 전에 이 메서드를 호출해야 합니다.

sendMessage(_:replyHandler:errorHandler:)
iOS 앱에서 watchOS 앱으로 메시지를 보내며, 선택적인 응답 및 오류 핸들러를 제공하여 watchOS 앱의 응답을 처리할 수 있습니다.

updateApplicationContext(_:)
iOS 앱에서 watchOS 앱으로 애플리케이션 컨텍스트 데이터의 딕셔너리를 보내어 watchOS 앱의 사용자 인터페이스나 상태를 업데이트하는 데 사용될 수 있습니다.

transferUserInfo(_:)
iOS 앱에서 watchOS 앱으로 사용자 정보 데이터의 딕셔너리를 보내어 watchOS 앱의 데이터 모델이나 상태를 업데이트하는 데 사용될 수 있습니다.

 

WCSessionDelegate의 주요 메서드

session(_:activationDidCompleteWith:error:)
iOS 앱과 watchOS 앱 간의 세션이 활성화되거나 비활성화될 때 호출됩니다. 오류 매개변수는 세션이 성공적으로 활성화된 경우 nil이며, 활성화 실패시 오류 객체가 포함됩니다.

session(_:didReceiveMessage:replyHandler:)
watchOS 앱이 iOS 앱에서 메시지를 수신할 때 호출됩니다. replyHandler 매개변수는 watchOS 앱에서 iOS 앱에 응답을 보내는 데 사용될 클로저입니다.

session(_:didReceiveApplicationContext:)
watchOS 앱이 iOS 앱에서 업데이트된 애플리케이션 컨텍스트 데이터를 수신할 때 호출됩니다.

session(_:didReceiveUserInfo:)
watchOS 앱이 iOS 앱에서 업데이트된 사용자 정보 데이터를 수신할 때 호출됩니다.

 

WCSession과 WCSessionDelegate은 iOS와 watchOS 앱 간 통신에 대한 강력한 프레임워크를 제공하여 두 장치 간에 원활한 사용자 경험을 가능하게 합니다.