2016-06-09 1 views
0

watchOS 2Xcode 7.3을 사용 중입니다. 시계 app에는 3 개의 인터페이스 컨트롤러 (IC)가 있습니다. "[WCSession defaultSession] sendMessage" 메서드를 사용하여 3 가지 다른 환경에서 AppDelegate의 3 개 IC에 메시지를 보내고 있습니다. 수신 방법은 3 가지 IC 모두에서 제공됩니다. 그러나 메시지는 대부분 3 차 IC에서 수신됩니다. 특정 IC에서 메시지를 수신하려면 어떻게해야합니까?AppDelegate에서 "[WCSession defaultSession] sendMessage"를 사용하면서 watchOS 2의 특정 인터페이스 컨트롤러에서 메시지를받는 방법

답변

2

"네트워킹"및 모델 작업을 수행하는 인터페이스 컨트롤러가있는 지금 당장 재 설계하는 것이 좋습니다.

내 권장 접근 방식은 WCSession 대리인 인 "지속성 관리자"를 만드는 것입니다. 수신 된 모든 데이터가 지속되고 관찰자 또는 알림 패턴을 사용하여 코드의 다른 부분에 변경 사항이 통보됩니다. 그런 다음 UI 쿼리와 관련된 항목이 업데이트되면 (테이블 행에 새 항목 추가, 새 항목 추가 등) 해당 데이터 쿼리를 다시 실행하고 해당 UI를 업데이트합니다.

인터페이스 컨트롤러의 복잡성 감소, 관심사의 분리 등의 많은 이점이 있습니다. 하지만 가장 중요한 것은 확장 기능이 백그라운드에서 실행될 수 있지만 (인터페이스 컨트롤러가 표시되지 않는 곳에서도) 데이터를 수신하고 지속하며 다음에 애플리케이션을 시작할 때 활용할 수 있다는 것입니다.

1

내가 보낸 사전의 키를 확인할 수 있습니다. 세 가지 다른 키를 사용하여 올바른 인터페이스 컨트롤러에 맞는 키인지 확인할 수 있습니다.

0

는 시계 앱 확장에 ExtensionDelegate.m에서 didReceiveMessage 방법을 지정합니다. 메시지가 의도 된 인터페이스 컨트롤러의 이름을 sendMessage 메쏘드에 전달하십시오. if-else 조건에서 알림 센터를 사용하여 의도 한 인터페이스 컨트롤러의 메소드를 호출하십시오.

관련 문제