Skip to content

Commit bb7a973

Browse files
sumengsumeng
authored andcommitted
fix bug
1 parent b82e49f commit bb7a973

1 file changed

Lines changed: 43 additions & 18 deletions

File tree

Coding_iOS/Views/AudioView/AudioPlayView.m

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,14 @@ - (void)setUrl:(NSURL *)url {
5252
- (void)setUrl:(NSURL *)url validator:(id)validator {
5353
_url = url;
5454
_validator = validator;
55-
if ([AudioManager shared].isPlaying && [[AudioManager shared].validator isEqual:validator]) {
55+
if ([[AudioManager shared].validator isEqual:validator] && [AudioManager shared].isPlaying) {
56+
[AudioManager shared].delegate = self;
5657
self.playState = AudioPlayViewStatePlaying;
5758
}
59+
else if ([[AudioManager shared].validator isEqual:validator] && [self isDownloading:url]) {
60+
[AudioManager shared].delegate = self;
61+
self.playState = AudioPlayViewStateDownloading;
62+
}
5863
else {
5964
self.playState = AudioPlayViewStateNormal;
6065
}
@@ -66,6 +71,16 @@ - (void)play {
6671
if (_url == nil) {
6772
return;
6873
}
74+
75+
if ([[AudioManager shared].delegate isKindOfClass:[AudioPlayView class]]
76+
&& [AudioManager shared].delegate != self) {
77+
AudioPlayView *view = (AudioPlayView *)[AudioManager shared].delegate;
78+
if (view.playState == AudioPlayViewStateDownloading) {
79+
view.playState = AudioPlayViewStateNormal;
80+
}
81+
}
82+
[AudioManager shared].delegate = self;
83+
6984
if ([_url isFileURL]) {
7085
[self play:_url.path];
7186
}
@@ -99,7 +114,6 @@ - (void)play:(NSString *)file {
99114
}
100115

101116
self.playState = AudioPlayViewStatePlaying;
102-
[AudioManager shared].delegate = self;
103117
[[AudioManager shared] play:f validator:self.validator];
104118

105119
if (_playStartedBlock) {
@@ -127,32 +141,43 @@ - (void)startDownload:(NSURL *)url {
127141
if (url == nil) {
128142
return;
129143
}
130-
NSURLRequest *request = [NSURLRequest requestWithURL:url];
131-
NSProgress *progress;
132-
NSURLSessionDownloadTask *downloadTask = [[Coding_FileManager af_manager] downloadTaskWithRequest:request progress:&progress destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
133-
return [NSURL fileURLWithPath:[[self class] downloadFile:response.URL.absoluteString]];
134-
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
135-
if (error) {
136-
[self didDownloadError:error];
137-
self.playState = AudioPlayViewStateNormal;
138-
}
139-
else {
140-
if ([self.validator isEqual:[AudioManager shared].validator]) {
141-
[self play:filePath.path];
144+
if (![self isDownloading:url]) {
145+
NSURLRequest *request = [NSURLRequest requestWithURL:url];
146+
NSProgress *progress;
147+
NSURLSessionDownloadTask *downloadTask = [[Coding_FileManager af_manager] downloadTaskWithRequest:request progress:&progress destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
148+
return [NSURL fileURLWithPath:[[self class] downloadFile:response.URL.absoluteString]];
149+
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
150+
if (error) {
151+
[self didDownloadError:error];
152+
self.playState = AudioPlayViewStateNormal;
142153
}
143154
else {
144-
self.playState = AudioPlayViewStateNormal;
155+
if ([self.validator isEqual:[AudioManager shared].validator]) {
156+
[self play:filePath.path];
157+
}
158+
else {
159+
self.playState = AudioPlayViewStateNormal;
160+
}
145161
}
146-
}
147-
}];
148-
[downloadTask resume];
162+
}];
163+
[downloadTask resume];
164+
}
149165
self.playState = AudioPlayViewStateDownloading;
150166
}
151167

152168
- (void)didDownloadError:(NSError *)error {
153169

154170
}
155171

172+
- (BOOL)isDownloading:(NSURL *)url {
173+
for (NSURLSessionDownloadTask *downloadTask in [Coding_FileManager af_manager].downloadTasks) {
174+
if ([downloadTask.originalRequest.URL isEqual:url]) {
175+
return YES;
176+
}
177+
}
178+
return NO;
179+
}
180+
156181
#pragma mark - FileManager
157182

158183
+ (NSString *)downloadDir {

0 commit comments

Comments
 (0)