#iphone #xcode
#iPhone #xcode — код
Вопрос:
У меня есть приложение для iPhone, которое использует Push-уведомления. Мое понимание того, как это работает, заключается в том, что мне нужен «Токен устройства» каждого iPhone, прежде чем я смогу отправить уведомление.
Используя имеющиеся у меня тестовые iPhone, я могу получить токен устройства из интерфейса xcode и сохранить их в таблице данных, которую PHP-скрипт Push-уведомлений использует для отправки уведомлений.
Как мне отправлять Push-уведомления на iPhone, на которых установлено приложение, идентификатор токена устройства которого мне неизвестен.
Я думаю, мой вопрос в том, нужны ли мне токены устройства, прежде чем я смогу отправить уведомление на iPhone.
Если мне действительно требуется токен устройства, как мне получить его с iPhone с помощью моего приложения.
Ответ №1:
Вы не можете получать какие-либо Push-уведомления с помощью симулятора.
Вы не отправляете уведомление напрямую. Вы сказали серверам Apple, что для этого токена устройства есть уведомление. Затем сами iPhone автоматически попросят получать push-уведомления, если некоторые из них доступны.
Чтобы ответить на ваш вопрос: да, это так. Без маркера устройства вы не сможете зарегистрировать свое уведомление на сервере Apple. Затем вы должны реализовать это зарегистрировать устройство, чтобы получить deviceToken:
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken
Комментарии:
1. Привет, Бобби Стоукет, точка взята на «Симуляторе». Код, который вы указали в своем ответе, находится в моем делегате приложения. Я понимаю, что требуется токен устройства, но отправляет ли приложение его на серверы Apple, если да, то как мне затем заставить мой PHP-скрипт (когда он запускается) отправлять уведомление, если я не знаю токен устройства. Если неизвестный человек загрузит приложение, я не буду знать о маркере устройства своего iPhone. Или я несу полную чушь?
2. По сути, вы управляете этим непосредственно на своем собственном сервере. Вы запрашиваете токен устройства со своего устройства (только один раз). Затем вы отправляли его в свой API каждый раз, когда хотели отправить уведомление. Вашему API удастся зарегистрировать устройство (здесь тоже только один раз) и добавить это уведомление для этого устройства на сервер Apple. Если это сделает неизвестный человек, вы должны отправлять токен устройства при каждом запуске вашего приложения.
3. Bobbystouket, еще раз спасибо за ваш ответ. Я немного посижу и попытаюсь разобраться в этом.
Ответ №2:
Вот что вам следует посмотреть == Руководство по программированию push-уведомлений
- (void)applicationDidFinishLaunching:(UIApplication *)app {
// other setup tasks here....
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
}
// Delegation methods
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {
const void *devTokenBytes = [devToken bytes];
self.registered = YES;
[self sendProviderDeviceToken:devTokenBytes]; // custom method
}
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
NSLog(@"Error in registration. Error: %@", err);
}
Смотрите Код из Apple Local и Руководство по программированию push-уведомлений, сначала вам нужно вызвать registerForRemoteNotificationTypes в вашем приложении, а затем в двух делегатах вы можете получить токен разработчика или нет, этот токен из APNS, поэтому, когда вы его получите, вы отправите его в свою службу для его сохранения. И вы не можете получить токен устройства из симулятора.
Ваша служба push-уведомлений должна будет использовать токен устройства для отправки уведомлений в ваше приложение, поэтому вам это обязательно понадобится. Кроме того, вам необходимо будет получить SSL-сертификаты от apple dev center, для чего требуется действительный платный идентификатор разработчика iOS.
Для получения дополнительной информации, пожалуйста, ознакомьтесь с Руководством по программированию push-уведомлений, и это очень поможет. Кроме того, я попробовал эту библиотеку PHP для тестирования службы push-уведомлений, и это хорошо, вы можете просто найти ее модульный тест, вставить туда токен устройства и запустить его, вы получите от него сообщение.