Fernkommunikationsbenachrichtigungen funktionieren unter iOS 18 nicht
Posted: 06 Jan 2025, 02:33
Ich versuche, Kommunikationsbenachrichtigungen mit den von mir eingerichteten Remote-Push-Benachrichtigungen funktionieren zu lassen, insbesondere damit Benutzer-Avatare in der Benachrichtigung angezeigt werden. Ich habe erfolgreich eine Notification Service Extension für meine App eingerichtet, von der ich überprüft habe, dass sie funktioniert (Haltepunkte werden in der NotificationService-Klasse erreicht, und ich kann den Titel ändern), und indem ich der Anleitung folge, komme ich zum Schluss mit diesem Code:
Wenn ich eine Benachrichtigung erhalte, wird dieser Code ausgeführt und ich habe mit Haltepunkten überprüft, dass contentHandler(mutableBestAttemptContent) aufgerufen wird und dass die Absicht ohne Fehler übergeben wird.
Im Moment habe ich darauf verzichtet, ein Bild hinzuzufügen, da ich zunächst ein minimales Beispiel zum Laufen bringen möchte, in dem der Name der Person angezeigt wird (obwohl ich dies auch mit getestet habe). ein fest codierter INImage(url: validURL) ohne Erfolg), aber dieser Code funktioniert nicht.
Außerdem habe ich Folgendes:
Code: Select all
override func didReceive(
_ request: UNNotificationRequest,
withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void
) {
self.contentHandler = contentHandler
bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
if let bestAttemptContent {
contentHandler(bestAttemptContent)
}
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 {
}
}
Im Moment habe ich darauf verzichtet, ein Bild hinzuzufügen, da ich zunächst ein minimales Beispiel zum Laufen bringen möchte, in dem der Name der Person angezeigt wird (obwohl ich dies auch mit getestet habe). ein fest codierter INImage(url: validURL) ohne Erfolg), aber dieser Code funktioniert nicht.
Außerdem habe ich Folgendes:
- Die Notification Service Extension Info.plist-Datei enthält Folgendes:
Code: Select all
NSExtension
NSExtensionAttributes
IntentsSupported
INSendMessageIntent
...
- Das Haupt-App-Ziel enthält Folgendes in seiner Info.plist
Code: Select all
NSUserActivityTypes
INSendMessageIntent
...
- Die Funktion „Kommunikationsbenachrichtigungen“ wurde im Haupt-App-Ziel hinzugefügt, ebenso wie „Push-Benachrichtigungen“ und „Hintergrundmodi“ ( mit „Remote-Benachrichtigungen“ aktiviert) und „Siri“.
- Kann irrelevant sein, aber ich habe irgendwo gesehen, dass der Bundle-ID der Diensterweiterung die Bundle-ID der Haupt-App vorangestellt werden muss Ziel, das auch das ist Fall.