解决了语音上传到问题,接下来要解决下载播放问题

This commit is contained in:
joywayer
2025-06-15 12:36:47 +08:00
parent bba3ed1cb4
commit c11fc62bf1
513 changed files with 31197 additions and 2969 deletions

View File

@@ -0,0 +1,97 @@
//
// QNUploadServerFreezeManager.m
// QiniuSDK
//
// Created by yangsen on 2020/6/2.
// Copyright © 2020 Qiniu. All rights reserved.
//
#import "QNConfiguration.h"
#import "QNUploadServerFreezeManager.h"
@interface QNUploadServerFreezeItem : NSObject
@property(nonatomic, copy)NSString *type;
@property(nonatomic, strong)NSDate *freezeDate;
@end
@implementation QNUploadServerFreezeItem
+ (instancetype)item:(NSString *)type{
QNUploadServerFreezeItem *item = [[QNUploadServerFreezeItem alloc] init];
item.type = type;
return item;
}
- (BOOL)isFrozenByDate:(NSDate *)date{
BOOL isFrozen = YES;
@synchronized (self) {
if (!self.freezeDate || [self.freezeDate timeIntervalSinceDate:date] < 0){
isFrozen = NO;
}
}
return isFrozen;
}
- (void)freeze:(NSInteger)frozenTime{
@synchronized (self) {
self.freezeDate = [NSDate dateWithTimeIntervalSinceNow:frozenTime];
}
}
@end
@interface QNUploadServerFreezeManager()
@property(nonatomic, strong)NSMutableDictionary *freezeInfo;
@end
@implementation QNUploadServerFreezeManager
- (instancetype)init{
if (self = [super init]) {
_freezeInfo = [NSMutableDictionary dictionary];
}
return self;
}
- (BOOL)isTypeFrozen:(NSString * _Nullable)type {
if (!type || type.length == 0) {
return true;
}
BOOL isFrozen = true;
QNUploadServerFreezeItem *item = nil;
@synchronized (self) {
item = self.freezeInfo[type];
}
if (!item || ![item isFrozenByDate:[NSDate date]]) {
isFrozen = false;
}
return isFrozen;
}
- (void)freezeType:(NSString * _Nullable)type frozenTime:(NSInteger)frozenTime {
if (!type || type.length == 0) {
return;
}
QNUploadServerFreezeItem *item = nil;
@synchronized (self) {
item = self.freezeInfo[type];
if (!item) {
item = [QNUploadServerFreezeItem item:type];
self.freezeInfo[type] = item;
}
}
[item freeze:frozenTime];
}
- (void)unfreezeType:(NSString * _Nullable)type {
if (!type || type.length == 0) {
return;
}
@synchronized (self) {
[self.freezeInfo removeObjectForKey:type];
}
}
@end