Comment synchroniser un audio sur 2 appareils ios ou plus

Je dois effectuer une action (jouer la chanson à la fois sur plusieurs appareils sans décalage) à un moment donné. Mon exigence est que l'application ne devrait utiliser aucune connection Internet. J'ai donc besoin d'un moment précis pour lire datatables (Audio)]

J'ai déjà essayé de suivre:

  1. Jouer la chanson après 5 secondes sur tous les appareils. (provoque toujours un décalage de millisecondes)
  2. Envoyez une petite notification de text pour identifier la lecture de la chanson, puis commencez à jouer sur tous les appareils. Mais envoyer et recevoir cette notification prend du time en millisecondes 🙁 🙁
  3. Réglez l'heure à automatique sur tous les périphériques et ensuite vérifié la différence de time de passage de message text, il a un intervalle de millisecondes dans chaque test.

Vous devez d'abord synchroniser les 2 time internes des périphériques. Apparemment, l'horloge la plus précise que vous pouvez avoir sur iOS est l'heure absolue en faisant:

CFAbsoluteTime now = CFAbsoluteTimeGetCurrent(); 

Ensuite, vous devez envoyer cette heure du périphérique A au périphérique B récupérer la différence sur le périphérique B et le renvoyer à A , puis comparer la différence avec le time passé dans la transaction réseau. De cette façon, vous pouvez avoir une synchronisation assez précise des 2 appareils. (Ceci suppose que l'heure du réseau est symésortingque entre la request et la réponse et qu'il n'y a pas beaucoup de frais généraux sur votre calcul sur l'appareil B ).

entrez la description de l'image ici

De là, vous pouvez facilement instancier 2 AVAudioPlayer sur les périphériques définir la chanson et appeler prepareToPlay et enfin triggersr la méthode de jeu en fonction du timeout sur la synchronisation. Cela devrait vous donner une précision non perceptible.

Une autre voie que vous pouvez prendre est celle de placer un AudioUnit sur le second appareil connecté au microphone afin de synchroniser la musique en conséquence au premier son émis par le périphérique.

Problème connu

Lorsque vous dormez ou attendez des intervalles de time extrêmement précis, les minuteurs peuvent être retardés jusqu'à 1 milliseconde.

Pour reference: https://developer.apple.com/library/ios/releasenotes/General/RN-iOSSDK-7.0/