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

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

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 23 марта 2010

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

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

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

...