// // MedalMediaDisplayManager.h // YuMi // // Created by AI on 2025/1/20. // #import #import @class VAPView, NetImageView, XPRoomGiftAnimationParser; NS_ASSUME_NONNULL_BEGIN /** * 媒体显示代理协议 * 需要使用媒体显示功能的类实现此协议 */ @protocol MedalMediaDisplayDelegate @required /// 从数据模型中获取MP4 URL - (NSString * _Nullable)getMP4UrlFromModel:(id _Nullable)model; /// 从数据模型中获取图片 URL - (NSString * _Nullable)getPicUrlFromModel:(id _Nullable)model; /// 获取图片显示视图 - (NetImageView *)getImageView; /// 获取MP4播放视图 - (VAPView *)getMP4View; @optional /// 媒体显示状态更新回调 - (void)onMediaDisplayUpdated:(BOOL)isMP4 success:(BOOL)success; /// 获取默认占位图 - (UIImage * _Nullable)getDefaultPlaceholderImage; @end /** * 勋章媒体显示管理器 * 统一处理MP4和PNG的显示逻辑 */ @interface MedalMediaDisplayManager : NSObject /// 代理对象 @property (nonatomic, weak) id delegate; /// 当前显示的数据模型 @property (nonatomic, strong, nullable) id currentModel; /// 可见性状态 @property (nonatomic, assign) BOOL isVisible; /// 当前媒体路径 @property (nonatomic, copy, readonly, nullable) NSString *currentImagePath; @property (nonatomic, copy, readonly, nullable) NSString *currentMP4Path; /** * 初始化方法 * @param delegate 实现MedalMediaDisplayDelegate协议的对象 */ - (instancetype)initWithDelegate:(id)delegate; /** * 更新显示内容 * @param model 数据模型 */ - (void)updateDisplayWithModel:(id _Nullable)model; /** * 可见性管理 */ - (void)willDisplay; - (void)didEndDisplaying; /** * 播放控制 */ - (void)stopMP4Playback; - (void)pauseMP4Playback; - (void)resumeMP4Playback; /** * 资源清理 */ - (void)cleanupResources; /** * 应用生命周期通知处理 */ - (void)handleAppDidEnterBackground; - (void)handleAppWillEnterForeground; - (void)handleMemoryWarning; @end NS_ASSUME_NONNULL_END