Стратегия push-уведомлений для приложения, использующего сервис Urban Airship (iPhone)

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

Приложение отслеживает даты событий, которые добавляются в приложение пользователем. Это означает, что у меня нет сервера для обработки push-уведомлений, само приложение просто планирует push-уведомление с помощью Urban AS, когда пользователь добавляет дату и время события.

Если пользователь решает удалить событие до того, как оно произойдет, я отменяю его расписание с помощью Urban AS. Все хорошо. Я, однако, не хотел бы отправлять уведомления пользователю, который отключил уведомления, поскольку эти уведомления не являются бесплатными :)

Я знаю, что API push-уведомлений от Apple гарантирует, что пользователь не получит никаких уведомлений, если они отключили их в настройках. Они просто проигнорируют запланированные уведомления, которые отправляет Urban AS, что является пустой тратой полосы пропускания и денег.

Как узнать, отключил ли пользователь уведомление для моего приложения?

Кроме того, я не вижу другого варианта, кроме как проверить, отключил ли пользователь уведомление, а затем сказать Urban AS, чтобы он отменил все уведомления, и если пользователь снова включит их, мне придется пройти все события и перенастроить их: / каждый раз при запуске приложения.

Может ли кто-нибудь придумать, как мне не заполнять мой appDelegate всевозможными условными кодами для тестирования этих сценариев? например, пользователь отключил push с момента последнего запуска приложения, пользователь включил их с последнего раза. Меня также беспокоит, поймет ли пользователь такое поведение?

Думаю, я просто прошу немного поработать с этой настройкой push / Urban Airship :) Спасибо.


person RickiG    schedule 23.03.2010    source источник


Ответы (1)


Насколько я понимаю, [[UIApplication sharedApplication] enabledRemoteNotificationTypes] вернет типы уведомлений, которые пользователь в данный момент включил для вашего приложения.

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

Что касается вопроса о заполнении делегата вашего приложения всевозможными условными операторами, вы можете написать отдельный PushNotificationsController (не UIViewController, а просто подкласс NSObject), который будет обрабатывать все, что связано с push.

person Ole Begemann    schedule 23.03.2010
comment
Спасибо Оле. Да, я обязательно поставлю его в отдельный Контроллер. Я просто имел в виду, что тестирую массу других вещей, когда appDelegate получает сообщение applicationDidFinishLaunching. Я посмотрю, смогу ли я придумать что-то легкое, что отслеживает предпочтения пользователей от запуска к запуску и действует соответственно. Еще раз спасибо за ваш вклад. - person RickiG; 24.03.2010