Tag: mpnowplayinginfocenter

谷歌Chromecast iOS SDK是否支持锁屏控件?

我已经尝试使用适用于iOS(2.1.0)的最新GoogleCast框架为谷歌Chromecastvideostream应用程序实现locking屏幕控件。 我已更正示例Chromecast应用 – https://github.com/googlecast/CVideosVideos-ios已将UIBackgroundModes行添加到Info.plist 增加了MediaPlayer框架。 并将以下代码添加到ChromecastDeviceController.m #import <MediaPlayer/MPNowPlayingInfoCenter.h> #import <MediaPlayer/MPMediaItem.h> ……. – (BOOL)loadMedia:(NSURL *)url thumbnailURL:(NSURL *)thumbnailURL title:(NSString *)title subtitle:(NSString *)subtitle mimeType:(NSString *)mimeType startTime:(NSTimeInterval)startTime autoPlay:(BOOL)autoPlay { ….. [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; Class playingInfoCenter = NSClassFromString(@"MPNowPlayingInfoCenter"); if (playingInfoCenter) { NSDictionary *songInfo = [NSDictionary dictionaryWithObjectsAndKeys: @"Test artist", MPMediaItemPropertyArtist, @"Test title", MPMediaItemPropertyTitle, @"Test Album", MPMediaItemPropertyAlbumTitle, nil]; [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songInfo]; } […]

MPNowPlayingInfoCenter是否与AVAudioPlayer兼容?

我开始玩AVAudioPlayer ,然后像这样设置nowPlaying字典: NSMutableDictionary *songInfo = [[NSMutableDictionary alloc] init]; MPMediaItemArtwork *albumArt = [[MPMediaItemArtwork alloc] initWithImage: [UIImage imagedNamed:@"AlbumArt"]]; [songInfo setObject:@"Audio Title" forKey:MPMediaItemPropertyTitle]; [songInfo setObject:@"Audio Author" forKey:MPMediaItemPropertyArtist]; [songInfo setObject:@"Audio Album" forKey:MPMediaItemPropertyAlbumTitle]; [songInfo setObject:albumArt forKey:MPMediaItemPropertyArtwork]; [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songInfo]; locking屏幕始终显示一个暂停button。 我正确接收遥控器事件,并且可以通过遥控器事件切换播放/暂停,但即使在播放时,locking屏幕仍然显示“暂停”。 现在我看到了这个与MPMoviePlayerController的工作。 有人可以解释一下MPNowPlayingInfoCenter如何确定它是否应该显示播放或暂停button?

如何告诉MPNowPlayingInfoCenter是否正在播放或暂停音乐?

我似乎无法让iOS在远程audio控件中显示正确的播放/暂停button。 我收到远程控制事件并设置nowPlayingInfo字典的所有值。 一切工作正常,我甚至看到锁屏上的封面照片。 除了暂停/播放button。 即使我的AVAudioPlayer正在播放,它总是看起来像暂停。 无论播放状态如何,它都会发送一个暂停事件。 如何通知iOS AVAudioPlayer已暂停,现在应该在遥控器button栏中显示播放button?

播放/暂停下一个/上一个button在控制中心呈灰色

