123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- //
- // NotificationService.swift
- // BeautifulIndonesiaNotificationService
- //
- // Created by Akhmad Al Qindi Irsyam on 01/03/23.
- //
- import UserNotifications
- import Intents
- import UIKit
- class NotificationService: UNNotificationServiceExtension {
- var contentHandler: ((UNNotificationContent) -> Void)?
- var bestAttemptContent: UNMutableNotificationContent?
- override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
- self.contentHandler = contentHandler
- bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
-
- guard let bestAttemptContent = bestAttemptContent else {
- return
- }
-
- // Check if the notification is a communication notification
- let categoryIdentifier = bestAttemptContent.categoryIdentifier
- if categoryIdentifier != "chat" {
- contentHandler(bestAttemptContent)
- return
- }
-
- let avatarDefault = INImage(imageData: UIImage(systemName: "person.circle.fill")!.withTintColor(.gray).pngData()!)
- var sender = INPerson(personHandle: INPersonHandle(value: "02cdfdfdac", type: .unknown), nameComponents: nil, displayName: "Meme", image: avatarDefault, contactIdentifier: "02cdfdfdac", customIdentifier: "02cdfdfdac")
-
- // sender = INPerson(personHandle: INPersonHandle(value: "02cdfdfdac", type: .unknown), nameComponents: nil, displayName: "Meme", image: INImage(url: URL(string: "https://i.pinimg.com/474x/69/77/b7/6977b70a129ec184527433bbdf9fe457.jpg")!), contactIdentifier: "02cdfdfdac", customIdentifier: nil)
-
- // let nsDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory
- // let nsUserDomainMask = FileManager.SearchPathDomainMask.userDomainMask
- // let paths = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true)
- // if let dirPath = paths.first {
- // let fileURL = URL(fileURLWithPath: dirPath).appendingPathComponent("6977b70a129ec184527433bbdf9fe457.jpg")
- // if FileManager.default.fileExists(atPath: fileURL.path) {
- // sender = INPerson(personHandle: INPersonHandle(value: "02cdfdfdac", type: .unknown), nameComponents: nil, displayName: "Hansen", image: INImage(url: ), contactIdentifier: "02cdfdfdac", customIdentifier: nil)
- // }
- // }
- let incomingMessageIntent = INSendMessageIntent(recipients: [sender], outgoingMessageType: .outgoingMessageText, content: nil, speakableGroupName: INSpeakableString(spokenPhrase: "Test Group"), conversationIdentifier: "Test Group", serviceName: nil, sender: sender, attachments: nil)
- incomingMessageIntent.setImage(avatarDefault, forParameterNamed: \.speakableGroupName)
- let interaction = INInteraction(intent: incomingMessageIntent, response: nil)
- interaction.direction = .incoming
- interaction.donate { error in
- if let error = error {
- contentHandler(bestAttemptContent)
- return
- }
-
- let content = UNMutableNotificationContent()
- content.subtitle = "testing subTitle"
- content.body = "testing body"
- content.sound = .default
- let myRequest = UNNotificationRequest(identifier: "02cdfdfdac", content: content, trigger: nil)
- let myContent = myRequest.content
- do {
- // Update notification content before displaying the
- // communication notification.
- if #available(iOSApplicationExtension 15.0, *) {
- let updatedContent = try myContent.updating(from: incomingMessageIntent)
- contentHandler(updatedContent)
- } else {
- contentHandler(bestAttemptContent)
- }
- } catch {
- contentHandler(bestAttemptContent)
- }
- }
- }
- }
|