我开发了一款音乐应用。在测试时,我收到了一个Skype通话,它在后台停止在我的应用中播放音频。我怎么处理这个?我不明白这种行为。我正在使用iOS 8.1的ipad。这是skype本身的行为吗?
答案 0 :(得分:1)
这是因为Skype是VoIP应用程序,iOS默认行为是在接收来电时,正在运行的应用程序暂时变为非活动状态。
我不确定你的意思'我如何处理这个问题'。
如果您在询问是否可以阻止它发生,则无法进行,因为这是默认的iOS行为。
但是,如果您只需要停止/启动应用的某些功能(例如重新启动音乐播放器,如果它没有自动发生),您可以使用应用委托方法{{1当应用程序即将变为非活动状态时调用,就像您在接到Skype电话时遇到的那样,以及当应用程序再次变为活动状态时调用的applicationWillResignActive
。
以上两个上面的苹果文档的关键点:
applicationWillResignActive:
调用此方法可让您的应用知道它即将从活动状态转为非活动状态。对于某些类型的临时中断(例如来电或SMS消息)或当用户退出应用程序并且它开始转换到后台状态时,可能会发生这种情况。处于非活动状态的应用程序继续运行,但不会将传入事件分派给响应者。
您应该使用此方法暂停正在进行的任务,禁用计时器,并降低OpenGL ES帧速率。游戏应该使用这种方法暂停游戏。处于非活动状态的应用程序在等待转换为活动状态或后台状态时应执行最少的工作。
applicationDidBecome:
调用此方法可让您的应用知道它已从非活动状态移至活动状态。这可能是因为您的应用程序是由用户或系统启动的。如果用户选择忽略将应用临时发送到非活动状态的中断(例如来电或SMS消息),则应用也可以返回活动状态。
您应该使用此方法重新启动应用处于非活动状态时暂停(或尚未启动)的任何任务。例如,您可以使用它来重新启动计时器或限制OpenGL ES帧速率。如果您的应用之前位于后台,您还可以使用它来刷新应用的用户界面。
可在此处找到完整文档:UIApplicationDelegate Protocol