Push-уведомление Apple с корпоративным приложением Apple не получает токен устройства

Я все настроил (создал сертификаты) и решил получить токен устройства в среде разработки.

Когда я звоню:

[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];

Я получаю токен устройства здесь:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{ ...

Но с Apple Enterprise, когда я экспортирую приложение и загружаю его на iPhone, application:didRegisterForRemoteNotificationsWithDeviceToken никогда не вызывается!

Я создал:

  • сертификат распространения IOS (с правильным идентификатором приложения)

  • сертификат APNS Production (с правильным идентификатором приложения)

  • профиль обеспечения, разрешающий APN (с правильным идентификатором приложения)

У меня то же самое для разработки, и, как я уже сказал, когда я запускаю приложение из xcode, я получаю токен устройства. Почему не в экспортированном приложении?!


person Damien Romito    schedule 26.03.2015    source источник
comment
Вы проверили причину сбоя в -(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error ?   -  person Jakub Vano    schedule 26.03.2015
comment
Обновили ли вы правильный файл pem (сгенерированный из сертификата APNS Production) на свой сервер для отправки уведомления?   -  person Ajumal    schedule 26.03.2015
comment
@JakubVano Я проверяю, отправляя токен устройства на свой сервер, и дважды проверяю с помощью UIAlert.   -  person Damien Romito    schedule 26.03.2015
comment
@Aju Да, но это следующий шаг, сначала мне нужно получить токен устройства   -  person Damien Romito    schedule 26.03.2015
comment
@DamienRomito Я имел в виду: когда регистрация не удалась, вызывается метод делегата didFailToRegister. Вы проверили, error там прошли?   -  person Jakub Vano    schedule 26.03.2015
comment
@JakubVano, нет, метод не вызывается, я добавил UIAlert, чтобы проверить его.   -  person Damien Romito    schedule 26.03.2015
comment
одну вещь, которую я хочу прояснить, я использую APNS с корпоративным приложением. так что проблем с корпоративным приложением нет. проблема может быть в вашем pem или ipa файле.   -  person M Zubair Shamshad    schedule 26.03.2015


Ответы (1)


Я сталкивался с подобной проблемой раньше, у меня была проблема с файлом предоставления, Xcode ошибочно выбирал специальную подготовку XC или иногда предоставление приложения с подстановочными знаками при создании сборки, см. изображение нижевведите здесь описание изображения.

При использовании приложения с подстановочным знаком push-уведомление не будет работать. В Xcode 6 есть эта проблема, и здесь нет возможности выбрать правильное положение. Но я нашел другое решение для этого. Щелкните правой кнопкой мыши архив из Организатора и выберите Показать в Finder ->

Щелкните правой кнопкой мыши файл архива и выберите «Показать содержимое пакета» ->

выберите продукт -> Приложения.

Здесь вы можете увидеть файл с названием вашего приложения. скопируйте его в папку где-нибудь, назовите папку Payload , затем сожмите ее, чтобы у вас был Payload.zip.

Затем переименуйте его в Payload.ipa. надеюсь, это поможет вам.

person Ajumal    schedule 26.03.2015
comment
Это не работает, и я не понимаю, почему это должно работать. приложение, которое я экспортирую, предназначено не для развертывания Ah Hoc, а для развертывания Enterprise. Выбранный профиль подготовки по умолчанию включает push-уведомления, он должен работать... странно - person Damien Romito; 26.03.2015
comment
Я предлагаю вам перепроверить каждое место, где показано правильное положение, в том числе в Организаторе. В моем случае было выбрано положение с подстановочным знаком. Выполнив эти шаги, это сработало. - person Ajumal; 26.03.2015
comment
Вы были правы. Идентификатором приложения по умолчанию для моего профиля подготовки был автоматически созданный идентификатор приложения Xcode iOS Wildcard. Ваш метод не сработал для меня, но я удалил этот идентификатор приложения с подстановочным знаком и установил свой. - person Damien Romito; 27.03.2015