Как реагировать на CLKComplicationServerActiveComplicationsDidChangeNotification

На полезный вопрос Force reload watchOS 2 Complications пользователь @alexeyvmp упоминает в комментарии, что вы должны добавить наблюдателя для CLKComplicationServerActiveComplicationsDidChangeNotification событие.

Что такое хорошее место для создания этого наблюдателя и как оно будет выглядеть? Я создаю это из моего ComplicationDataSource, или в моем InterfaceController? Как мне убедиться, что он не воссоздан снова и снова?

Я попытался прочитать о том, как создавать наблюдателей в Swift но мне трудно понять, где его поставить. У меня сейчас

let notificationCenter = NSNotificationCenter.defaultCenter()
let mainQueue = NSOperationQueue.mainQueue()

_ = notificationCenter.addObserverForName(CLKComplicationServerActiveComplicationsDidChangeNotification, object: nil, queue: mainQueue) { _ in
    print("active complications changed. refresh!")
}

Любая помощь приветствуется.

1 ответ

Вы должны поместить наблюдателя в InterfaceController:

NotificationCenter.default.addObserver( self,
        selector: #selector(InterfaceController.CLKComplicationServerActiveComplicationsDidChangeNotification(_:)),
        name: NSNotification.Name(rawValue: "CLKComplicationServerActiveComplicationsDidChangeNotification"), object: nil )

Таким образом, вы будете знать в InterfaceController, когда сложность изменилась.

Другие вопросы по тегам