Подтвердить что ты не робот

Приложение отклонено из-за "Отсутствующего права на уведомление Push Push"

Недавно мое приложение было отклонено при загрузке. Экспертная группа Apple заявила, что мое приложение "Недостающие права на уведомления о выпуске"

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

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

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

4b9b3361

Ответ 1

Откройте профиль Provisioning Profile в любом текстовом редакторе и найдите "среду".

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

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

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

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

Ответ 2

Я воссоздал профиль распределения распределения и создаю с ним свое приложение. Это изменение зафиксировало проблему с отсутствующими уведомлениями о Push Push.

Ответ 3

Если вы отправляете проект 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];
}

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

Ответ 4

У меня была та же проблема, и я исправил ее, воссоздав профиль подготовки. Из "Обеспечение и развитие" в руководстве по локальному и Push-уведомлению:

Командный администратор или агент группы должен в следующий раз создать профиль подготовки (Development or Distribution), используемый на стороне сервера для разработки удаленных уведомлений. Профиль обеспечения - это совокупность активов, которая связывает разработчиков приложения и их устройств с уполномоченной группой разработчиков и позволяет использовать эти устройства для тестирования. Профиль содержит сертификаты, идентификаторы устройств, идентификатор пакета приложений и все права, в том числе. Все члены команды должны установить профиль подготовки на устройствах, на которых они будут запускаться, и протестировать код приложения.

Ответ 5

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

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

Screenshot while validating the archive

Ответ 6

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

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

Ответ 7

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

ПОЧЕМУ ЭТО ПРОИСХОДИТ?

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

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

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

КАК УДАЛИТЬ НУЖДУ ДЛЯ УВЕДОМЛЕНИЙ В КОРДОВСКИХ ПРИЛОЖЕНИЯХ:

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

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

введите описание изображения здесь

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

Ответ 8

Недавно я столкнулся с этой проблемой после добавления расширения Today в приложение с включенными службами Push. Наконец, понял, что профиль Mobile Provisioning, сгенерированный Xcode для Today Extension, не поддерживает Push Notifications Services. Как только я включил Push-сервисы для Today Extension, предупреждение Apple ушло.

Ответ 9

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

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

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

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

Я так думаю

Ответ 10

Шаги

  • Включить услугу Push Notification Service (Сертификат производства Push SSL)

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

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