Unity 3D ile WebRTC kullanarak bir VOIP Çapraz Platform Mobil Uygulaması Tasarlama

Başlangıç ​​:

Başlıkta pek çok teknoloji bulunduğunun farkındayım ve bunun bir nedeni var. T P2P’ye duyulan hayranlık küçümsenemez. İnternetin ve dosya paylaşım uygulamalarının ortaya çıkışından bu yana, P2P iletişimlerinin sesleri her zaman daha yüksek sesle büyüyor. Ve özellikle uzaktan iletişim için büyük ölçüde VOIP’ye güvendiğimiz son pandemik zamanlarda popülaritesi artıyor. Son zamanlarda popülerlikteki artış, güvenlik ve mahremiyet konusunda endişeleri artırdı. WebRTC, şifrelenmiş bir şekilde iki eş arasında VOIP iletişimi için en güvenli yollardan biri olmaya devam ediyor ve dolayısıyla bunu kullanma dürtüsü. Vitesleri Unity’ye çevirmek, platformlar arası geliştirme yine bir kez yazma ve her yerde dağıtma hedefine ulaşmayı vaat eden trend konulardan biri. Unity’yi oyunlar dışında mobil uygulamalar geliştirmek için genel olarak ilişkilendirmiyoruz, ancak Unity’yi bu makalenin ilerleyen bölümlerinde inceleyeceğimiz çapraz platform geliştirme aracı olarak kullanmanın doğal avantajları var.

WebRTC’de yeni olan kişiler için, ne olduğunu ve nasıl çalıştığını çok kısaca açıklamaya çalışacağım. WebRTC, eşler arasında gerçek zamanlı iletişim kurmak için açık kaynaklı bir çerçevedir.

WebRTC, eşler arasında ilk anlaşmayı kurmak için iki ana sunucu varlığına güvenir. Birincisi, uzak eşlerin halka açık IP adresini elde etmek için kullanılan STUN sunucusu ve daha sonra, el sıkışmayı başlatan ve iki taraf arasında iletişim kuran Sinyalleme Sunucusudur. İlk el sıkışma dizisi tamamlandıktan sonra iletişim P2P olur. Geliştirme amacıyla, herkese açık birçok STUN sunucusu ve Sinyal sunucusu vardır, ancak açık kaynak sunucu projelerini kendi sunucu kurulumunuzda barındırmanızı tavsiye ederim. Yalnızca el sıkışma için kullanıldığından çok daha az bant genişliği tüketeceğini unutmayın.

Nihayet korkunç bileşen – “SUNUCUYU AÇ”. TURN sunucusu, uzak eşler simetrik bir NAT arkasında olduğunda ve STUN kullanarak genel IP adresini elde etmenin zor olduğu durumlarda geri dönüş mekanizması olarak kullanılan bir aktarma sunucusudur. Dolayısıyla, bu durumda, P2P kullanmıyoruz, bu da tüm iletişimin maliyet ve bant genişliğine ek olarak TURN sunucusu kullanılarak aktarıldığı anlamına gelir. Ancak şükürler olsun ki, kullanım durumlarının çoğu için TURN sunucusunu kullanmaktan kaçınabildik. Kolayca dağıtılabilen açık kaynaklı TURN uygulamaları mevcuttur. Üçüncü taraf satıcılar tarafından sağlanan hazır çözümlere de güvenebiliriz (lütfen referans bölümüne bakın).

Geliştirme Aracı Olarak Birlik:

Unity, mobil uygulamalar için platformlar arası geliştirme araçlarını düşündüğümüzde akla gelen ilk şey değildir, ancak kendine has faydaları vardır. Desteği, HoloLens, Mac uygulamaları gibi cihazlara genişletmeyi planladığımızda ve özellikle de VOIP uygulamamıza bazı AR yeteneklerini dahil etmek söz konusu olduğunda Unity’nin yararlı olduğunu kanıtlıyor. Modellerin uçakların üzerine kolayca yerleştirilmesine yardımcı olan dahili bir fizik ışın dökümüne sahiptir.

Unity, aynı şeyi başarmamıza yardımcı olacak üçüncü taraf WebRTC eklentilerine de sahiptir ve elbette Unity’de hem ARKit hem de ARCore özelliklerini geliştirebiliriz. % 75 ortak kod tabanına ve platformlara özgü% 25’e kolayca ulaşabiliriz.

Uygulama Geliştirme:

Artık STUN sunucusu, Sinyalleme Sunucusu, TURN sunucusu, Unity IDE ve WebRTC eklentisiyle bir ekosistem oluşturduğumuza göre, eksik olan şey, bir Mobil uygulama kullanarak hepsini bir araya getirip uygulanabilir bir çözüm oluşturmamızdır.

Bu nedenle, mimari üzerinde beyin fırtınası yapmak ve bir çözüm oluşturmak için üzerinde daha fazla düşünmemiz gereken iki önemli husus var.

WebRTC Eklentisi, aranan uç ve arayan arasında değiş tokuş edilmesi gereken benzersiz bir tanımlayıcı gerektirir. Bu genellikle uygulama kapsamı dışında yapılır. WebRTC ile bir oturum kaydettiğimizde benzersiz bir kimlik gönderebiliriz. Bu, diğer eşlerin bağlanabileceği benzersiz kimliktir (Bunu bir toplantı odası kodu olarak hayal edin). Kimliği diğer istemcilere göndermek için iMessage’lara veya metin mesajlarına güvenebiliriz. Kısa mesajlara tıklamak uygulamamızı doğrudan açabilmek için bir URI şeması kaydedebiliriz.

Ardından, aranan uca bir çağrı alma konusunda bilgi verilir. İstemcilerin katılmasını beklerken ana bilgisayar uygulamasının arka planda olabileceği veya kapatılabileceği senaryolar vardır. Bu nedenle, istemciler katıldığında ana bilgisayarı uygun şekilde bilgilendirdiğimizden emin olmalıyız. Aranan uca gelen aramalar hakkında bilgi vermek ve ayrıca CallKit gibi platforma özgü arama kullanıcı arayüzünü entegre etmek için Push bildirim mekanizmasını kullanabiliriz. Push Bildirimi, basit bir push bildirim sunucusu veya firebase ile elde edilebilir.

Yerinde olması gereken her şeyi düşündüğümüze göre, şimdi bu düşünceleri uygulamadaki bloklara yerleştirelim. Üst düzey sistem şu şekilde tasavvur edilebilir.

Denouement:

Dolayısıyla, doğru bileşenlerin tanımlanmasıyla basit ve etkili bir VOIP iletişim ekosistemi öngörülebilir. WebRTC, VOIP iletişiminde giderek daha önemli bir rol oynamaktadır. Ondan çeşitli çözümleri entegre etmek ve genişletmek kolay ve eğlencelidir. Unity’nin fizik motoru, çeşitli artırılmış gerçeklik ihtiyaçlarını karşılamak için gelişmiş ve mükemmeldir. Tüm bu bileşenlerle ilgili daha fazla bilgiyi aşağıdaki referanslar bölümünde bulabilirsiniz ve geliştirmenize hızlı bir başlangıç ​​yapmanıza yardımcı olabilir.

Referanslar :