Objective-C: 使 AVPlayer 在所有应用程序控制器中播放(或在后台播放)

Objective-C: Making AVPlayer plays in all the app controllers (or in the background)

我正在制作新闻 iOS 应用程序,我想在所有页面中实现实时音频流,如下图所示:

橙色视图是一个显示 "Live Streaming"(阿拉伯语)的 UIView,它存在于所有 viewController 中,我想让 AVPlayer 在用户点击它时播放并且仍然即使用户导航到其他 viewControllers.

也会播放

我似乎找不到关于此的好的解决方案或教程,抱歉,如果这是一个菜鸟问题,因为我是 iOS 的新手。

那我该怎么做呢?我应该在哪里(其中 viewController)放置 AVPlayer 声明?

提前致谢。

如果您在模拟器中测试,视图的变化不会在后台继续播放音频。如果它不工作你的设备试试这个:

NSURL *url = [NSURL URLWithString: yourURLHere];    
AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:url options:nil];    
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:avAsset];    
AVPlayer *audioPlayer = [AVPlayer playerWithPlayerItem:playerItem];    
//This enables background music playing
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];    

[audioPlayer play];

将此代码放在您的 viewDidLoad 方法中,在 [super viewDidLoad];

之前

我找到了两个链接,它们解释了这方面的一些问题:

  1. Play Music in Background
  2. Play Audio from Internet

如果这不起作用,我建议对这个问题悬赏,因为您的问题似乎比简单的解决方案更深入。

我找到了解决方案,我必须制作一个单例 class。

单例 class 只允许一个对象在整个 iOS 应用程序中被所有 ViewControllers 使用。

而且我确实将所有需要的方法(如播放和暂停)放在单例中 class 并且我从所有 ViewController 访问它们。

如果有人想要示例,请在评论中提问。