Осложнения Apple Watch не обновляются достоверно

Возможно, вторая проверка выполняется спящим при отправке вашего компонента в хранилище данных. Чтобы отключить это, добавьте это в свой persistence.xml:


https://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/configuration.html говорит:

По умолчанию активирована проверка бина (и валидатор гибернации). Когда объект создается, обновляется (и, возможно, удаляется), он проверяется перед отправкой в ​​базу данных. Схема базы данных, сгенерированная Hibernate, также отражает ограничения, объявленные в сущности.

Вы можете точно настроить это, если необходимо:

AUTO: если проверка бина присутствует в пути к классам, активируются CALLBACK и DDL.

CALLBACK: сущности проверяются при создании, обновлении и удалении. Если поставщик Bean Validation не присутствует, во время инициализации возникает исключение.

DDL: (не стандартные, см. ниже) схемы базы данных - это объекты, которые проверяются при создании, обновлении и удалении. Если поставщик Bean Validation не присутствует, во время инициализации возникает исключение.

NONE: Валидация бинов вообще не используется

blockquote>

Первый, очевидно, выполняется вашим контроллером Spring из-за аннотации @Valid.

4
задан Mohammad Roshani 27 February 2019 в 14:11
поделиться

3 ответа

Как вы описываете в своем обновлении, ваше приложение для iPhone звонит session.transferCurrentComplicationUserInfo(context) до того, как часы настроят его WCSession. Но в документах говорится:

[TransferCurrentComplicationUserInfo (_ :)] можно вызывать только в то время, когда сеанс активен, то есть для свойства Activation установлено значение WCSessionActivationState.activation. Вызов этого метода для неактивного или деактивированного сеанса является ошибкой программиста.

Таким образом, я предлагаю вам реализовать (если вы еще этого не сделали) функцию WCSessionDelegate session(_:activationDidCompleteWith:error:) (см. здесь ) и передавать данные об осложнениях только после сеанса был активирован.

0
ответ дан Reinhard Männer 27 February 2019 в 14:11
поделиться

Сброс настроек iPhone, Apple Watch и Mac устранил проблему.

0
ответ дан bkwebhero 27 February 2019 в 14:11
поделиться

Попробуйте следующее:

func reloadComplicationTimeline() {
    #if os(watchOS)
    let server = CLKComplicationServer.sharedInstance()
    if let activeComplicationFamilies = server.activeComplications {
    for comp in activeComplicationFamilies {
        server.reloadTimeline(for: comp)
    }
   #endif
}



func sendComplication(complication: Complication) {
        guard WCSession.default.activationState == .activated else {
            delegate?.failedToSendComplication(reason: "Could not connect to your Apple Watch.")
            return
        }
        guard let context = convertComplicationToDictionary(complication: complication) else {
            delegate?.failedToSendComplication(reason: "Couldn't cast complication to a dictionary.")
            return
        }
        #if os(iOS)
        if WCSession.default.isComplicationEnabled {
            let userInfoTranser = WCSession.default.transferCurrentComplicationUserInfo(context)
            delegate?.didSendComplication()
        } else {
            delegate?.failedToSendComplication(reason: "Due to hardware limitations, you can only send a certain amount of complications in a day. You have exceeded that limit for today. You can still set complications from the Apple Watch app.")
        }
        #endif
    }

Вот хороший пример от Apple, который может помочь вам больше: источник

0
ответ дан Anton Bärwald 27 February 2019 в 14:11
поделиться