Отправка push-уведомлений Apple из кода Python

Я хочу отправить push-уведомление из кода Python (приложение Django) на телефоны клиента.

Я нашел несколько реализаций, одна из них здесь: http://leepa.github.com/django-iphone-push/

У меня вопрос - как определить устройство, на которое я отправляю уведомление? Должен ли я использовать UDID телефона? Меня беспокоит, что это уже устарело в iOS5, поэтому мне интересно, как связать пользователя с телефоном на моем сервере Django?

2 ответа

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

Если у вас нет приложений для iOS, но вы все еще хотите отправлять уведомления пользователям, вы можете использовать Prowl, Notifio или Boxcar. Эти приложения позволяют пользователю использовать их API для доставки уведомлений на пользовательское устройство. Для большинства этих сервисов доступны пакеты Python.

Из документов:

Примечание. Маркер устройства - это не то же самое, что UDID устройства, возвращаемый свойством uniqueIdentifier UIDevice.

Используемый токен получается путем регистрации удаленных уведомлений в приложении:didFinishLaunchingWithOptions:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // ...
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
    // ...
}

Если регистрация прошла успешно, ваш делегат приложения получит приложение:didRegisterForRemoteNotificationsWithDeviceToken:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSString *deviceTokenStr = [[[[deviceToken description]
                                  stringByReplacingOccurrencesOfString: @"<" withString: @""] 
                                 stringByReplacingOccurrencesOfString: @">" withString: @""] 
                                stringByReplacingOccurrencesOfString: @" " withString: @""];
    NSLog(@"%@", deviceTokenStr);
}

Это токен, который вы используете для отправки push-уведомлений.

PS: django-iphone-push последний коммит был 3 года назад. Вы можете попробовать мою вилку под названием django-ios-push.

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