JXPlaybackProgressStorage.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. //
  2. // JXPlaybackProgressStorage.h
  3. // AICity
  4. //
  5. // Feature: 003-ios-api-https
  6. // 播放进度本地存储管理器
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <CoreData/CoreData.h>
  10. #import "JXPlaybackProgressModel.h"
  11. NS_ASSUME_NONNULL_BEGIN
  12. /**
  13. * 播放进度本地存储管理器
  14. * 功能:
  15. * - 封装CoreData操作
  16. * - 提供简洁的API接口
  17. * - 单例模式
  18. */
  19. @interface JXPlaybackProgressStorage : NSObject
  20. /**
  21. * 获取单例实例
  22. */
  23. + (instancetype)sharedStorage;
  24. /**
  25. * 保存播放进度到本地
  26. */
  27. - (void)saveProgressWithEpisodeId:(NSString *)episodeId
  28. dramaId:(NSString *)dramaId
  29. position:(int64_t)position
  30. duration:(int64_t)duration
  31. isCompleted:(BOOL)isCompleted
  32. synced:(BOOL)synced
  33. completion:(nullable void(^)(BOOL success, NSError * _Nullable error))completion;
  34. /**
  35. * 获取播放进度
  36. */
  37. - (nullable JXPlaybackProgressModel *)getProgressWithEpisodeId:(NSString *)episodeId;
  38. /**
  39. * 获取指定剧的所有播放进度
  40. */
  41. - (NSArray<JXPlaybackProgressModel *> *)getProgressByDramaId:(NSString *)dramaId;
  42. /**
  43. * 获取所有未同步的播放进度
  44. */
  45. - (NSArray<JXPlaybackProgressModel *> *)getUnsyncedProgresses;
  46. /**
  47. * 标记进度为已同步
  48. */
  49. - (void)markAsSyncedWithEpisodeId:(NSString *)episodeId;
  50. /**
  51. * 删除播放进度
  52. */
  53. - (void)deleteProgressWithEpisodeId:(NSString *)episodeId;
  54. /**
  55. * 删除指定剧的所有播放进度
  56. */
  57. - (void)deleteProgressByDramaId:(NSString *)dramaId;
  58. /**
  59. * 清除所有播放进度
  60. */
  61. - (void)clearAll;
  62. /**
  63. * 清理7天前的旧记录
  64. */
  65. - (void)cleanupOldRecords;
  66. @end
  67. NS_ASSUME_NONNULL_END