在swift中通过NSNotificationCenter发送和接收消息?

时间:2014-12-05 11:45:59

标签: ios iphone swift nsnotificationcenter nsnotifications

我需要一个简单的示例程序来通过Swift中的NSNotificationCenter发送和接收消息? 我正在使用核心音频,我需要通知我的应用程序,如果在我播放音频时移除了手机。我不知道是否应该在app委托或我的视图中添加观察者,因为我必须继续在后台播放音频。

这是我用来控制路线变化以了解耳机是否被移除的功能。

-(void)handleRouteChange:(NSNotification *)notif
{
   NSDictionary *dict = notif.userInfo;
   AVAudioSessionRouteDescription *routeDesc = dict[AVAudioSessionRouteChangePreviousRouteKey];
   AVAudioSessionPortDescription *prevPort = [routeDesc.outputs objectAtIndex:0];
   if ([prevPort.portType isEqualToString:AVAudioSessionPortHeadphones]) {
        //Head phone removed
      }
 }

2 个答案:

答案 0 :(得分:3)

NSNotificationCenter.defaultCenter().addObserver(self, selector: "handleRouteChange:", name: AVAudioSessionRouteChangeNotification, object: nil);
NSNotificationCenter.defaultCenter().postNotificationName(AVAudioSessionRouteChangeNotification, object: nil)

答案 1 :(得分:2)

创建通知

let thisNotification = NSNotification(name: "createdNotification", object: nil)
NSNotificationCenter.defaultCenter().postNotification(thisNotification)

观察通知

NSNotificationCenter.defaultCenter().addObserver(self, selector:"onCreatedNotification", name:"createdNotification", object: nil)
func onCreatedNotification(notification: NSNotification) {
    print("Notification received")
}