Connecting 2 IOS Apps Through a Video Call - ios

I've been developing an app and it seems I've ran into a brick wall. I'm trying to create a video connection between two apps (similar to how the uber driver app connects with the uber rider app-etc.) Basically I need to be able to allow one app to create a 1:1 video call to another app. Just a nod in the right direction would be greatly appreciated!

I think the most common and reliable approach for this is to use some WebRTC based solution. There are several SDK that provide such an experience. I've used Sinch, Twilio and Icelink
Some of them requires you to purchase a license.

Related

Is making a video calling and live broadcast app possible in Swift?

I am new to Swift and I want to integrate video calling in my app using Swift. I want to make a live broadcasting video app where one host will come live and other clients can join him/her.
I tried several third party apps like agora.io but it didn't work for me. Do you guys have a better suggestions?
Try quickblox. It is a very smart solution, it can manage everything for you, your only task is to present the UI and the buttons. It is relatively cheap, even free for low user count. We have used it to create an "intercom" like application
Quickblox website

I want camera permission to need to be granted only one time in a video networking - platform - issues with ios and safari

I want to be able to enable a user on a video networking web platform to only need to grant camera permission one time, and be able to have separate video chats with multiple users.Part of the 'event" will have multiple one to one video chats. There is a one to one video chat with one user. it ends. there is another 1 to one video chat with another user. It ends, etc.... As it is this permission is needed to be granted for each separate video chat. I am having this issue primarily with ios on safari. I am having someone else build this web platform and the person is not able to solve this issue with the video plug in they are using. They claim it is an issue with mac devices that cannot grant permission to particular websites. But I know that this issue has been solved with other networking platforms. Can I accomplish this with tokbox (vonage)? Or please tell me what video platform to use and the specific way to accomplish this. I am not a developer but will pass on exactly what you give me to my developer team. I am considering having the website be rebuilt with tokbox but first want to be sure that I can accomplish this. The website it being built with PHP but this issue is so sognificant that I might have it bilt from scratch in whatever way is needed. Thank you very much!!!! I know this issue is solveable as I've seen this on other platforms - Zoom and other video networking platforms like remo.. thanks!!!
The Agora web SDK requests the browser for camera and microphone permissions. Now remembering these permissions is done by the browser itself and not the JavaScript SDK.
As to answer how other platforms offer this is because those are native apps and not a mobile website. So they don't have to play by the rules of the browser. If you are interested in that, you can take a look at our IOS SDK.
https://docs.agora.io/en/Video/start_call_ios?platform=iOS

Video Streaming and Broadcasting using WebRTC

I am very new to Real Time Protocols and I had some questions about how WebRTC works and how I can implement it. I am trying to create a one to many livestream like facebook or periscope, where one user broadcasts and other users join and stream the video. I am using Swift from my client end.
My questions are:
How do I broadcast a video using WebRTC
Is there an SDK for WebRTC in Swift/iOS
I know the questions are very vague but a guidance to the right direction would be great because I am not sure where to start
You will need to use backend servers for that.
If you plan on broadcasting to multiple users directly from your mobile app then stop...
You need to connect your mobile app to a backend media server which then can be used to broadcast the video to a larger audience.
There are several commercial and open source alternatives that enable you to do that. I'd check Red5Pro, Wowza, SwitchRTC, Jitsi, Janus and Kurento for this task.
For the client side, look at react-native-webrtc
You can find more tools for WebRTC developers here.
Regarding your question (2), there's also a SDK for iOS here and a neat get-started-page here (although 2.5ys old, but I haven't found anything better so far yet)

How can I get Alexa working on my iOS app?

