mirror of
https://github.com/Finb/Bark.git
synced 2025-12-08 21:36:01 +00:00
43 lines
1.6 KiB
Swift
43 lines
1.6 KiB
Swift
//
|
||
// MarkdownProcessor.swift
|
||
// NotificationServiceExtension
|
||
//
|
||
// Created by huangfeng on 11/21/25.
|
||
// Copyright © 2025 Fin. All rights reserved.
|
||
//
|
||
|
||
import UIKit
|
||
|
||
class MarkdownProcessor: NotificationContentProcessor {
|
||
func process(identifier: String, content bestAttemptContent: UNMutableNotificationContent) async throws -> UNMutableNotificationContent {
|
||
let userInfo = bestAttemptContent.userInfo
|
||
guard let markdown = userInfo["markdown"] as? String, !markdown.isEmpty else {
|
||
return bestAttemptContent
|
||
}
|
||
let config = MarkdownParser.Configuration(
|
||
baseFont: UIFont.preferredFont(forTextStyle: .body),
|
||
baseColor: UIColor.white,
|
||
linkColor: UIColor.systemBlue,
|
||
codeTextColor: UIColor.black,
|
||
codeBackgroundColor: UIColor.gray,
|
||
codeBlockTextColor: UIColor.black,
|
||
quoteColor: UIColor.systemGray
|
||
)
|
||
let body = MarkdownParser(configuration: config)
|
||
.parse(markdown)
|
||
.string
|
||
// 将 body 中的多个\n替换为单个\n,避免空行太多内容显示不完整。
|
||
.replacingOccurrences(of: "\n\n+", with: "\n", options: .regularExpression)
|
||
bestAttemptContent.body = body
|
||
|
||
/// 更新 APS 字段, 供之后的 Porgressor 使用
|
||
var aps = userInfo["aps"] as? [String: Any] ?? [:]
|
||
var alert = aps["alert"] as? [String: Any] ?? [:]
|
||
alert["body"] = body
|
||
aps["alert"] = alert
|
||
bestAttemptContent.userInfo["aps"] = aps
|
||
|
||
return bestAttemptContent
|
||
}
|
||
}
|