Como usar o GCDAsyncUdpSocket para multicast por wifi e bluetooth

Atualmente, estou usando o GCDAsyncUdpSocket para enviar datagramas multicast por wifi entre dispositivos iOS.

O código é bem simples

Cliente

self.socket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self  delegateQueue:dispatch_get_main_queue()];

//omitted error checking
[self.socket bindToPort:12345 error:&err];
[self.socket joinMulticastGroup:@"224.0.1.1" error:&err];
[self.socket beginReceiving:&err];

Servidor

self.multicastSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];

NSData *d = [@"hello" dataUsingEncoding:NSUTF8StringEncoding];

[self.multicastSocket sendData:d toHost:@"224.0.1.1" port:12345 withTimeout:-1 tag:11];

Isso funciona bem em wi-fi. Como faço para que isso funcione através do bluetooth também? Eu pesquisei um monte e não consigo encontrar nada ... Preciso criar dois soquetes separados? Um ligado à interface wifi e outro à interface bluetooth?

EDIT: ou estou confuso sobre algo fundamental? Isso deve ser possível. A GKSession do GameKit faz exatamente isso, certo?

questionAnswers(2)

yourAnswerToTheQuestion