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 для разработки.

полезная нагрузка (полезная нагрузка, хранилище ключей, пароль, производство, устройства)

Надеюсь на эту помощь.