Мы добавили получение push-уведомлений в приложение для iPhone. Все работало в среде test / sandbox, мы получали идентификаторы токенов из приложения и могли отправлять push-уведомления с нашего сервера.
Но теперь приложение одобрено и вышло из Appstore, и мы получали пустые идентификаторы push-токенов / уведомлений, отправленные на наш сервер. У нас их уже более 600 ... Обратите внимание, что конечные пользователи получают всплывающее окно, подтверждающее получение уведомлений в приложении, приложение просто отправляет пустые токены на наш сервер после утверждения. Так что, вероятно, сервер APNS раздает пустые токены.
Следующая проблема показала нам, что это, вероятно, связано с отсутствием права на «push-уведомление» в профиле подготовки, который мы использовали для создания сборки для магазина приложений: Как проверить, включены ли push-уведомления в профиле подготовки распространения iOS?
Отсутствие прав возникло из-за ошибки на веб-сайте предварительной поддержки Apple, но после «Измените любой существующий профиль перед загрузкой нового», как указано в следующей статье http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ProvisioningDevelopment/ProvisioningDevelopment.html
Теперь у нас есть правильное разрешение в нашем файле .mobileprovision:
<key>Entitlements</key>
<dict>
..
<key>aps-environment</key>
<string>production</string>
..
Итак, мы перестраиваем наше приложение и добавляем его в магазин. И надеемся потом получать push-уведомления.
Я надеюсь, что это может помочь другим. Но теперь, чтобы перейти к моему актуальному вопросу: начнем ли мы получать новые push-токены также для более 600 пользователей, которые уже загрузили текущую версию, когда они установят следующее обновление из магазина? Или нам нужно добавить начальный код в наше приложение? Метод registerForRemoteNotifications сейчас вызывается только при запуске приложения. Будет ли он также срабатывать, когда идентификатор push-токена изменяется с пустого ('') на фактический токен? Конечно, мы не хотим ждать еще одну (небольшую) неделю для утверждения нового AppStore и только потом узнаем, что push-уведомления по-прежнему не работают для некоторых пользователей. Я надеюсь, что какой-нибудь эксперт нам расскажет.
Примечание. Мы используем приложение для iPhone, разработанное в MonoTouch, и используем (старую) библиотеку APNS-Sharp для отправки уведомлений с нашего сервера, но я не думаю, что эти детали имеют отношение к этой проблеме.