 Hi guys, I'm Sudip and I'm an iOS engineering intern at Temasis. Before I go into the details, who knows what a web RPC is? Alright, we've got a few hands up. Okay, today I'll be talking about how to easily integrate web RPC into both your new and existing iOS apps using the Skylink iOS SDK developed by Temasis. I'll just quickly go through what web RPC is for the benefit of those who don't know. It stands for Web Real-Time Communication and it's a relatively new web standard for low latency real-time communication between peers. And it leverages on a set of plugin-free APIs that are progressively being supported by all major browsers and right now it supports audio, video, file transfer, messaging, and it's pretty powerful. But I'm sure all of us here want to really find out how to put this inside a phone, right? So let me just go through how the technology works. So we have two peers, let's call them Alice and Bob, and they want to talk to each other and share data, but they can't really do so because they don't technically know each other yet. So what they need is a known party that will introduce them to each other. So using information from this known party, they establish a peer-to-peer connection and they can use this to start sharing data. So Skylink does this by having a room name that identifies a connection that is being created here. Okay, so this is one of the applications that we've been working on for iOS. It's called getaroom.io. So it has cross-platform compatibility. So you can see some of the functionality here, such as the connection being formed in the second screen, audio, video sharing in the third, and file transfer and messaging in the last screen. But before I demo it to you, I actually want to go through what's going on behind the scenes here. So building on the earlier example with Alice and Bob again. And in this case, we have a server that actually handles the room name creation for us. So Alice wants to make a call to Bob. And the device informs the server and then the server creates a room name, CFXGV. And this identifies the room that the two peers will be joining. And it then directs Alice to the room. Bob then has the option of accepting or declining, and then let's say he chooses to accept. He's then directed to the room as well. And once both peers join the room successfully, Skyline connection is formed and you can start sharing audio, video, messages, and files. But the best part of this Skyline connection is that it's not just limited to iOS devices. Peers can communicate through web browsers, through Android devices, and it's a very cross-platform communication. So let me go ahead and demo it to you right now. Let's say Bob is on his computer and he gets a link. He opens up the earlier room CFXGV. Okay, you can't see it there. So this is how it looks like. Okay, now I will load it up on my phone. Just give me a second. Okay, it's a bit small. It's acting a bit strange but I think you can see the bottom area. So I just loaded up the identities and I'm calling, let's look for Bob. And this is the connection being formed right now. And in a few seconds, you'll see that the... Right, there you go. So this is how responsive and fast the technology is. This essentially appears to be a communication link being formed. And yeah, it's pretty fast. Right, so that's the demo. Okay, now I'll be showing you how you can make an app like that with just these five simple steps. So the first is registration. You have to go to developer.termasses.com.sg. Get yourself an API key and a secret. This will be if you want to use the SDK in your mobile app. If you're looking for a web app, you'll need to provide additional details like the application domain and so on. Next, you'll be adding the dependencies, frameworks and libraries. If you use Cocoa Pots as usual, it's just simple. Just add the Skyrim port to your project. If not, you'll have to add these following frameworks, libraries and dependencies. Okay, this is where you set up the Skyrim configuration itself. You can choose to enable audio, video, file transfer, data channel. At this point, it's good to assess what your app actually needs. So let's say my app is an audio-video communication tool, but I don't need file transfer. I can just set file transfer to no. By the way, I'll be just going through the Objective-C code, but we support both Objective-C and Swift. So if you need the Swift, you can just look it up on the website. I'll give the link later. So you initialize the Skyrim object here. It's initialized using the configuration that you created earlier as well as the API key you got online. And same as earlier, if you don't need it, you don't need to set the delegate. Otherwise, just set the necessary delegates and you're good to go. Also, this is one of the easiest ways of setting up the Skyrim connection. Yeah, this is one of the easiest ways of setting up the Skyrim connection. But we offer an alternative method, which is to two generator credentials. This adds an additional layer of security if you require that in your app. Otherwise, you can simply connect with the secret you got earlier, a room name and the user info. Okay, the room name is just a string that defines the connection with what I mentioned earlier. It's a unique string. The user info can be three variables. It can be a string, it can be an area, or it can be a dictionary. The dictionary allows you to add additional values such as the first name, the last name, any other parameters that you might need to pass in your app. Yeah, and you disconnect your search. All right, so these are some of the delegates. I've listed all the delegates. I'm just listing one from each. So you can see, for example, the connection delegate. When there's a successful connection being made, that's the method it's called. The peer joins as the one, the second one, and the last one when the message is received. One thing to note about messaging is that we have both support for both the data channel as well as the signalling path. So there's support for both one-to-one messages and broadcast messages, whichever your app requires. Right, so that's the media when the peer receives the video and when the file transfer is completed. So this is just to give you an overview of how the delegates look like. For more, you can refer to a sample app that's on our website. So yeah, these are some links that you might find important. The scaling, the IO slash iOS. You can find the SDK, our documentation and sample reference app, both in Objective C and Swift. The slides can be found there. As of now, Safari and IE still don't fully support WebRTC, but we have a plugin solution that allows you to use the functionality that I just went through and seamlessly communicate between iOS, Android devices and these web browsers. You can find the plugin at, it's for desktop Safari. You can find it at Skylink.io slash plugin. And if you have any iOS-specific questions, you can find Sajid, who's a senior software engineer or myself. Or Jani too, if you have any questions on SDK. We also have our director of engineering, Nat at the back and Lavanya, who's our Android solutions engineer. Yeah, that's about it. I hope we found the presentation useful.