У меня есть несколько приложений, которые были написаны в Swift 2.2, скомпилированы с Xcode 7.3 и живут в App Store. Приложения используют Push Notifications и отлично работают в iOS 9.3 и более ранних версиях.
Однако на устройствах, которые были обновлены до iOS 10, мои приложения не получают Push Push-сообщений. Устройства, которые все еще работают с iOS 9, все еще получают уведомления.
Думая, что это может быть проблема с сертификатом или правом, я попробовал следующее: Обновил одно из моих приложений до Swift 2.3, добавил APS Environment Entitlement и скомпилировал его в Xcode 8, но это не имело значения.
В моем AppDelegate у меня все еще есть существующие методы регистрации для push-уведомлений, которые включают в себя:
let notificationSettings = UIUserNotificationSettings(forTypes: [.Badge, .Sound, .Alert], categories:nil)
application.registerUserNotificationSettings(notificationSettings)
Эта регистрация, кажется, успешна даже на iOS 10, так как приложение didRegisterForRemoteNotificationsWithDeviceToken затем вызывается, поэтому я получаю токен от APNS.
Проблема заключается в том, что при отправке push-уведомления этому устройству приложение didReceiveRemoteNotification никогда не вызывается.
Теперь здесь сказано, что методы в UIApplicationDelegate устарели на iOS 10, и я должен реализовать userNotificationCenter (: didReceive: withCompletionHandler:) и userNotificationCenter (: willPresent: withCompletionHandler:)
Проблема заключается в том, что я не ТОЛЬКО таргетинг на iOS 10. Мне все еще нужно приложение для работы с iOS 8 и 9, поэтому я сомневаюсь, что это правильный подход для реализации этих методов.
Как получить push-уведомления для существующего приложения для продолжения работы над устройствами, которые были обновлены до iOS 10? Нужно ли переписывать код? Мне просто нужно обновить некоторые сертификаты или права и перекомпилировать в Xcode 8 с некоторыми "новыми" настройками?