Невозможно использовать [общее приложение UIApplication]. Как я могу зарегистрироваться для получения уведомлений за пределами UIApplicationDelegate?

Я пишу приложение с расширением WatchKit.

Раньше я мог регистрироваться для получения уведомлений вне UIApplicationDelegate, используя [[UIApplication sharedApplication] registerForNotificationTypes:].

[UIApplication sharedApplication] теперь недоступен в проектах, содержащих расширение WatchKit.

Как мне теперь регистрироваться для получения уведомлений вне UIApplicationDelegate?

Для ясности: я пытаюсь зарегистрироваться для получения уведомлений в моем содержащем приложении, а не в расширении watchkit.


person Community    schedule 11.03.2015    source источник


Ответы (3)


Расширению WatchKit не разрешено отправлять уведомления.

Пожалуйста, используйте содержащее приложение, чтобы использовать эту функцию, а затем в расширении WatchKit вы сможете отображать и настраивать внешний вид уведомления.

person BalestraPatrick    schedule 11.03.2015
comment
Безусловно, но мне нужно зарегистрироваться для получения уведомлений в приложении iOS, и если я компилирую приложение со встроенным расширением WatchKit, [UIApplication sharedApplication] будет недоступен. - person ; 11.03.2015
comment
Тогда этот вопрос не относится к WatchKit. В любом случае этот метод устарел в iOS 8. Пожалуйста, используйте: registerUserNotificationSettings - person BalestraPatrick; 11.03.2015

Как и для любого расширения iOS*, код (исходный файл), который является частью цели расширения WatchKit, не может получить доступ к объекту sharedApplication, поэтому вы не можете использовать какие-либо методы для этого объекта. Для кода (исходного файла), который является частью основной цели вашего приложения (а не цели расширения WatchKit), вы все равно можете использовать приведенный ниже вызов

[[UIApplication sharedApplication] registerForNotificationTypes:]

Так что, вероятно, вы используете этот вызов из какого-то исходного файла, который добавлен в вашу цель расширения WatchKit.

*Руководство по программированию расширений для приложений

person msk    schedule 11.03.2015
comment
Это уже не так, начиная с WatchKit 2. См. stackoverflow.com/questions/36270738/ - person Duncan Babbage; 30.03.2016

Начиная с WatchKit 2 обстоятельства существенно изменились. Теперь вы можете получить доступ к общему объекту делегата в приложении WatchKit. Расширение и зайдя в WKExtensionDelegate у вас есть доступ к шести методам, связанным с уведомлениями:
didReceiveRemoteNotification(_:)
didReceiveLocalNotification(_:)
handleActionWithIdentifier(_:forRemoteNotification:)
handleActionWithIdentifier(_:forRemoteNotification:withResponseInfo:)
handleActionWithIdentifier(_:forLocalNotification:) и
handleActionWithIdentifier(_:forLocalNotification:withResponseInfo:)

См. Документация Apple для получения дополнительной информации.

person Duncan Babbage    schedule 30.03.2016