Skip to content
This repository was archived by the owner on Oct 6, 2022. It is now read-only.

Commit c7e2d7a

Browse files
kesha-antonovtanguyantoine
authored andcommitted
fix: set artwork when playing from webview (#209)
1 parent 0f4cc11 commit c7e2d7a

File tree

1 file changed

+53
-44
lines changed

1 file changed

+53
-44
lines changed

ios/MusicControlManager.m

+53-44
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,7 @@ - (dispatch_queue_t)methodQueue
8080
center.nowPlayingInfo = [self update:mediaDict with:details andSetDefaults:false];
8181

8282
NSString *artworkUrl = [self getArtworkUrl:[originalDetails objectForKey:@"artwork"]];
83-
if (![artworkUrl isEqualToString:self.artworkUrl] && artworkUrl != nil) {
84-
self.artworkUrl = artworkUrl;
85-
[self updateArtworkIfNeeded:artworkUrl];
86-
}
83+
[self updateArtworkIfNeeded:artworkUrl];
8784
}
8885

8986

@@ -285,54 +282,66 @@ - (void)sendEventWithValue:(NSString*)event withValue:(NSString*)value{
285282

286283
- (void)updateArtworkIfNeeded:(id)artworkUrl
287284
{
288-
if (artworkUrl != nil) {
289-
self.artworkUrl = artworkUrl;
290-
291-
// Custom handling of artwork in another thread, will be loaded async
292-
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
293-
UIImage *image = nil;
294-
295-
// check whether artwork path is present
296-
if (![artworkUrl isEqual: @""]) {
297-
// artwork is url download from the interwebs
298-
if ([artworkUrl hasPrefix: @"http://"] || [artworkUrl hasPrefix: @"https://"]) {
299-
NSURL *imageURL = [NSURL URLWithString:artworkUrl];
300-
NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
301-
image = [UIImage imageWithData:imageData];
302-
} else {
303-
NSString *localArtworkUrl = [artworkUrl stringByReplacingOccurrencesOfString:@"file://" withString:@""];
304-
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:localArtworkUrl];
305-
if (fileExists) {
306-
image = [UIImage imageNamed:localArtworkUrl];
307-
}
308-
}
309-
}
285+
if( artworkUrl == nil ) {
286+
return;
287+
}
310288

311-
// Check if image was available otherwise don't do anything
312-
if (image == nil) {
313-
return;
289+
MPNowPlayingInfoCenter *center = [MPNowPlayingInfoCenter defaultCenter];
290+
if ([artworkUrl isEqualToString:self.artworkUrl] && [center.nowPlayingInfo objectForKey:MPMediaItemPropertyArtwork] != nil) {
291+
return;
292+
}
293+
294+
self.artworkUrl = artworkUrl;
295+
296+
// Custom handling of artwork in another thread, will be loaded async
297+
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
298+
UIImage *image = nil;
299+
300+
// check whether artwork path is present
301+
if ([artworkUrl isEqual: @""]) {
302+
return;
303+
}
304+
305+
// artwork is url download from the interwebs
306+
if ([artworkUrl hasPrefix: @"http://"] || [artworkUrl hasPrefix: @"https://"]) {
307+
NSURL *imageURL = [NSURL URLWithString:artworkUrl];
308+
NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
309+
image = [UIImage imageWithData:imageData];
310+
} else {
311+
NSString *localArtworkUrl = [artworkUrl stringByReplacingOccurrencesOfString:@"file://" withString:@""];
312+
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:localArtworkUrl];
313+
if (fileExists) {
314+
image = [UIImage imageNamed:localArtworkUrl];
314315
}
316+
}
317+
318+
// Check if image was available otherwise don't do anything
319+
if (image == nil) {
320+
return;
321+
}
315322

316-
// check whether image is loaded
317-
CGImageRef cgref = [image CGImage];
318-
CIImage *cim = [image CIImage];
323+
// check whether image is loaded
324+
CGImageRef cgref = [image CGImage];
325+
CIImage *cim = [image CIImage];
319326

320-
if (cim != nil || cgref != NULL) {
327+
if (cim == nil && cgref == NULL) {
328+
return;
329+
}
321330

322-
dispatch_async(dispatch_get_main_queue(), ^{
331+
dispatch_async(dispatch_get_main_queue(), ^{
323332

324-
// Check if URL wasn't changed in the meantime
325-
if ([artworkUrl isEqual:self.artworkUrl]) {
326-
MPNowPlayingInfoCenter *center = [MPNowPlayingInfoCenter defaultCenter];
327-
MPMediaItemArtwork *artwork = [[MPMediaItemArtwork alloc] initWithImage: image];
328-
NSMutableDictionary *mediaDict = (center.nowPlayingInfo != nil) ? [[NSMutableDictionary alloc] initWithDictionary: center.nowPlayingInfo] : [NSMutableDictionary dictionary];
329-
[mediaDict setValue:artwork forKey:MPMediaItemPropertyArtwork];
330-
center.nowPlayingInfo = mediaDict;
331-
}
332-
});
333+
// Check if URL wasn't changed in the meantime
334+
if (![artworkUrl isEqual:self.artworkUrl]) {
335+
return;
333336
}
337+
338+
MPNowPlayingInfoCenter *center = [MPNowPlayingInfoCenter defaultCenter];
339+
MPMediaItemArtwork *artwork = [[MPMediaItemArtwork alloc] initWithImage: image];
340+
NSMutableDictionary *mediaDict = (center.nowPlayingInfo != nil) ? [[NSMutableDictionary alloc] initWithDictionary: center.nowPlayingInfo] : [NSMutableDictionary dictionary];
341+
[mediaDict setValue:artwork forKey:MPMediaItemPropertyArtwork];
342+
center.nowPlayingInfo = mediaDict;
334343
});
335-
}
344+
});
336345
}
337346

338347
- (void)audioHardwareRouteChanged:(NSNotification *)notification {

0 commit comments

Comments
 (0)