1
ユーザーが音楽を再生している場合、アプリをチェックインします。基本的には、コントロールセンターのボタンに再生の代わりに一時停止が表示されているかどうかを確認したいと思います(電話から音楽が再生されているため)。私はhereからの解決方法を使用したくないです。それは、例えばコールなどの場合にも当てはまります。iOSが音楽を再生しているかどうかを確認します(「コントロールセンターのボタンが一時停止していますか?」)
ユーザーが音楽を再生している場合、アプリをチェックインします。基本的には、コントロールセンターのボタンに再生の代わりに一時停止が表示されているかどうかを確認したいと思います(電話から音楽が再生されているため)。私はhereからの解決方法を使用したくないです。それは、例えばコールなどの場合にも当てはまります。iOSが音楽を再生しているかどうかを確認します(「コントロールセンターのボタンが一時停止していますか?」)
2つの方法が見つかりましたが、どちらもSpringboard用のが必要です。アプリとツールはサンドボックスに入っているので、これらのソリューションはSpringboardにフックする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;
}
});