How to retrieve all "audience" users of an interactive audio streaming channel - agora.io

I am using AgoraWebSDK-NG to do a Web implementation.
My application uses interactive audio streaming. Video is not required.
I want to know how to retrieve all users who are part of the "audience" of a channel (and not "hosts"). I want to display such "audience" users in the UI.
Unfortunately I cannot find any method to be able to do so here https://agoraio-community.github.io/AgoraWebSDK-NG/api/en/interfaces/iagorartcclient.html#getlisteners
Please let me know how this would be possible. An example would be great. If it is not possible, then just let me know that as well. Thank you.

this is not possible at the moment with the NG SDK. To achieve this right now, you can use the Agora RTM SDK.
You can create an RTM channel with the same name as the RTC channel. Then you can use the RTM's channel events to know when an audience member joins or leaves.

Related

Webrtc to remotely control phone camera

I am looking for help to take still photos remotely using webrtc. Is there an API that allows access to the other person's rear camera (with permissions) to take photos and save them to my phone? The idea is to use this to take full resolution photos with Android and iOS using react.
Yes you can do this by let them join a channel and then you can send request from your side to ask camera to take picture and then send you back. This is just like message. You sending message from your side to ask other person for taking picture although. If he is using browser then it can be done using js for getting permissions. But in case of a mobile application you can have your own endpoints to interact with channels. I hope you got the basic idea.

is any way for broadcaster add user to join in live streaming

is possible, broadcaster add any user to live and then interacting with each other and also audience show both screen as well as audio and video and their activities is this possible?. I found documentation but not clearly satisfied. If anyone know then let me know what is the right way for do this task.
Agora SDK does provide that feature. In order to do that, you need to switch the user's role from audience to broadcaster and send the video stream to the remote users in the channel.
Please take a look at this article for detailed information: https://docs.agora.io/en/Interactive%20Broadcast/co_host_overview?platform=All%20Platforms
And the GitHub demo code here: https://github.com/AgoraIO-Usecase/AgoraLive

I don't want camera permission needed for each video chat when there is a series of 1-1 video chats at an event

I am not a coder and having a web platform built with PHP that includes a series of 1-1 video chats in a scheduled networking "event". The problem that the developer is not able to solve with the video plug in that they are using (https://www.magnoliyan.com/video-chat-pro/) is that the user needs to give camera permisson before each chat. I need this permisson to happen one time only at the beginning of the event and not need there to be any further permission giving throughout the event. Of course I would like this to work on all platforms. I'm exploring agora.io as an option to solve this and replace the current plug in with agora. Does anyone know if agora would be the right fit for this or which video chat platform I should use to accomplish this? And if there is specific developer kind of language or code - please speak in as if I was a developer and I will pass on what you say to him directly. You don't need to worry about whether I will understand it.
Thanks!
Jon
Agora.io like any other WebRTC provider requests device camera permission only once. And all subsequent Videocall won't need any special permission (provided that they are on the same domain)
More specifically, Agora.io requests browser permission when stream.init method is invoked. This also turns on the camera light. stream.close turns off the camera light and deallocates the resources.
However, the subsequent stream.init function calls do not require permissions. (Camera light will just turn on)
References:
stream.init: https://docs.agora.io/en/Video/API%20Reference/web/interfaces/agorartc.stream.html#init
stream.close: https://docs.agora.io/en/Video/API%20Reference/web/interfaces/agorartc.stream.html#close

Voice call connection routing React-Native

I am trying to build an application which works this way: I as a user want to start a call with another user. The way I want the connection be made is by random. So it will connect to one of the many clients out there by random. Also when other clients try to make a call, it should connect to another random client and so on. I want those phone calls be made via application(such as WhatsApp) not as a phone call.
Now, the question is; is Twilio a good approach for this purpose?
If yes can you tell me which of their feature would fit my app the best?
Thanks for any suggestions!
Twilio developer evangelist here.
I can answer that Twilio would be a good approach for you to do this within your own application. I'd recommend using Twilio Video to build this as it allows cross platform communication via audio or video (in your case, you may not need the video, but this will give you the best audio quality).
As an example, my colleague Dominik built a video roulette application. It is the case that the interface was built in JavaScript for the web, but the idea would be the same for a native app. The code for the server side part of the application should give some insight into how to connect random pairings.
It's also possible to integrate Twilio Video with CallKit and Connection Services so that you can make outbound calls to other devices that ring like a real incoming call.

Objective-C Async communication between IOS devices

Is there a way to perform async communication between iPhones/IOS devices? I have been researching and thought maybe APN might fill that void, but it sounds like I can't initiate an APN push from an IOS dvice to another, and even if I could I can't trigger the "event" on the other device with just an APN push from what I can identify.
Does anyone have any examples or general advice for IOS device interaction for devices that are not in GameKit (i.e. wifi/bluetooth) range that does not require an intermediate service (urban airship, dedicated server, etc) or will I need to have a 3rd party in order to trigger and/or sync these interactions between devices?
Sorry I don't have any code or details as this is still in the planning phases for me. Any pointers would be greatly appreciated.
The answer is : use a server side app and have all your devices talk to that server.
If you dont want or cannot host an app, you can use a cloud solution based on websocket like Pusher. You can then subscribe to events and post messages with data.
They have an iOS client library
http://pusher.com/docs/client_libraries
P.S: Also have a look at Parse and Stackmob , i remember that had this kind of feature was in their roadmap, but i don't know if it's available yet..
Hope this helps,
Vincent