Как стать автором
Обновить

Комментарии 13

обновил. изначально не добавил, так как предположил, что механизм у WP и Windows 8 должен быть одинаковым. или я неправ?
посмотрел исходники. вижу, что неправ. а кто-нибудь из специалистов по WP и Windows 8 может объяснить в чём причина?
В WP изначально было более мягкое требование по безопасности в отличие от W8 где изначально закладывалась более жесткие требование к безопасности. Кроме того шаблоны Live Tile в W8 и WP отличаются.
Для сохранения device token я использую NSUserDefaults (минусов в этом подходе пока не вижу).


В доке (https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ IPhoneOSClientImp.html%23//apple_ref/doc/uid/TP40008194-CH103-SW12) описано, что кешировать токен не нужно. Он может стать не валидным, лучше каждый раз его запрашивать. Если он не изменился, то ответ придёт сразу же:

Moreover, never cache a device token and give that to your provider; always get the token from the system whenever you need it. If your application has previously registered, calling registerForRemoteNotificationTypes: results in the operating system passing the device token to the delegate immediately without incurring additional overhead.
всё верно, но от момента старта приложения
//от метода
 - (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

до вызова сервиса, с которым пошлю этот token на сервер, его же где-то хранить нужно. или я что-то упускаю и можно device token каким-то другим способом получить, кроме как из этого метода?
Да, я понял. Я бы хранил в @property делегата приложения, чтобы оно на всякий случай не кешировалось между запусками.
В свое вермя прочел много топиков по поводу конвертации deviceToken из NSData в NSString и предложенный вариант мне кажется не самым удачным решением. При использовании спецификатора %@ согласно документации Apple вы получите строку из объекта с помощью метода descriptionWithLocale: если он доступен или description в противном случае. Нет никаких гарантий, что при обновлении до очередной версии iOS то, что возвращает этот метод не изменится и вам, тогда не придется в спешном порядке переписывать эту часть кода, чтобы все продолжало работать как работало. Сам пользуюсь для конвертации токена в строку следующим методом и вам сильно советую:

— (NSString *)stringWithDeviceToken:(NSData *)deviceToken {
const char *data = [deviceToken bytes];
NSMutableString *token = [NSMutableString string];

for (int i = 0; i < [deviceToken length]; i++) {
[token appendFormat:@"%02.2hhX", data[i]];
}

return [token copy];
}
спасибо за совет!
16 шагов только на создание профайла! АААА!!!!111 Pushwoosh делает это все автоматически из гуйни в контрольной панели
там просто разжёвано всё, чтобы не оставить шансов на ошибку тем, кто делает это в первый раз. посмотрел Pushwoosh — не понимаю за что платить.
всё, понял. это ваш продукт. напишите статью, расскажите чем хорош Pushwooosh и почему его нужно покупать.
бегло просмотрев сайт, я не понимаю ради чего приобретать зависимость от этого сервиса.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории