import UIKit
import UserNotifications
typealias NotificationManagerAddResultCallBack = ((Error?) -> Void)?
typealias NotificationManagerGetResultCallBack = (([UNNotificationRequest]?) -> Void)?
//MARK: 增
extension GHFNotificationManager {
/// 添加/更新 本地通知核心方法 - 业务侧封装
/// - Parameters:
/// - identifier: 业务ID
/// - title: 本地推送标题
/// - userInfo: 业务数据 - 同点击push的userInfo
/// - timeInterval: 时间间隔触发此本地push
/// - completionHandler: 回调结果 - 是否添加/更新成功
class func addLocationNoti(identifier: String?, title: String?, userInfo: [String: Any]?, timeInterval: TimeInterval, completionHandler: NotificationManagerAddResultCallBack) {
addLocationNoti(identifier: identifier, title: title, subTitle: nil, userInfo: userInfo, timeInterval: timeInterval, completionHandler: completionHandler)
}
/// 添加/更新 本地通知核心方法 - 业务侧封装
/// - Parameters:
/// - identifier: 业务ID
/// - title: 本地推送标题
/// - subTitle: 本地推送子标题
/// - userInfo: 业务数据 - 同点击push的userInfo - url:allfuture:///xxx?xx=xx&xx=xx
/// - timeInterval: 时间间隔触发此本地push
/// - completionHandler: 回调结果 - 是否添加/更新成功
class func addLocationNoti(identifier: String?, title: String?, subTitle: String?, userInfo: [String: Any]?, timeInterval: TimeInterval, completionHandler: NotificationManagerAddResultCallBack) {
let content = UNMutableNotificationContent.init()
content.title = title ?? ""
content.subtitle = subTitle ?? ""
content.sound = UNNotificationSound(named: UNNotificationSoundName(rawValue: "noticeMusic.mp3"))
content.userInfo = userInfo ?? Dictionary()
#if DEBUG
GHFToast.toast("\(timeInterval)s后提醒")
#endif
let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: timeInterval, repeats: false)
addLocationNoti(identifier: identifier, content: content, trigger: trigger, completionHandler: completionHandler)
}
/// 添加/更新 本地通知核心方法 - 工具侧封装
/// - Parameters:
/// - identifier: 业务ID
/// - content: UNMutableNotificationContent实例
/// - trigger: UNNotificationTrigger 子类的实例
/// - completionHandler: 回调结果 - 是否添加/更新成功
class func addLocationNoti(identifier: String?, content: UNMutableNotificationContent, trigger: UNNotificationTrigger, completionHandler: NotificationManagerAddResultCallBack) {
if let identifier = identifier {
let request = UNNotificationRequest.init(identifier: identifier, content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) { (error) in
print("\n----------------------------添加提醒回调START----------------------------\n error:\(String(describing: error))\n identifier:\(identifier)\n title:\(content.title)\n userInfo:\(content.userInfo)\n timeInterval:\((trigger as! UNTimeIntervalNotificationTrigger).timeInterval)\n ----------------------------添加提醒回调END----------------------------\n")
completionHandler?(error)
}
}
}
}
//MARK: 删
extension GHFNotificationManager {
/// 移除指定ID列表的未触发的本地通知
/// - Parameter noticIds: 本地通知id list
class func removeLocalNoti(noticIds: [String]?) {
if let noticIds = noticIds {
UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: noticIds)
}
}
/// 移除所有未触发的本地通知
class func removeAllLocalNotification() {
UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
}
}
//MARK: 查
extension GHFNotificationManager {
/// 获取全量未触发的本地通知
/// - Parameter completionHandler: 本地通知列表
class func getAllLocationNotification(completionHandler: NotificationManagerGetResultCallBack) {
UNUserNotificationCenter.current().getPendingNotificationRequests { (requests) in
completionHandler?(requests)
}
}
}
本地推送工具类封装
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Nacos Config的SpringBoot api使用起来不太灵活, 我们更希望要的是一个抽象的缓存工具,Na...
- 首先在 pubspec.yaml 文件中添加 shared_preferences 引用并 Packages ge...
- 来源:ryanc.cc/archives/hutool-java-tools-lib 作者:Ryan Wang 简...