Приложение отклонено из-за отсутствия права на push-уведомление - PullRequest
36 голосов
/ 19 апреля 2011

Недавно мое приложение было отклонено при загрузке.Группа проверки Apple утверждает, что мое приложение «Отсутствует право на получение push-уведомлений»

Это информация, которую они предоставили:

Отсутствует право на получение push-уведомлений - Ваше приложение регистрируется с помощью Apple Push-уведомленияСлужба, но права подписи приложения не включают в себя необходимые права "aps-environment".Убедитесь, что вы включили службы push-уведомлений для этого приложения и загрузили профиль обеспечения распространения, включающий право «aps-environment».

В более ранних версиях моего приложения использовались push-уведомленияи мой двоичный файл приложения никогда не отклонялся из-за этого.Что мне здесь делать?

Ответы [ 10 ]

17 голосов
/ 11 февраля 2013

Откройте профиль обеспечения в любом текстовом редакторе и выполните поиск по запросу «environment».

Вы должны найти: aps-environment

Если вы не видите aps-environment в своем профиле обеспеченияв вашем сертификате обеспечения Apple есть проблема.

Если вы создали сертификат без push-уведомлений, а затем добавили службу push-уведомлений, Apple НЕ ОБНОВЛЯЕТ ваш профиль обеспечения.

Вам необходимо создать НОВЫЙ профиль обеспечения.Подпишите двоичный файл с этим новым профилем обеспечения, и вам будет хорошо.

14 голосов
/ 19 апреля 2011

Я воссоздаю свой профиль обеспечения Distribution и создаю из него свое приложение.Это изменение решило проблему отсутствия прав на push-уведомления.

12 голосов
/ 14 декабря 2014

Если вы отправляете проект Cordova / Phonegap и НЕ используете push-уведомления, вам следует проверить Classes/AppDelegate.m для двух указанных ниже способов.Наблюдаемый в Cordova 3.7.0, не уверенный в других версиях.

Убедитесь, что вы не используете удаленные уведомления любым другим способом (также тщательно проверьте свои плагины).Затем удалите или закомментируйте следующий блок:

- (void) application:(UIApplication*)application
    didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
    // re-post ( broadcast )
    NSString* token = [[[[deviceToken description]
        stringByReplacingOccurrencesOfString:@"<" withString:@""]
        stringByReplacingOccurrencesOfString:@">" withString:@""]
        stringByReplacingOccurrencesOfString:@" " withString:@""];

    [[NSNotificationCenter defaultCenter] postNotificationName:CDVRemoteNotification object:token];
}

- (void) application:(UIApplication*)application
    didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
    // re-post ( broadcast )
    [[NSNotificationCenter defaultCenter] postNotificationName:CDVRemoteNotificationError object:error];
}

Надеюсь, это сэкономит вам несколько часов; -)

8 голосов
/ 01 октября 2012

У меня была та же проблема, и я исправил ее, воссоздав профиль обеспечения.Начиная с «Подготовка и разработка» в Руководстве по локальным и push-уведомлениям:

Администратор группы или Team Agent должны затем создать профиль обеспечения (Разработка или распространение), используемый на сервере.сторона разработки удаленных уведомлений.Профиль обеспечения - это набор ресурсов, который связывает разработчиков приложений и их устройств с авторизованной командой разработчиков и позволяет использовать эти устройства для тестирования.Профиль содержит сертификаты, идентификаторы устройств, идентификатор пакета приложения и все права, в том числе.Все члены группы должны установить профиль обеспечения на устройствах, на которых они будут работать, и протестировать код приложения.

4 голосов
/ 27 января 2015

Мой случай : я реализовал push-уведомления для обновления приложения appstore. Поскольку профили инициализации до внедрения push-уведомлений становятся недействительными, я создал новый профиль обеспечения распространения Appstore, создал приложение с новым профилем и загрузил для хранения. Но я получил письмо с надписью «Отсутствует право на push-уведомление».

