Есть ли способ прикрепить изображение к push-уведомлению без использования расширения службы уведомлений?

В настоящее время я работаю в проекте, где у нас уже есть настройка push-уведомлений в основной цели нашего приложения, и теперь мы хотим добавить расширенную функциональность push-уведомлений. Я провел много исследований в Интернете и не смог найти способ реализовать расширенные push-уведомления без добавления новой цели (расширение службы уведомлений) в проект.

Как я уже сказал в заголовке, возможно ли добавить изображение в push-уведомление, не используя эту новую цель?

1 ответ

Технически да, но на самом деле нет. Пока ваше изображение достаточно маленькое, чтобы сделать что-то вроде base64-кодирования изображения, которое по-прежнему позволяет ему вписаться в полезную нагрузку, вы можете сделать это.

Однако, учитывая, как просто добавить расширение службы уведомлений, почему вы пытаетесь избежать этого? Ваше расширение будет выглядеть так:

override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
  guard let urlPath = request.content.userInfo["media-url"] as? String,
    let url = URL(string: urlPath) else {
      return
  }

  self.contentHandler = contentHandler
  bestAttemptContent = request.content.mutableCopy() as? UNMutableNotificationContent

  defer { contentHandler(bestAttemptContent!) }

  let destination = URL(fileURLWithPath: NSTemporaryDirectory())
      .appendingPathComponent(url.lastPathComponent)

  do {
    let data = try Data(contentsOf: url)
    try data.write(to: destination)

    let attachment = try UNNotificationAttachment(identifier: "",
                                                  url: destination)
    bestAttemptContent!.attachments = [attachment]
  } catch {
  }
}

Обратите внимание, что в этом методе вам необходимо выполнить синхронную загрузку.

Другие вопросы по тегам