I have been checking out the Alexa Skills kit the past few days. I have also been poring through the documentations for both the Skills kit and the Voice Service. I am just having a little hiccup trying to understand the flow. I have implemented one of amazon's sample skills (favourite colour sample) in the developer console and also wrote a sample lambda function to handle the type of response that will be delivered. Its working on the test simulator and what left is basically getting lambda running through my ios app. However I have the impression that I don't have to use the voice service. Am I wrong? I am quite confused, it would be awesome if anybody who has some more clarity could shed some light on the matter. If I get lambda working also, I think it will accept requests that are in a particular format. Where do I have to send the encoded audio to get a json response to send to the skills kit? To the Alexa Voice Service?
Also I am authenticating my app using cognito and dynamo db. If I were to use Alexa Voice Service, then it is mentioned that the user will have to also login to amazon. So do I still have to work with the login with amazon sdk? Or is there a workaround?
Based on Amazon documentation there are two ways to interact with Alexa:
Sounds like you want to implement the app thru the Companion method.
As far as the JSON goes, i am currently resolving that issue now, (will post answer once I have it resolved).
Basically you have to use AVFoundation to capture audio from iPhone and send 2 https messages to Alexa (One message with JSON Body & the second message with audio captured as body.) Bases on Documentation
Companion App
(You have a device (such as a smart speaker) that you want to add Alexa to. So, you build in support for AVS. Great! Now you need a way to authorize it and associate it with the user's account. This is the "companion app" approach. The companion app connects to your smart product and allows the user to login and authorize the speaker to use Alexa and connect to their Amazon account.)
Mobile OR Website
AVS App
(You don't have a device you need to authorize - instead you want to speak to Alexa from within your Android/Iphone application.)
Android or Iphone
You can find a swift example on github on how to implement a iOS AVS client
https://github.com/chintan1891/iOS-Alexa

real time messaging for multi player game on ios

Building a multi player iOS game where players compete one against the other. Nature of the game is synchronous. Basically, players either invite each other through facebook, email, etc and then start playing.
We debate what is the best strategy for facilitating the real time communication between players (sending events, etc). Coming from web development, we used comet and long polling which worked great. However, it's not clear what's the best way to achieve that on iOS.
Seems like APN (Apple Push Notifications) is not suitable in our case for two reasons: the delay can be pretty significant, up to few seconds, as far as we understand. Also, using APN requires the user to authorize notifications. If the user doesn't authorize this then it won't be possible to play the game.
Also, we understand Apple's Game Kit (Game Center) can be of value in our case however it's not clear how it interacts with invites through facebook etc. Also, not clear if we need to get into bed with Apple's Game Center and how it'll affect the user experience.
Any guidance on this matter as well as other options that you might think of would be greatly appreciated.
Thanks for your help.
Before you read the rest, a disclaimer: I work for Realtime.co but I do believe I can help here so I'm not trying to "pitch a sale".
If you need to have real time updates, you can check out Realtime (www.realtime.co). It's basically a set of tools for developers to use real time technologies on their projects. It uses websockets but does fallback to whatever the user's browser supports (such as long polling, for example) if you are using a browser (which is not your case, but it's always good to know).
Behind Realtime you have a one-to-one/one-to-many/many-to-many messaging system that will transport your messages to and from your users.
There's a iOS API too which you can use in your project. You can download it here: http://www.xrtml.org/downloads_62.html#ios and check the documentation here: http://docs.xrtml.org/getting_started/hello_message.html#ios.
There's also a plus which is the fact that the Realtime framework is actually cross-platform. This means that you can even have your iOS players to communicate with players using Android, Windows Phone, HTML5, Flash, etc. if you decide on expanding your game to other platforms.
I hope that helps!
I'll just provide some insights on the question.
APN should never be used for synchro communication as for iOS at least, you'll never have both way communication (basically the Apple APN servers are pushing an information to the device).
You should probably play with C sockets in order to open a tunnel (depends if your game is real time or not).
Using the Apple Framework GameKit is great! But might take some time to understand all the functionnalities.
Check out Gree
https://developer.gree.net/en/
Parse:
https://www.parse.com/
Sparrow:
http://gamua.com/sparrow/
There are a few things that your talking about, there is the joining/starting of a game, and then the communication between the players. They are not necessarily related.
You can use game-center and at the same time another framework for facebook, they are not mutually exclusive (but it would be more work.)

Resources