IPhone iOS push уведомляет о появлении на производстве, не отправляющем
Я работаю над этим некоторое время.
Я знаю там массу статей, и многое узнал обо всем этом.
Я создал свою разработку и создание SSL таким же образом.
Разработка подключается к ssl://gateway.sandbox.push.apple.com: 2195
Продукция подключается к ssl://gateway.push.apple.com: 2195
Кажется, что соединения работают нормально.
Что касается приложения.
Разработка:
Когда я запускаю его прямо на свое устройство с xCode, он запускает версию разработки. Приложение успешно записывает токен разработки в базу данных. Затем я запускаю службу для отправки push-уведомления, и он доставляется правильно. Msg успешно доставлен.
Ad-Hoc:
Когда я создаю архив и экспортирую его для распространения Ad-hoc, я дважды проверяю содержимое пакета codesign -dvvvv --entitlements - Elepago.app
и вижу, что aps-environment правильно настроена на производство. Я упаковываю его и загружаю на свое устройство через iTunes. Когда приложение запускается, я вижу новый маркер производства, записанный в базе данных. Таким образом, среда должна быть правильно настроена. Когда я отправляю push-уведомление на производственный ключ (то же самое, что и разработка, просто изменяя ключ SSL.pem и сервер), он говорит, что он успешно доставлен. Однако он никогда не достигает устройства!
Эта проблема сводит меня с ума. Я только что прошел и очистил свой сертификат распространения и перестроил его, используя совершенно новую CSR. Я также обновил все профили подготовки, чтобы использовать этот новый сертификат. [Любые идеи о том, как эти сертификаты привязаны к приложению, кроме того, что я уже проверяю для приложения aps-environment.]
Любое понимание будет принята с благодарностью.
Ответы
Ответ 1
Итак, после часов и часов головных болей, я закончил восстановление файла SSL.pem, и он сработает!
Вот что я сделал:
- стереть мой сертификат распространения и создать новый
- связал все профили обеспечения с новым сертификатом
- загрузил новые профили подготовки в xCode
- восстановил файл SSL файла подтверждения SSL, следуя инструкциям Raywenderlich awesome tutorials
Это те же самые инструкции, которые я изначально следовал за разработкой и производством, но, возможно,/что-то испортил. Затем я тестировал свою специальную версию, и она работала!!!
Кроме того, стоит отметить, что при использовании неправильного ключа .pem я не получал никакой обратной связи от APNS. Я использую файл simplepush.php, найденный в ссылке выше, в качестве базы для отправки PN.
Ответ 2
Маркер устройства для разработки и производства не идентичен.
Когда вы тестируете Production, используйте UIAlertView, чтобы увидеть токен для Production. Сделайте что-то вроде следующего:
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
NSString *deviceID = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
deviceID = [deviceID stringByReplacingOccurrencesOfString:@" " withString:@""];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Device Token", nil) message:deviceID delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", nil) otherButtonTitles:nil];
[alert show];
}
Используйте этот токен, чтобы вызывать уведомление для производства.
Ответ 3
- Любой профиль распределения внутри компании выдает один и тот же токенID, как и этот токенID изменяется на разных устройствах.
- Другой проблемой может быть только с ProductionURL.
- Я также замечаю, что прием push-уведомлений иногда откладывается, в основном при использовании с URL-адресом для производства.
Надеюсь, что это поможет.
Ответ 4
Моя проблема такая же, когда я разрабатывал Java
Но я решил это из-за production = true для производства и производства = false для разработки.
полезная нагрузка (полезная нагрузка, хранилище ключей, пароль, производство, устройства)
Надеюсь на эту помощь.