Уведомления об удаленном общении не работают iOS 18IOS

Программируем под IOS
Ответить
Anonymous
 Уведомления об удаленном общении не работают iOS 18

Сообщение Anonymous »

Я пытаюсь заставить уведомления о связи работать с удаленными push-уведомлениями, которые я настроил, в частности, чтобы в уведомлении отображались аватары пользователей. Я успешно настроил расширение службы уведомлений для своего приложения, которое, как я проверил, работает (точки останова достигнуты в классе NotificationService, и я могу изменить заголовок), и, следуя руководству, я в конечном итоге получаю с помощью этого кода:

Код: Выделить всё

override func didReceive(
_ request: UNNotificationRequest,
withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void
) {
self.contentHandler = contentHandler
bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)

if let bestAttemptContent {
contentHandler(bestAttemptContent) // REMOVE this if statement
}

let personHandle = INPersonHandle(value: "senderID", type: .unknown)
let person = INPerson(
personHandle: personHandle,
nameComponents: .init(givenName: "senderName", familyName: "family name"),
displayName: "senderName",
image: nil,
contactIdentifier: nil,
customIdentifier: "some-unique-id"
)

let intent = INSendMessageIntent(
recipients: nil,
outgoingMessageType: .outgoingMessageText,
content: "some content",
speakableGroupName: nil,
conversationIdentifier: "unique-user-id-conv",
serviceName: nil,
sender: person,
attachments: nil
)

let interaction = INInteraction(intent: intent, response: nil)
interaction.direction = .incoming
interaction.donate(completion: nil)

do {
let updatedContent = try request.content.updating(from: intent)
let mutableBestAttemptContent = (updatedContent.mutableCopy() as? UNMutableNotificationContent)!
mutableBestAttemptContent.userInfo = request.content.userInfo

contentHandler(mutableBestAttemptContent)

} catch {

}
}

Когда я получаю уведомление, этот код запускается, и я проверяю с помощью точек останова, что вызывается contentHandler(mutableBestAttemptContent) и что намерение передается без ошибки.
p>
На данный момент я не добавлял изображение, так как хочу сначала получить минимальный пример работы, где отображается имя человека (хотя я также тестировал это с помощью жестко закодированный INImage(url: validURL) безуспешно), но этот код не работает.
Кроме того, у меня есть следующее:
  • Файл Info.plist расширения службы уведомлений содержит следующее:

Код: Выделить всё

NSExtension

NSExtensionAttributes

IntentsSupported

INSendMessageIntent


...


  • В Info.plist основного целевого приложения есть следующее:

Код: Выделить всё

NSUserActivityTypes

INSendMessageIntent

...

  • В основную цель приложения добавлена ​​возможность «Уведомления о связи», а также «Push-уведомления», «Фоновые режимы» ( с отмеченными «Удаленными уведомлениями») и «Siri».
  • Может быть неважно, но я где-то видел, что перед идентификатором пакета расширения службы должен стоять префикс идентификатора пакета основного приложения. цель, которая также является случае.
Я немного не понимаю, почему это не работает, а документации по этому вопросу поразительно мало, поэтому я даже не знаю, как подойти к отладке этого. У кого-нибудь есть идеи?
ОБНОВЛЕНИЕ:
Я допустил грубую ошибку и сразу же сохранил автоматически сгенерированный код, вызывающий contentHandler, в функция. Удаление этой строки (которое я задокументировал ниже) исправляет это. Я продолжаю публиковать этот пост, чтобы помочь другим узнать обо всем остальном, что необходимо включить.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ing-ios-18
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»