2014-12-05 3 views
2

Мне нужна простая программа для отправки и получения сообщения через NSNotificationCenter в Swift? Я использую основной звук, и мне нужно уведомить приложение, если головные телефоны удалены во время воспроизведения звука. Я не знаю, должен ли я добавлять наблюдателя в делегат приложения или, на мой взгляд, так как я должен продолжать воспроизводить аудио в фоновом режиме.Отправлять и получать сообщения через NSNotificationCenter в swift?

Это функция, которую я использую для управления изменением маршрута, чтобы узнать, удалены ли наушники.

-(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 
     } 
} 
+0

для быстрой 2,0 и быстрой 3.0 проверки http://stackoverflow.com/questions/27315228/ rc = 1 – Sahil

ответ

1

Чтобы создать уведомление

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") 
} 
+0

Спасибо, что помогите мне разобраться, единственная коррекция заключается в том, что при добавлении наблюдателя имя является строкой. – DrCachetes

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

Меньше всего объяснения кода только ответы чаще всего заставляют андва более полезны. – Trilarion