2017-11-08 2 views
0

iCloud 계정 상태가 변경되면 알림을 수신하려고합니다.CKAccountChanged 알림이 수신되지 않음

나는 따라서 이러한 알림을 등록 :

NotificationCenter.default.addObserver(self, 
             selector: #selector(iCloudAvailabilityDidChange), 
             name: .CKAccountChanged, 
             object: nil) 

과 기대 iCloudAvailabilityDidChange 그에 따라 호출됩니다 :

@objc func iCloudAvailabilityDidChange(_ notification: Notification) { 
    handleICloudAccountStatus() 
} 

이러한 알림을 확인하기 위해, 나는 iCloudAvailabilityDidChange에 중단 점을 설정하고 응용 프로그램을 실행 Xcode에서
그런 다음 Home을 발급하고 시스템 설정 앱을 연 다음 iCloud 계정에 로그인하거나 로그 아웃하십시오.

Xcode가 중단 점에 도달 할 것으로 예상했지만, 그렇지 않습니다.
무엇이 잘못 될 수 있습니까?

편집 :
통지는 CKContainer 클래스의 인스턴스로 전송됩니다

아마 문제가 이해하지 않는 docsCKAccountChanged에에서 다음과 같은 정보와 관련이 있습니다. 클래스의 인스턴스가없는 경우 알림은 전송되지 않습니다.
내가 이해할 수없는 것은 CKContainer.default()을 항상 정의해야한다는 것입니다.

답변

0

문제 해결 :

먼저, 하나의 컨테이너에 액세스하는, 예를 들어 에 의해

let container = CKContainer.default() 

이 같은 알림을 보낼 수있는 컨테이너 개체를 인스턴스화합니다.

두 번째로 알림을 받으려면 홈 버튼을 누르고 시스템 설정을 열고 iCloud 계정에 로그인/로그 아웃하고 을 입력하고 앱으로 다시 전환해야합니다. 그래야만 알림이 배달됩니다.

관련 문제