0

我正在尝试实现一个包含音乐播放器控件的示例 iOS 8 Today 小部件,该应用程序是一个启用了背景音频的基本音乐应用程序。

我环顾四周寻找一种通知包含应用程序的方法,但我没有找到任何!

场景基本上是,应用程序处于暂停状态并且在选定的歌曲/专辑上(它可能在某首歌曲上暂停),然后我需要在小部件上显示名称,带有播放/停止/下一步按钮等。

基于Apple的文档,以及描述使用场景的文档: https ://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensibilityPG.pdf

它提到扩展不应该处理任何长时间的执行,并特别指出音频播放是不受支持的情况,因为它需要在扩展之外运行。但它没有提到在这种情况下触发包含应用程序的方法,它只是提到了可以处理大文件下载和在后台唤醒应用程序以调用 handleEventsForBackgroundUrlSession 的 NSURLSession 技术,以及包含应用程序和扩展程序的应用程序组共享功能访问共享数据容器。唯一可行的解​​决方案是 openURL 解决方案,它将强制将整个应用程序置于前台。

我确实为我的演示设置了一个 App-Group,并尝试使用自定义通知调用 NSNotificationCenter,分别在包含应用程序和扩展程序上调用 addObserver/postNotificationName,但它根本不起作用。我什至尝试更改 App-Group 的 NSUserDefaults ,但这在包含应用程序的背景时也不会触发。

以下是一些可能相关的问题,但我没有找到答案:(在应用程序扩展和容器应用程序之间共享数据)---(当应用程序从后台恢复时未发送 NSUserDefaultsDidChangeNotification)---(设置通知来自今日扩展小部件

我认为这可能不可行,但我刚刚发现了一个名为 TapTunes 的应用程序,它最近添加了一个具有类似功能的小部件,包括扩展本身中的所有控件。

谢谢。

4

1 回答 1

0

问题是,你想播放一些自定义音频,还是只播放 iOS 音乐播放器中的曲目?

在我看来,TapTunes 使用的是标准音乐播放器。我认为这可以通过使用 MPMusicPlayerController ( https://developer.apple.com/library/ios/documentation/MediaPlayer/Reference/MPMusicPlayerController_ClassReference/ )来完成

如果你想播放自定义音频,通常你会启用一个特殊的音频背景模式(见这里:http ://www.raywenderlich.com/29948/backgrounding-for-ios ),并有一个不断调用的回调来馈送在新的音频数据中,例如来自互联网。也许您可以只观察回调中的 NSUserDefault 键,它会告诉您当前的操作(“下一首曲目”、“上一首曲目”等)。我想这些可能会导致一些延迟,直到实际执行该操作。

无论如何,如果小部件被 App Store 拒绝,请不要感到惊讶,因为他们最近似乎对不遵循通常的“给我一些快速信息”概念的小部件非常小心。TapTunes 获得批准并不意味着您的应用程序也将获得批准。

于 2014-11-09T11:25:43.837 回答