Действия с уведомлением Apple Watch не работают, когда приложение-компаньон iPhone прекращает работу Watch OS 5.3.2

Я работаю над приложением для iOS, которое поддерживает часы, а также мои опасения.

ОС для часов - 5.3.2 и iOS 13.1

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

Я ретранслирую push-уведомление, а для действий с уведомлением пользователя я регистрируюсь для уведомления пользователя.

как показано ниже

 // this I will call in iPhone app code in did finishlaunching with options.

   func registerForPushNotifications(withUserInfo userInfo: [AnyHashable: Any]?) {
        if #available(iOS 10.0, *) {
            self.requestAuthorization(withUserInfo: userInfo)
        } else {
            registerUserNotificationSettings(withUserInfo: userInfo)
            UIApplication.shared.registerForRemoteNotifications()
        }
    }

  func registerUserNotificationSettings() {
        let approveAction = UIMutableUserNotificationAction()
        approveAction.title = NSLocalizedString("Approve", comment: "Notification approve button title")
        approveAction.identifier = "approve"
        approveAction.isDestructive = false
        approveAction.activationMode = .background
        approveAction.isAuthenticationRequired = true

        let denyAction = UIMutableUserNotificationAction()
        denyAction.title = NSLocalizedString("Deny", comment: "Notification deny button title")
        denyAction.identifier = "deny"
        denyAction.isDestructive = true
        denyAction.activationMode = .background
        denyAction.isAuthenticationRequired = true

        let signInCategory = UIMutableUserNotificationCategory()
        signInCategory.setActions([approveAction, denyAction], for: .default)
        signInCategory.identifier = "pushotp"

        let categories = NSSet(object: signInCategory) as? Set<UIUserNotificationCategory>

        let settings = UIUserNotificationSettings(types: [.badge, .sound, .alert], categories: categories)
        DispatchQueue.main.async(execute: {
            UIApplication.shared.registerUserNotificationSettings(settings)
        })
    }

Сценарии

  1. Когда приложение iPhone работает в фоновом режиме, а iPhone заблокирован и часы находятся в фоновом режиме. Если я нажимаю push-уведомление с сервера, часы отображают баннер с двумя действиями, если я нажимаю какое-либо действие, все работает нормально.

  2. когда приложение iPhone убито, а iPhone сразу заблокирован. Если я отправлю push-уведомление, часы отобразят баннер с двумя действиями, если я коснусь любого из действий, все будет нормально.

  3. Когда приложение iPhone убито и iPhone заблокирован, часы и iPhone оставались бездействующими в течение часа. затем я активирую часы и отправлю уведомление с сервера, теперь часы отображают баннер с двумя действиями, теперь, если я нажимаю на действия, они не работают.

Было бы здорово, если бы вы сказали мне, что я должен делать правильно.

1 ответ

Чтобы гарантировать выполнение действий в третьем варианте использования, убедитесь, что для полезной нагрузки уведомления должно быть указано значение YES для свойства contentAvailable. Чтобы приложение запускалось в фоновом режиме. И он соответственно обновит действия пользователя по уведомлению.

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