tinode / ios

Tinodios: Tinode Messaging Client for iOS
Apache License 2.0
243 stars 107 forks source link

Audio only calls. #192

Closed aforge closed 1 year ago

aforge commented 1 year ago

Should be generally working. Let me know if you find issues.

or-else commented 1 year ago

iOS works well, no technical issues. But there is a problem on the web: the video button does not work when calling with iOS. It works with android.

This UI looks crowded:

Screenshot 2023-01-17 at 10 23 36

Maybe show just one button, either video or audio and save the type of call (with video or without) on the client and show the button for the same call as before.

The video icon in the toolbar is likely to be a problem during app review. Apple states that the icon can only be used for FaceTime. I'll create a different icon.

Screenshot 2023-01-17 at 10 35 08
or-else commented 1 year ago

video-camera-outline

or-else commented 1 year ago

Audio-only does not work with the web: no sound is coming through. Web gets a bunch of these errors:

TCPeerConnectionIceErrorEvent {isTrusted: true, address: '192.168.5.x', port: 57820, hostCandidate: '192.168.5.x:57820', url: 'turn:openrelay.metered.ca:443?transport=tcp', …}
isTrusted: trueaddress: "192.168.5.x"
bubbles: false
cancelBubble: false
cancelable: false
composed: false
currentTarget: RTCPeerConnection {
  onremovetrack: null, 
  localDescription: RTCSessionDescription, 
  currentLocalDescription: RTCSessionDescription, 
  pendingLocalDescription: null, remoteDescription: RTCSessionDescription, …
}
defaultPrevented: false
errorCode: 600
errorText: "Address not associated with the desired network interface."
eventPhase: 0
hostCandidate: "192.168.5.x:57820"
port: 57820
returnValue: true
srcElement: RTCPeerConnection {
  onremovetrack: null, 
  localDescription: RTCSessionDescription, 
  currentLocalDescription: RTCSessionDescription, 
  pendingLocalDescription: null, 
  remoteDescription: RTCSessionDescription, …
}
target: RTCPeerConnection {
  onremovetrack: null, 
  localDescription: RTCSessionDescription, 
  currentLocalDescription: RTCSessionDescription, 
  pendingLocalDescription: null, 
  remoteDescription: RTCSessionDescription, …
}
timeStamp: 32079102.099999905
type: "icecandidateerror"
url: "turn:openrelay.metered.ca:443?transport=tcp"
or-else commented 1 year ago

Video calls also get one error like that but work (audio and video are fine). Audio-only does not work - no sound is coming through.

or-else commented 1 year ago

Minor UI issue: when calling to iOS, the notification on iPhone always says "Tinode Video" even when it's audio-only. I suppose it should be "Tinode video call" for video+audio and "Tinode call" for audio-only.

or-else commented 1 year ago

The call notification does not always appear. The data message arrives, but no call notification is shown in ~30% of calls. The app is in foreground. It's probably a data race because pushes are now silent.

or-else commented 1 year ago

When calling to or from iOS the mute and video buttons are always disabled, for audio and video+audio

Screenshot 2023-01-18 at 13 13 20

calls.

or-else commented 1 year ago

Xcode shows a lot of records like this:

2023-01-18 13:17:11.922176-0800 Tinodios[531:44615] [co.tinode.tinodios] CallVC - audio route change: other - 4
or-else commented 1 year ago

It seems like audio in audio-only calls is not coming through from iOS side: audio iOS -> Android and iOS -> Web don't work. The other way works fine. Video calls work fine both ways. No other issues.

or-else commented 1 year ago

No longer hanging.