it-swarm.com.ru

iPhone iOS Push-уведомления apns о производстве не отправляются

Я работал над этим некоторое время сейчас. Я знаю, что есть масса статей, и многое узнал обо всем этом.

Я создал свои разработки и производства SSL так же. Разработка подключается к ssl: //gateway.sandbox.Push.Apple.com: 2195 Производство подключается к ssl: //gateway.Push.Apple.com: 2195 Кажется, что соединения работают нормально.

Что касается приложения. Разработка. Когда я запускаю его прямо на своем устройстве из xCode, запускается версия для разработчиков. Приложение успешно записывает токен разработки в базу данных. Затем я запускаю службу для отправки Push-уведомления, и оно доставляется правильно. Сообщение успешно доставлено.

Ad-hoc: когда я собираю архив и экспортирую его для Ad-hoc распространения, я дважды проверяю содержимое пакета codesign -dvvvv --entitlements - Elepago.app и вижу, что aps-среда правильно настроена на работу. Я упаковываю его и загружаю на свое устройство через iTunes. Когда приложение запускается, я вижу новый производственный токен, записанный в базе данных. Таким образом, среда должна быть правильно настроена. Когда я отправляю push-уведомление производственному ключу (то же самое, что и разработка, просто меняя ключ SSL .pem и сервер), оно говорит, что оно успешно доставлено. Однако на самом деле он никогда не достигает устройства !!!

Эта проблема сводит меня с ума. Я просто прошел и очистил свой дистрибутивный сертификат и перестроил его, используя совершенно новый CSR. Я также обновил все профили обеспечения, чтобы использовать этот новый сертификат. [Любые идеи о том, как эти сертификаты связаны с приложением, за исключением того, что я уже проверял.]

Любое понимание будет с благодарностью.

12
Federico

Так что после долгих часов головной боли я перестроил файл SSL .pem, и он заработал !!

Вот что я сделал:

  • очистил мой дистрибутивный сертификат и создал новый
  • привязал все профили обеспечения к новому сертификату
  • загрузил новые профили обеспечения в xCode
  • перестроил мой файл рукопожатия SSL .pem, следуя инструкциям на удивительные руководства Raywenderlich

Это те же самые инструкции, которые я изначально использовал для разработки и производства, но, возможно, что-то напутало. Затем я проверил на моей специальной версии, и это сработало !!!

Также стоит отметить, что при использовании неправильного ключа .pem я не получал никаких сообщений об ошибках от APNS. Я использую файл simplepush.php, указанный в ссылке выше, в качестве базы для отправки PN.

8
Federico

Устройство токена для разработки и производства не совпадает.

Когда вы тестируете для производства, используйте UIAlertView, чтобы увидеть свой токен для производства. Сделайте что-то вроде следующего:

- (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];
}

Используйте этот токен, чтобы Push-уведомления для производства.

4
Muhammad Saad Ansari
  • Любой внутренний профиль распространения выдает один и тот же tokenID, как бы ни варьировался этот tokenID на разных устройствах.
  • Другая единственная проблема может быть только с ProductionURL.
  • Я также заметил, что прием Push-уведомлений иногда задерживается, в основном при использовании с рабочим URL.

Надеюсь это поможет.

1
thatzprem

Моя проблема такая же, когда я разрабатывал на Java Но я решил ее, потому что production = true для производства, а production = false для разработки.

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

Надеюсь, это поможет.

0
Ky Vo