-
-
Save Dexwell/dedef7389eae26c5b9db927dc5588905 to your computer and use it in GitHub Desktop.
var content = UNMutableNotificationContent() | |
content.title = "Title" | |
content.subtitle = "Subtitle" | |
content.body = "Text" | |
content.sound = nil | |
content.categoryIdentifier = "categoryName" | |
var personNameComponents = PersonNameComponents() | |
personNameComponents.nickname = "Sender Name" | |
let avatar = INImage(imageData: UIImage(named: "Avatar")!.pngData()!) | |
let senderPerson = INPerson( | |
personHandle: INPersonHandle(value: "1233211234", type: .unknown), | |
nameComponents: personNameComponents, | |
displayName: "Sender Name", | |
image: avatar, | |
contactIdentifier: nil, | |
customIdentifier: nil, | |
isMe: false, | |
suggestionType: .none | |
) | |
let mePerson = INPerson( | |
personHandle: INPersonHandle(value: "1233211234", type: .unknown), | |
nameComponents: nil, | |
displayName: nil, | |
image: nil, | |
contactIdentifier: nil, | |
customIdentifier: nil, | |
isMe: true, | |
suggestionType: .none | |
) | |
let intent = INSendMessageIntent( | |
recipients: [mePerson], | |
outgoingMessageType: .outgoingMessageText, | |
content: "Test", | |
speakableGroupName: INSpeakableString(spokenPhrase: "Sender Name"), | |
conversationIdentifier: "sampleConversationIdentifier", | |
serviceName: nil, | |
sender: senderPerson, | |
attachments: nil | |
) | |
intent.setImage(avatar, forParameterNamed: \.sender) | |
let interaction = INInteraction(intent: intent, response: nil) | |
interaction.direction = .incoming | |
interaction.donate(completion: nil) | |
do { | |
content = try content.updating(from: intent) as! UNMutableNotificationContent | |
} catch { | |
// Handle error | |
} | |
// Show 3 seconds from now | |
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 3, repeats: false) | |
// Choose a random identifier | |
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger) | |
// Add notification request | |
UNUserNotificationCenter.current().add(request) |
@kartikk221
Make sure "mutable-content" : 1
is set in your notification payload.
Important note: An assumption I was making was that the system would create the group image for me. I thought that it would use each recipients image and make a cool looking bubble (like the one in iMessage). This is NOT true. It will simply render whatever image you give it when calling setImage. That does not mean you can't do the cool bubble thing, you just have to make it yourself.
You can do group images, but you must make the image yourself. The image being a group of images. Easiest way would be to make a custom GroupImageView: UIView
and then transform that view to an image.
@lazyvar Thanks. I thought it was a built in feature for Communication Notifications and I might've missed a configuration.
Right now I am loading the INImage with a url. And because our BE doesn't generate a thumbnail version of the user images 🙄, the images takes 1-2 seconds to show in the notification.
I'm a newbie IOS
Can you help me: Where is the above code located?
Has anyone been able to implement multiple images for Communication Notifications like in a channel/group chat in Slack?