Попытка использовать PKPushKit для обновления осложнений Watch WidgetKit. Вот код внутри делегата приложения для часов:
let pushRegistry = PKPushRegistry(queue: nil)
func applicationDidBecomeActive() {
pushRegistry.delegate = self
pushRegistry.desiredPushTypes = [.complication]
}
func pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials: PKPushCredentials, for type: PKPushType) {
let token = pushCredentials.token.reduce("") { $0 + String(format: "%02x", $1) }
print("PushToken: " + token)
}
applicationDidBecomeActive вызывается и pushRegistry обновляется, но ни один из методов делегата не вызывается. В приложении Watch уже есть возможность push-уведомлений.
Я считаю, что это проблема, связанная с отсутствием использования ClockKit для осложнений. Инженеры Apple во время лабораторной работы WWDC сказали мне, что они больше не будут вызываться, как только вы перейдете на использование WidgetKit для решения ваших проблем. Это очень расстраивает и мой вариант использования. Я обновлю этот ответ, если узнаю больше.
Установив основной класс источника данных ClockKit, я смог получить токен, спасибо!