Поиск : Я обнаружил, что при архивировании XCode использует неправильный (недействительный / старый) профиль обеспечения. Так что удалили старый профиль обеспечения из центра участников, и это решило проблему

Screenshot while validating the archive

3 голосов
/ 04 августа 2015

У меня также была эта проблема с приложением Cordova, и после небольшого прочтения кажется, что это распространенная проблема в наше время.

ПОЧЕМУ ЭТО СЛУЧИЛОСЬ?

Поскольку вы упоминаете, что ваше приложение уже было утверждено с использованием push-уведомлений, наиболее вероятным сценарием является изменение профиля обеспечения для вашего приложения при отправке его в AppStore. Возможно, вы:

  1. перестроил ваш проект в XCode или
  2. перешел на другой компьютер и забыл сообщить XCode, какой был правильный профиль, или
  3. кто-то сел за ваш компьютер и изменил его, или

Эта проблема возникает из-за того, что разрешения выбираются через профиль обеспечения. Если вы забудете связать профиль обеспечения для вашего приложения с AppID, который имеет право «Push-уведомления» (обратите внимание, что XCode делает это автоматически с помощью сертификата обеспечения по умолчанию подстановочным символом разработчика), то вы, скорее всего, получите это сообщение, пока вы не выполните из разрешения.

КАК УДАЛИТЬ НЕОБХОДИМОСТЬ ПУШЕВЫХ УВЕДОМЛЕНИЙ В CORDOVA APPS:

Я отправлял приложение Cordova, когда получил это сообщение, и хотя решение, опубликованное @jlapoutre, достаточно для одобрения вашего приложения, вы хотите продолжать получать выгоду от обновлений Cordova, поэтому лучше всего воспользоваться условной компиляцией (т. е. запуск директивы #ifndef DISABLE_PUSH_NOTIFICATIONS, которая указывает XCode компилировать ваше приложение с оставленным битом кода).

Условная компиляция также известна как «Макросы препроцессора» в XCode-говорят. Вот как вы можете сделать это графически с помощью пользовательского интерфейса (обратите внимание, что это делается в XCode 6.1):

enter image description here

Надеюсь, это поможет другим людям в такой же ситуации.

3 голосов
/ 20 апреля 2011

Я получил это же сообщение об ошибке, и воссоздание моего профиля обеспечения не устранило его.

Вместо этого я обнаружил, что мое приложение содержит некоторые случайные символы, связанные с APNS (в библиотеке), которые не используются. Очевидно, они заставили статический анализатор пометить приложение как использование push-уведомлений (это не так). # ifdefing из символов позволил моему приложению быть принятым без разрешения aps-environment.

1 голос
/ 07 ноября 2014

Недавно я столкнулся с этой проблемой после добавления расширения Today в приложение с включенными службами Push.Наконец понял, что у профиля Мобильной инициализации, сгенерированного XCode для Расширения Today, не были включены Сервисы Push-уведомлений.Когда я включил Push-сервисы для расширения Today, предупреждение от Apple ушло.

0 голосов
/ 04 апреля 2013

Шаги

  1. Включить службу push-уведомлений (производственный push-сертификат SSL)

  2. Создание / воссоздание профиля обеспечения распространенияи создайте приложение с обновленным профилем обеспечения распространения.

Вам могут помочь следующие ресурсы

0 голосов
/ 20 февраля 2013

У меня такая же проблема. Я решил это.

Я думаю, что эта проблема возникает при добавлении push-уведомления-функции в AppID и без воссоздания Provisioning. При добавлении iCloud-функции мы получим предупреждение:

Все новые профили обеспечения, которые вы создаете для этого идентификатора приложения, будут включены для iCloud. Если вы хотите включить iCloud для любых существующих профилей предоставления доступа, связанных с этим идентификатором приложения, необходимо вручную восстановить их

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

Я так думаю

...