✨ New NSE and hold notification to reply
This commit is contained in:
54
ios/Runner/NotifyDelegate.swift
Normal file
54
ios/Runner/NotifyDelegate.swift
Normal file
@ -0,0 +1,54 @@
|
||||
//
|
||||
// NotifyDelegate.swift
|
||||
// Runner
|
||||
//
|
||||
// Created by LittleSheep on 2025/6/1.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Alamofire
|
||||
|
||||
class NotifyDelegate: UIResponder, UNUserNotificationCenterDelegate {
|
||||
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
|
||||
if let textResponse = response as? UNTextInputNotificationResponse {
|
||||
let content = response.notification.request.content
|
||||
guard let metadata = content.userInfo["meta"] as? [AnyHashable: Any] else {
|
||||
return
|
||||
}
|
||||
|
||||
var token: String = ""
|
||||
if let tokenJson = UserDefaults.standard.string(forKey: "dyn_user_tk"),
|
||||
let tokenData = tokenJson.data(using: String.Encoding.utf8),
|
||||
let tokenDict = try? JSONSerialization.jsonObject(with: tokenData) as? [String: Any],
|
||||
let tokenValue = tokenDict["token"] as? String {
|
||||
token = tokenValue
|
||||
} else {
|
||||
return
|
||||
}
|
||||
|
||||
let serverUrl = "https://nt.solian.app"
|
||||
let url = "\(serverUrl)/chat/\(metadata["room_id"])/messages"
|
||||
|
||||
let parameters: [String: Any] = [
|
||||
"content": textResponse.userText,
|
||||
"replied_message_id": metadata["message_id"]
|
||||
]
|
||||
|
||||
AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: HTTPHeaders(
|
||||
[HTTPHeader(name: "Authorization", value: "AtField \(token)")]
|
||||
))
|
||||
.validate()
|
||||
.responseString { response in
|
||||
switch response.result {
|
||||
case .success(_):
|
||||
break
|
||||
case .failure(let error):
|
||||
print("Failed to send chat reply message: \(error)")
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
completionHandler()
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user