Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VoIP durant un appel si l'application passe en veille le son se coupe #953

Closed
NicolasBuquet opened this issue Jan 15, 2024 · 8 comments
Closed
Labels
a-voip bug Something isn't working iOS P1

Comments

@NicolasBuquet
Copy link
Contributor

Actuellement, si durant un appel VoIP, l'application passe en veille, la capture et l'acheminement du son se coupe.

Réveiller l'application réactive l'acheminement du son dans les 2 sens.

La communication VoIP n'est donc pas coupée.

@NicolasBuquet NicolasBuquet added the bug Something isn't working label Jan 15, 2024
@odelcroi odelcroi moved this to Backlog in Roadmap Produit Jan 16, 2024
@NicolasBuquet
Copy link
Contributor Author

NicolasBuquet commented Jan 22, 2024

Vérifier le bon fonctionnement de cette partie de code de MXKCallViewController :

(notamment l'appel à isIdleTimerDisabled qui gère le passage en veille)

- (void)updateProximityAndSleep
 {
     BOOL inCall = (mxCall.state == MXCallStateConnected || mxCall.state == MXCallStateRinging || mxCall.state == MXCallStateInviteSent || mxCall.state == MXCallStateConnecting || mxCall.state == MXCallStateCreateOffer || mxCall.state == MXCallStateCreateAnswer);

     BOOL isBuiltInReceiverUsed = self.isBuiltInReceiverAudioOuput;
     
     // Enable the proximity monitoring when the built in receiver is used as the audio output.
     BOOL enableProxMonitoring = inCall && isBuiltInReceiverUsed;
     
     UIDevice *device = [UIDevice currentDevice];
     if (device && device.isProximityMonitoringEnabled != enableProxMonitoring)
     {
         [device setProximityMonitoringEnabled:enableProxMonitoring];
     }

     // Disable the idle timer during a video call, or during a voice call which is performed with the built-in receiver.
     // Note: if the device is locked, VoIP calling get dropped if an incoming GSM call is received.
     BOOL disableIdleTimer = inCall && (mxCall.isVideoCall || isBuiltInReceiverUsed);
     
     UIApplication *sharedApplication = [UIApplication performSelector:@selector(sharedApplication)];
     if (sharedApplication && sharedApplication.isIdleTimerDisabled != disableIdleTimer)
     {
         sharedApplication.idleTimerDisabled = disableIdleTimer;
     }
 }

@NicolasBuquet
Copy link
Contributor Author

Comme on peut le voir dans le code du commentaire précédent, le passage en veille de l'écran est bloqué si :

  • l'appel est un appel vidéo
  • l'appel est un appel audio utilisant le haut-parleur interne porté à l'oreille (isBuiltInReceiverAudioOuput)

Dans le cas d'un appel audio utilisant le haut-parleur porté à l'oreille, le détecteur de proximité est alors activé pour pouvoir couper l'écran quand l'appareil est collé à l'oreille.

Je teste une version dans laquelle l'option disableIdleTimer est toujours à TRUE quel que soit la nature de l'appel et le périphérique utilisé.

@NicolasBuquet NicolasBuquet changed the title VoIP durant un appel si l'application passe veille plan le son se coupe VoIP durant un appel si l'application passe veille le son se coupe Jan 22, 2024
@NicolasBuquet
Copy link
Contributor Author

NicolasBuquet commented Jan 22, 2024

Si l'application passe en background, le son se coupe aussi.

Voici le log à ce moment :

[AppDelegate] applicationWillResignActive
[PushNotificationService] setShouldReceiveVoIPPushes: 1
[UNUserNotificationCenter] removeUnwantedNotifications: Removing 0 notifications.
[UNUserNotificationCenter] removeCallNotifications: Removing 0 notifications.
[PushNotificationService] configurePushKit
[AppDelegate] applicationDidEnterBackground

Quand l'application est en premier-plan, c'est elle qui reçoit directement les notifications chiffrées VoIP qu'elle peut déchiffrer et acheminer à l'audio.

Quand l'application est en arrière-plan, c'est l'extension qui reçoit les notifications chiffrées VoIP et qui devraient les déchiffrer puis redemander au serveur Sygnal de lui renvoyer en tant que Notification VoIP non chiffrée.

Quand Tchap aura l'autorisation de Notification Filtering, ces notifications chiffrées pourront être déchiffrées et routées directement à l'application qui pourra alors l'acheminer à l'audio. Le son de la VoIP ne devrait donc plus s'interrompre à mon avis.

A valider (entre autre en testant la fonctionnalité sous Element).

@NicolasBuquet NicolasBuquet moved this from Backlog to prêt pour le sprint in Roadmap Produit Jan 23, 2024
@NicolasBuquet NicolasBuquet moved this from prêt pour le sprint to sprint en cours - WIP in Roadmap Produit Jan 23, 2024
@NicolasBuquet NicolasBuquet changed the title VoIP durant un appel si l'application passe veille le son se coupe VoIP durant un appel si l'application passe en veille le son se coupe Jan 23, 2024
@yostyle
Copy link
Contributor

yostyle commented Feb 6, 2024

ajouter un notion avec les infos de contacts

@odelcroi
Copy link
Member

A valider (entre autre en testant la fonctionnalité sous Element).

@NicolasBuquet est ce que ce comportement est le même en DEV avec le sygnal exposé?

@NicolasBuquet
Copy link
Contributor Author

@odelcroi Une fois le serveur Sygnal exposé sur DEV, l'application affiche correctement l'UI CallKit qu'elle soit lancée ou non.

Certaines notifications parasitent un peu l'affichage, mais le CallKit fonctionne.

Image
Image

@NicolasBuquet NicolasBuquet moved this from sprint en cours - WIP to Beta interne in Roadmap Produit Feb 20, 2024
@NicolasBuquet
Copy link
Contributor Author

Fixed by #968

@github-project-automation github-project-automation bot moved this from Beta interne to déployé en prod in Roadmap Produit Feb 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
a-voip bug Something isn't working iOS P1
Projects
Status: déployé en prod
Development

When branches are created from issues, their pull requests are automatically linked.

4 participants