
每监听到对应的系统事件时,就会通知MJAppDelegate 4>为应用程序创建一个UIWindow对象(继承自UIView),设置为PYAppDelegate的window属性 5>加载Info.plist文件,读取最主要storyboard文件的名称 6>加载最主要的storyboard文件,创建白色箭头所指的控制器对象 7>并且设置第6步创建的控制器为UIWindow的rootViewController属性(根控制器) 8>展示UIWindow,展示之前会将添加rootViewController的view到UIWindow上面(在这一步才会创建控制器的view) [window addSubview: window.rootViewControler.view]
进入main函数,在main.m的main函数中执行了UIApplicationMain这个方法,这是ios程序的入口点! int UIApplicationMain(int argc, char argv[], NSString principalClassName, NSString *delegateClassName) argc、argv:ISO C标准main函数的参数,直接传递给UIApplicationMain进行相关处理即可 principalClassName:指定应用程序类,该类必须是UIApplication(或子类)。如果为nil,则用UIApplication类作为默认值 delegateClassName:指定应用程序类的代理类,该类必须遵守UIApplicationDelegate协议 此函数会根据principalClassName创建UIApplication对象,根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性 lUIApplication对象会依次给delegate对象发送不同的消息,接着会建立应用程序的main runloop(事件循环),进行事件的处理(首先会调用delegate对象的 application:didFinishLaunchingWithOptions : ) 程序正常退出时这个函数才返回。如果进程要被系统强制杀死,一般这个函数还没来得及返回进程就终止了。
在iOS端关于音频或视频的开发中,声音或者视频播放的时候一些外界的因素可能会把音视频打断,比如电话,或者其他会播放音频的APP,这时候程序的音频或视频都会中断,但是我们再回到前台时需要更改一些UI上的变化(比如正在播放的音乐被电话打断,电话挂掉之后音乐会保持暂停的状态,但是如果不及时更新UI,播放按钮会保持正在播放的状态),这时候我们就需要对这些时间进行主动的监听,来进行我们需要的 *** 作,
情况一:用户按home键主动退到后台,一般的音乐类播放软件都会有后台播放的设置,不用进行额外的 *** 作,但是如果是正在播放视频的话,退到后台后视频应该是暂停状态,这时我们只需要在AppDelegate的相关方法中进行主动的设置就可以
情况二:被电话或者其他App播放的声音打断,此时就需要我们在程序中去监听这些事件,当事件被触发时进行相应的 *** 作
其中AVAudioSessionInterruptionNotification就是系统提供的被中断的通知
然后在被打断时进行相应的 *** 作
音乐类软件为了提高用户体验一般都会添加耳机线控音乐的功能(单机暂停/播放,双击下一曲,点击三下上一曲),还可以对耳机的插拔进行监听
监听耳机的插拔:
点击耳机中键的事件:
首先要在程序入口处让app接收远程控制事件
然后在远程事件通知中进行相应的 *** 作(这个通知还会接收系统上拉菜单中的控制中心的播放和暂停按钮)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)