在我的应用程序中,播放由控制中心控制。 在AVPlayer中播放时(此时播放控件在控制中心工作正常),我正在使用其他stream式URL加载webview。 一旦stream再次完成,我开始从AVPlayer播放。 之后,播放控制在控制中心变灰。 我正在使用[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo在控制中心启用播放控制。 会有什么问题?

在iOS命令中心中播放/暂停和已用时间没有正确更新

我有一个video播放器,可以从iOS的指挥中心和locking屏幕播放。 当我在我的应用中切换播放/暂停button时,它应该通过更新nowPlayingInfo ( MPNowPlayingInfoCenter )来更新命令中心( MPRemoteCommandCenter )中的播放/暂停button。 我不知道为什么它没有更新。 例如,如果我在应用程序中使用自定义button暂停video,则命令中心仍显示暂停button(表示video仍在播放,这是错误的)。 这是我如何更新nowPlayingInfo : func updateMPNowPlayingInforCenterMetadata() { guard video != nil else { nowPlayingInfoCenter.nowPlayingInfo = nil return } var nowPlayingInfo = nowPlayingInfoCenter.nowPlayingInfo ?? [String: Any]() let image: UIImage if let placeholderLocalURL = video.placeholderLocalURL, let placeholderImage = UIImage(contentsOfFile: placeholderLocalURL.path) { image = placeholderImage } else { image = UIImage() […]

迅速。 接收远程控制事件以与MPNowPLayingInfoCenter一起工作

据我所知,为了在锁屏上显示音乐播放器,只写下面的代码是不够的。 override func viewDidAppear(animated: Bool) { var mpic = MPNowPlayingInfoCenter.defaultCenter() mpic.nowPlayingInfo = [ MPMediaItemPropertyTitle:"This Is a Test", MPMediaItemPropertyArtist:"Matt Neuburg" ] } 我的应用程序也应该能够接收远程控制事件 那么,如何在Swift中做到这一点? 我从Apple文档中find了这个,但是它是针对Objective-C的。 – (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; // Turn on remote control event delivery [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; // Set itself as the first responder [self becomeFirstResponder]; } – (void)viewWillDisappear:(BOOL)animated { // Turn off […]

iOS – 更新多任务栏中的媒体播放/暂停状态

我们有一个工作的应用程序,使用AUgraphics – CoreAudio API – 播放audio。 graphics总是在运行,并且各种源材料的播放/暂停状态在graphics渲染callback函数中进行pipe理。 我们成功响应了UIEventTypeRemoteControl事件,并且使用MPNowPlayingInfoCenter成功地更新了当前播放内容的元数据的locking屏幕。 一个缺失的部分是更新iOS多任务栏中的播放/暂停button的状态。 它始终处于“暂停”(||)模式,即使应用程序audio已经暂停。 它从不切换到“播放”(>)状态。 哪个API用于更新播放/暂停button状态?

越狱iOS设备的应用程序:一致的后台操作

我是一个叫做AirFloat的Cydia调整的作者。 实现AirPlayaudio协议(以前称为AirTunes)的应用程序,可以将audiostream式传输到您的iOS设备。 AirFloat最初是一个App Store应用程序,直到它从苹果App Store启动。 我从那以后就在Cydia免费提供了。 目前该应用程序在Cydia中的位置与之前的App Store版本完全相同。 作为这个的结果,我得到了很多请求,使其在后台工作。 但是我无法让它工作。 基本上我正在考虑两种方法。 注意:AirFloat在iOSlocking屏幕上显示当前正在播放的曲目。 创build一个运行实际AirPlay实现的守护进程,并使用notify与UI应用进行通信。 这工作。 有点。 它运行并播放audio,但MPNowPlayingInfoCenter似乎不能从非UI应用程序更新。 另外当守护程序以用户移动的方式运行时。 第二种方法是在UI应用程序中使用它们。 但是我有困难没有被暂停。 我已将“所需的背景模式”设置为audio和连续模式。 服务器可能仍然在运行,但Bonjour广告被closures,因为运行循环在后台停止。 其次,应用程序应该与SpringBoard自动启动,并重新启动exception退出。 我个人更喜欢第二种方法,因为我会避免进行进程间通信。 而这种方法的工作,我需要完整的后台执行(包括运行循环),并启动SpringBoard启动和重新启动exception退出。 任何人有任何build议如何解决这个问题?

iOS:在后台更新媒体信息

目前我正在使用MPNowPlayingInfoCenter为我的应用程序显示哪首歌正在播放,但是我正在考虑将HTTP Live Streaming合并到我的应用程序中,后者将在后台出现任意数量的不同音轨。 有没有办法在应用程序在后台时设置nowPlayingInfo(在一段时间之后调用函数?),即使应用程序在技术上实际上并不在后台运行? 还是有一种方法来设置正在播放的信息,使用我的服务器上的简单调用,将返回正确的信息 – 使用返回string或图像的API调用? 我知道这是可能的,因为松扎已经做到了,但也许他们已经获得了使用苹果某些私人方法的许可(如果那是你所能做的事)。

AVAudioPlayer在locking屏幕上

我已经使用AVAudioPlayer (而不是AVPlayer )实现了一个audio播放器。 我可以用下面的方法处理远程控制事件。 到目前为止,它工作得很好,但是我看到这些事件UIEventSubtypeRemoteControlEndSeekingForward两个subtypes : UIEventSubtypeRemoteControlEndSeekingForward和UIEventSubtypeRemoteControlEndSeekingBackward 。 – (void)remoteControlReceivedWithEvent:(UIEvent *)event { //if it is a remote control event handle it correctly if (event.type == UIEventTypeRemoteControl) { if (event.subtype == UIEventSubtypeRemoteControlPlay) { [self playAudio]; } else if (event.subtype == UIEventSubtypeRemoteControlPause) { [self pauseAudio]; } else if (event.subtype == UIEventSubtypeRemoteControlTogglePlayPause) { [self togglePlayPause]; } else if […]