Push-уведомления в симуляторе - не работает Xcode 11.4beta

Недавно Apple добавила push-уведомления и в симуляторы. Мои существующие уведомления приложений не принимаются в симуляторах.

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

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

Ссылка: https://developer.apple.com/documentation/xcode_release_notes/xcode_11_4_beta_release_notes


person Saranjith    schedule 07.02.2020    source источник
comment
Не могли бы вы поделиться ссылкой, откуда вы взяли эту информацию   -  person Virender    schedule 07.02.2020
comment
Ссылка на ссылку уже есть в вопросе   -  person Saranjith    schedule 13.02.2020
comment
Отвечает ли это на ваш вопрос? Тестируйте расширенные уведомления в симуляторе   -  person Honey    schedule 27.10.2020


Ответы (3)


Да, ты прав. С Xcode 11.4:

Симулятор поддерживает имитацию удаленных push-уведомлений, в том числе фоновых уведомлений о загрузке контента. (примечания к выпуску xcode 11.4)

Вам просто нужно перетащить действительный файл APN в симулятор.

Однако, если кто-то спрашивает, почему метод экземпляра didReceive (_: withContentHandler :) из UNNotificationServiceExtension не вызывается, это потому, что свойство "mutable-content" не учитывается.

Расширения службы уведомлений не работают в имитированных push-уведомлениях. Ключ изменяемого содержимого не соблюдается. (55822721) (примечания к выпуску xcode 11.4)

В целом это означает, что вариант использования при разработке, а именно легкое тестирование, расширенных push-уведомлений на локальной машине с симулятором работать не будет!

person axel_F    schedule 12.05.2020
comment
Слава богу, остановился на мгновение и погуглил. Думал, что делаю что-то не так, поскольку предыдущие json-файлы с полезной нагрузкой работают нормально. ???? - person Thet Htun; 15.08.2020

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

Недопустимое push-уведомление: файл не содержит действительных данных JSON или отсутствует ключ целевого пакета симулятора.

Итак, добавьте "Simulator Target Bundle" в свой файл полезной нагрузки:

{
    "aps" : {
        "alert" : {
            "title" : “Namaste”,
            "body" : “This is iOS development notification test“
        },
    },
    "Simulator Target Bundle": "com.sarunw.example-xcode-11-4"
}

Следующая команда simctl в терминале будет отправлять уведомления, и, поскольку идентификатор пакета включен в команду, ему не нужно, чтобы в файле был "Целевой пакет симулятора":

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

(<device> можно "загрузить", если в Simulator запущено только одно устройство. В противном случае используйте xcrun simctl list, чтобы просмотреть их список, и скопируйте UUID того, на которое хотите отправить.)

person Arvind    schedule 13.02.2020
comment
Просто чтобы дополнить ответ @Arvind, когда вы просто хотите перетащить файл APNS в симулятор, ключ Simulator Target Bundle является идентификатором вашего целевого пакета приложения, и это тот же параметр <bundle-identifier>, который вы можете использовать с командой simctl. - person Ricardo Barroso; 14.05.2020

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

Apple не добавила push-уведомления в симулятор, они добавили поддержку имитации push-уведомлений. Это означает, что вы не можете получать push-уведомления, вы можете просто смоделировать их.

Подробнее об этом можно прочитать в примечаниях к выпуску бета-версии Xcode в разделе Симулятор раздел.

person lacefarin    schedule 07.02.2020