Как получить локальное уведомление в watchOS 2

Как я могу читать в директиве уведомления отображаются автоматически. Но не для меня. Вопрос почему? Мое приложение iOS отправляет уведомление через 4 секунды, когда пользователь нажимает кнопку:

@IBAction func stopTimerPress(sender: AnyObject) {
        print("Stop timer!")
        notification.alertBody = "STOP!"
        self.timer = NSTimer.scheduledTimerWithTimeInterval(4.0, target: self, selector: "fire", userInfo: nil, repeats: true)
}

и тогда я ожидаю, что (если приложение в iOS находится в фоновом режиме), мои Apple Watch будут отображать статическое уведомление. Но этого не произошло. Что я могу сделать? Я раскомментировал это:

override func didReceiveLocalNotification(localNotification: UILocalNotification, withCompletion completionHandler: ((WKUserNotificationInterfaceType) -> Void)) {
        print(localNotification.alertBody)
        completionHandler(.Default)
    }

в NotificationController, но это все еще не работает. Кто-нибудь может мне помочь?

2 ответа

Вы запрашивали разрешение у пользователя на просмотр уведомлений в приложении iOS? Если экран iPhone выключен (не только приложение в фоновом режиме), то он должен переслать уведомление на Apple Watch.

UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];

Кроме того, если приложение Apple Watch находится на переднем плане и экран включается при получении уведомления, оно не будет отображаться в пользовательском интерфейсе, а вместо этого вызовет метод didReceiveLocalNotification. Если экран выключен, этот метод не будет вызываться, но уведомление будет отображаться как обычное уведомление.

Когда вы находитесь в фоновом режиме, ваш код не работает. Однако, если вы щелкнете по своему проекту в XCode, перейдите в "Возможности", а затем в "Фоновые режимы" и нажмите "Удаленные уведомления". Тогда ваше приложение будет пробуждаться в моменты, известные только Apple, а затем ваш код будет запущен при условии, что он длится не более 30 секунд. Вы можете использовать пункт меню Xcode "Simulate Background Fetch" ​​в меню "Debug", чтобы отправить сообщение выборки, когда ваше приложение отлаживается, для тестирования.

Обратите внимание, что это может или не может запустить ваш код в течение 4 секунд - как Apple решает, когда разбудить фоновое приложение. Я видел, как он просыпается каждые 5 минут или даже через пару часов.

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