Наконец, начиная с бета-версии Xcode 11.4, это возможно путем моделирования !!!

Еще не настал день имитировать push-уведомления iOS в симуляторах. Борьба каждого разработчика за тестирование push-уведомлений подошла к концу с выпуском бета-версии Xcode 11.4 и скоро выйдет с финальной версией Xcode 11.4.

На сегодняшний день единственный способ тестирования удаленных push-уведомлений - это сделать это на физических устройствах, и это непростая задача, поскольку для этого требуются push-токены, конфигурации сервера и соответствующие сертификаты APNS и, в основном, физическое устройство.

В Xcode 11.4 Beta Apple представила новый способ имитации удаленного push-уведомления в симуляторе iOS. Это означает, что они добавили поддержку для имитации push-уведомлений, но не для получения push-уведомлений, как на реальном устройстве. Официальную документацию можно найти здесь.

Симуляторы поддерживают имитацию удаленных push-уведомлений, включая уведомления о фоновой выборке контента.

Как имитировать push-уведомления на симуляторах?

Чтобы смоделировать push-уведомление в симуляторе iOS, нам потребуется следующее:

  1. Загрузите и установите Xcode 11.4-beta и выше.
  2. Идентификатор пакета вашего приложения.
  3. Идентификатор устройства вашего активного симулятора.
  4. Полезные данные push-уведомления.

Шаги:

  1. Создайте образец приложения с включенными push-уведомлениями. Запустите приложение на симуляторе и предоставьте разрешения.
  2. Нам нужно получить идентификатор устройства симулятора, чтобы имитировать push-уведомление.
You can find the simulator’s device identifier from
Xcode -> Window (from menu bar) -> Devices and Simulator -> Select the active simulator -> Copy the displayed identifier

3. Поскольку мы просто моделируем push-уведомления, потребуется немного усилий для создания полезных данных push-уведомлений вручную.

Как создать файл полезной нагрузки Apple Push Notification Service (APNS)?

Файл полезной нагрузки APNS - это файл JSON, содержащий информацию о push-уведомлении. Больше можно найти в Документации Apple.

Пример PayLoad:

{
    "aps" : {
        "alert" : {
            "title" : " Simulating Push Notification",
            "body" : "Push Notifications on iOS Simulators"
        },
        "badge" : 1
    }
}

Сохраните указанную выше полезную нагрузку JSON в файле с расширением .apns, например payload.apns.

Как имитировать push-уведомления на симуляторе?

Инструменты командной строки Xcode позволяют работать с симуляторами из терминала. Мы можем запускать симуляторы, запускать универсальные ссылки и многое другое.

Ниже приведена команда, которую мы должны использовать для имитации push-уведомления для конкретного симулятора, когда запущено / открыто несколько симуляторов.

xcrun simctl push <simulator-identifier> <bundle-identifier> <path-to-apns-file>

Эта команда требует передачи нескольких аргументов:

  • <simulator-identifier>
    Мы можем установить для него значение загружено, чтобы использовать открытый симулятор. Вы также можете использовать идентификатор устройства, который вы можете получить с помощью xcrun simctl list command.

Чтобы использовать загруженный

xcrun simctl push booted <bundle-identifier> <path-to-apns-file>

Чтобы получить идентификатор симулятора

xcrun simctl list

И мы можем увидеть что-то вроде ниже

  • <bundle-identifier>
    Это идентификатор пакета приложения, которое вы тестируете на наличие push-уведомлений.
  • <path-to-apns-file>
    Это должно указывать на файл .apns, содержащий сведения о push-уведомлении.

Например:

К конкретному симулятору, когда открыто / запущено несколько симуляторов:

xcrun simctl push 85B4FBF6-E982-42A9-BAC5-2030FF13FDDD com.test.pushsimulation payload.apns

К текущему открытому симулятору

xcrun simctl push booted com.test.pushsimulation payload.apns

Вы также можете избежать использования идентификатора пакета, если полезная нагрузка содержит Simulator Target Bundle ключ со значением идентификатора пакета вашего приложения.

Добавьте Simulator Target Bundle ключ в файл полезной нагрузки, как показано ниже:

{
    "aps" : {
        "alert" : {
            "title" : " Simulating Push Notification",
            "body" : "Push Notifications on iOS Simulators"
        },
        "badge" : 1
    }
   "Simulator Target Bundle": "com.test.pushsimulation"
}

После добавления ключа команды будут выглядеть так:

xcrun simctl push 85B4FBF6-E982-42A9-BAC5-2030FF13FDDD payload.apns

Or

xcrun simctl push booted payload.apns

Другой способ - перетаскивание:

Еще один простой способ протестировать имитацию push-уведомлений на симуляторе iOS - перетащить файл APNS в симулятор iOS. Этот метод требует, чтобы полезная нагрузка содержала Simulator Target Bundle ключ. В противном случае вы получите это сообщение об ошибке.

После того, как у вас есть действительная полезная нагрузка, перетащите файл полезной нагрузки на симулятор, и вы увидите, как появляется баннер с уведомлением.

Известные проблемы:

Из моего тестирования я вижу, что значки и звуковые клавиши не работают, и, поскольку Xcode 11.4 все еще находится в стадии бета-тестирования, я надеюсь, что Apple исправит их к официальному выпуску.

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

Если вам понравился этот пост и вы нашли его полезным, дайте мне несколько аплодисментов! Пожалуйста, подпишитесь на меня на Medium! Следите за AppIt Ventures, чтобы увидеть другие похожие статьи. Спасибо 😄