// // Notification.swift // MusicPlayer // // Created by Mr.Zhou on 2024/4/1. // import Foundation ///通知关键词协议 protocol NotificationKey { associatedtype Keys: RawRepresentable } ///将RawValue转化为字符串 extension NotificationKey where Keys.RawValue == String { ///发通知 static func post(notificationName key:Keys, object:Any? = nil) { let rawValue = key.rawValue NotificationCenter.default.post(name: NSNotification.Name(rawValue), object: object) } ///监听通知 static func add(observer: AnyObject, selector: Selector, notificationName key: Keys, object:Any? = nil) { let rawValue = key.rawValue NotificationCenter.default.addObserver(observer, selector: selector, name: NSNotification.Name(rawValue), object: object) } ///移除通知 static func remove(observer: AnyObject, notificationName key: Keys, object:Any? = nil) { let rawValue = key.rawValue NotificationCenter.default.removeObserver(observer, name: NSNotification.Name(rawValue), object: object) } } //MARK: - 扩写通知 extension NotificationCenter{ struct notificationKey:NotificationKey { ///关键词 enum Keys:String { ///通知用户更新 case update_reminder ///切换taBarItem case switch_tabBarItem //MARK: - A面通知内容 ///A面倒计时过程(携带时间值) case sideA_time_times ///A面音量值改变 case sideA_volume_change ///A面启动音乐播放器 case sideA_play_music ///A面终止音乐播放器与倒计时 case sideA_stop_music ///A面暂停音乐播放器 case sideA_pause_music ///A面继续音乐播放器 case sideA_resume_music ///A面开启麦克风监听 case sideA_open_monitor ///A面关闭麦克风监听 case sideA_stop_monitor ///A面新增音乐选择页 case sideA_new_choice ///A面音乐创建成功 case sideA_creat_music ///A面音乐实体为空 case sideA_null_music ///A面收起音乐展示框 case sideA_close_show ///A面显示音乐展示框 case sideA_display_show ///A面隐藏音乐展示框 case sideA_hidden_show ///A面音乐实体重命名 case sideA_rename_music //MARK: - b面通知内容 ///JS代码注入完成 case js_edit_completion ///预览数据已更新 case positive_browses_reload ///预览数据加载完毕 case positive_browses_completion ///播放器状态变化 case switch_player_status ///弹出底部音乐模块 case pup_bottom_show ///弹出音乐播放器 case pup_player_vc ///播放器页面更新 case positive_player_reload ///播放器预加载成功 case positive_asset_successfully ///用户手动调整了进度 case positive_player_seek ///用户切换播放器播放方式 case player_type_switch ///用户清空了歌单 case player_delete_list ///网络状态切换-网络不可用 case net_switch_notReachable ///网络状态切换-网络可用 case net_switch_reachable ///b面pushj时 case positive_nav_push ///b面Pop时 case positive_nav_pop ///b面网络请求报错 case netWork_error_deal ///b面媒体资源得到服务器响应 case asset_response ///b面媒体资源从服务器接收到数据 case asset_receiveData ///b面媒体资源缓存结果 case asset_isCached ///b面媒体资源是否报错 case asset_errorCode ///b面播放器403事件 case player_asset_403 ///创建自定义歌单 case create_custom_playlist ///b面歌曲下载中 case download_progress_source ///b面歌曲下载结束 case dowload_end_source ///b面搜索页模块更新 case search_gride_reload ///曲库原生广告加载成功 case library_native_success ///询问播放器是否继续播放音乐 case player_is_continua } } }