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];
之前
我找到了两个链接,它们解释了这方面的一些问题:
- Play Music in Background
- Play Audio from Internet
如果这不起作用,我建议对这个问题悬赏,因为您的问题似乎比简单的解决方案更深入。
我找到了解决方案,我必须制作一个单例 class。
单例 class 只允许一个对象在整个 iOS 应用程序中被所有 ViewControllers 使用。
而且我确实将所有需要的方法(如播放和暂停)放在单例中 class 并且我从所有 ViewController 访问它们。
如果有人想要示例,请在评论中提问。
我正在制作新闻 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];
我找到了两个链接,它们解释了这方面的一些问题:
- Play Music in Background
- Play Audio from Internet
如果这不起作用,我建议对这个问题悬赏,因为您的问题似乎比简单的解决方案更深入。
我找到了解决方案,我必须制作一个单例 class。
单例 class 只允许一个对象在整个 iOS 应用程序中被所有 ViewControllers 使用。
而且我确实将所有需要的方法(如播放和暂停)放在单例中 class 并且我从所有 ViewController 访问它们。
如果有人想要示例,请在评论中提问。