我正在编写一个基本的音乐播放器应用程序但在处理应用程序状态转换时遇到一些问题.
我正在使用Swift 3和MPMusicPlayerController.systemMusicPlayer()
目标是这样的:
1)当用户点击主页按钮并且应用程序进入bg(工作)时保持音乐播放
2)如果用户退出应用程序,则停止播放器(myMP.stop())(有时工作,其他时间抛出错误)
我根据可能的操作使用print语句跟踪了流程并得到了:
流程2是我所期望的,但是当应用程序关闭时,Flow 1会抛出一个错误 - 我希望"会终止".
编辑:主要问题是当使用流程1退出应用程序时,永远不会调用"将终止" - 因此永远不会调用"myMP.stop()"并且应用程序退出后播放器继续播放.
如果您在应用程序处于活动状态时单击Home一次(Flow 1)或double(Flow 2),则行为会有明显的不同.
为什么会采用哪两个不同的反应应该是相同的动作?
编辑:最重要的是,如果它永远不会"终止",如何停止MediaPlayer for Flow 1?
编辑:
以下是一些复制问题的示例代码:
AppDelegate.swift
//
// AppDelegate.swift
// Jumbo Player
//
import UIKit
//import MediaPlayer
//doesn't matter where this is declared - here or in ViewController - same results
//let myMP:MPMusicPlayerController = MPMusicPlayerController.systemMusicPlayer()
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for …Run Code Online (Sandbox Code Playgroud)