2017-05-17 4 views
1

사용자가 음악을 재생하는 경우 앱을 체크인하고 싶습니다. 기본적으로 컨트롤 센터의 버튼에 재생 대신 일시 중지가 표시되는지 알고 싶습니다 (전화가 음악을 재생하고 있기 때문에). 나는 here에서 솔루션을 사용하고 싶지 않습니다. 예를 들어 호출 할 때도 마찬가지입니다.iOS에서 음악을 재생하고 있는지 확인하십시오 ("제어 센터에서 버튼이 일시 중지 되었습니까?")

답변

0

두 가지 방법이 있지만 스프링 보드는 모두 이어야합니다. 앱과 도구가 샌드 박스에 있기 때문에 이러한 솔루션은 스프링 보드에 연결되는 Tweak에서만 사용할 수 있습니다!

첫째

@interface SBMediaController : NSObject 
+ (id)sharedInstance; 
- (BOOL)isPlaying; 
@end 

bool isMusicPlaying = [[%c(SBMediaController) sharedInstance] isPlaying]; // this is always false if not hooked into Springboard! 

세컨드 (이 용액은 비동기)

#import <MediaRemote/MediaRemote.h> // also add MediaRemote to your XXX_PRIVATE_FRAMEWORKS 

MRMediaRemoteGetNowPlayingInfo(dispatch_get_main_queue(), ^(CFDictionaryRef information) { 
    NSDictionary *dict=(__bridge NSDictionary *)(information); 
    if(dict != NULL && [dict objectForKey:(__bridge NSString *)kMRMediaRemoteNowPlayingInfoPlaybackRate] != NULL){ 
    float rate = [[dict objectForKey:(__bridge NSString *)kMRMediaRemoteNowPlayingInfoPlaybackRate] floatValue]; 
    NSLog(@"playbackRate %f", rate); 
    bool isMusicPlaying = rate > 0.0; 
    } 
}); 
관련 문제