En iyi yöntemler: SDK'ları çağırma Azure İletişim Hizmetleri
Bu makalede, Azure İletişim Hizmetleri çağırma SDK'larıyla ilgili en iyi yöntemler hakkında bilgi sağlanır.
Azure İletişim Hizmetleri web JavaScript SDK'sı en iyi yöntemleri
Bu bölümde, Azure İletişim Hizmetleri JavaScript sesli ve görüntülü arama SDK'sı ile ilişkili en iyi yöntemler hakkında bilgi sağlanır.
JavaScript sesli ve görüntülü arama SDK'sı
Azure İletişim Hizmetleri arama devam ederken eklenti mikrofonu veya cihaz yöneticisinden mikrofonu etkinleştirme
Bir aramanın başında kullanılabilir mikrofon olmadığında ve ardından bir mikrofon kullanılabilir olduğunda , "noMicrophoneDevicesEnumerated" çağrı tanılama olayı tetiklenir.
Bu durumda, uygulamanızın cihazları listelemek için kullanıcı onayı almak için çağrısı askDevicePermission
yapması gerekir. Ardından kullanıcı mikrofonun sesini kapatabilir/açabilecektir.
Video akışı oluşturucu görünümünü atma
İletişim Hizmetleri uygulamaları artık gerekli olmadığında öğesini veya üst VideoStreamRenderer
örneğini atmalıdırVideoStreamRendererView
.
Onbeforeunload olayında aramayı kapatma
Olay yayıldığında onbeforeunload
uygulamanız çağrılmalıdırcall.hangup
.
Mobil cihazlarda birden çok Sekmede birden çok çağrıyı işleme
Cihazdaki mikrofon ve kamera için kaynak ayırma nedeniyle tanımsız davranışlara neden olabileceğinden, uygulamanızın birden çok tarayıcı sekmesinden gelen çağrılara aynı anda bağlanmaması gerekir. Geliştiricilerin yeni bir arama başlatmadan önce arka planda tamamlandığında aramaları her zaman kapatmaları tavsiye edilir.
Telefon araması geldiğinde işletim sistemi sessize aramasını işleme.
bir Azure İletişim Hizmetleri aramasında (hem iOS hem de Android için) bir telefon araması geldiğinde veya Sesli yardımcı etkinleştirilirse işletim sistemi kullanıcının mikrofonunun ve kamerasının sesini otomatik olarak kapatır. Android'de arama otomatik olarak çözüler ve telefon araması sona erdikten sonra video yeniden başlatılır. iOS'ta kullanıcı eyleminin "sesini açmasını" ve "videoya yeniden başlamasını" gerektirir. kalite olayı microphoneMuteUnexpectedly
ile mikrofonun beklenmedik bir şekilde sesinin kapatıldığını belirten bildirimi dinleyebilirsiniz. Bir aramaya düzgün bir şekilde yeniden katılabilmek için SDK 1.2.3-beta.1 veya üzerini kullanmanız gerektiğini unutmayın.
const latestMediaDiagnostic = call.api(SDK.Features.Diagnostics).media.getLatest();
const isIosSafari = (getOS() === OSName.ios) && (getPlatformName() === BrowserName.safari);
if (isIosSafari && latestMediaDiagnostic.microphoneMuteUnexpectedly && latestMediaDiagnostic.microphoneMuteUnexpectedly.value) {
// received a QualityEvent on iOS that the microphone was unexpectedly muted - notify user to unmute their microphone and to start their video stream
}
Uygulamanız bir video akışı başlatmak için çağırmalıdır call.startVideo(localVideoStream);
ve sesi açmak için kullanmalıdır this.currentCall.unmute();
.
Cihaz yönetimi
Cihazlarınızı ve medya işlemlerinizi yönetmek için Azure İletişim Hizmetleri SDK'sını kullanabilirsiniz.
- Uygulamanız VEYA gibi
getUserMedia
getDisplayMedia
yerel tarayıcı API'lerini SDK dışında akışlar almak için kullanmamalıdır. Kullanıyorsanız, İletişim Hizmetleri SDK'sı aracılığıyla veya diğer cihaz yönetimi API'lerini kullanmadanDeviceManager
önce medya akışlarınızı el ile atmalısınız.
Cihaz izinleri isteme
SDK'yi kullanarak cihaz izinleri isteyebilirsiniz:
- Uygulamanız ses ve/veya video cihazlarına erişim istemek için kullanmalıdır
DeviceManager.askDevicePermission
. - Kullanıcı erişimi reddederse,
DeviceManager.askDevicePermission
sayfa yenilendikten sonra bile sonraki aramalarda belirli bir cihaz türü (ses veya video) için 'false' döndürür. Bu senaryoda, uygulamanız kullanıcının daha önce erişimi reddettidiğini algılamalı ve kullanıcıya belirli bir cihaz türüne el ile sıfırlama veya açıkça erişim izni verme talimatı vermelidir.
Başka bir işlem tarafından kullanılan kamera
- Windows Chrome ve Windows Microsoft Edge'de, bir aramayı görüntülü olarak başlatırsanız/katılırsanız/kabul ederseniz ve kamera cihazı web SDK'sının üzerinde çalıştığı tarayıcı dışında başka bir işlem tarafından kullanılıyorsa, arama yalnızca ses ile başlatılır ve video olmadan başlatılır. Kamera başka bir işlem tarafından kullanıldığından başlatılamadığından bir cameraStartFailed UFD yükseltildi. Aynı durum, aramanın ortasında video açmak için de geçerlidir. Diğer işlemde kamerayı kapatarak bu işlemin kamera cihazını serbest bırakmasını sağlayabilir ve ardından aramadan videoyu yeniden başlatabilirsiniz ve artık arama için video açılır ve uzak katılımcılar videonuzu görmeye başlar.
- İşletim sistemi işlemlerin/iş parçacıklarının kamera cihazını paylaşmasına izin verecek olduğundan, macOS Chrome veya macOS Safari'de bu bir sorun değildir.
- Mobil cihazlarda, bir ProcessA kamera cihazını isterse ve ProcessB tarafından kullanılıyorsa, ProcessA kamera cihazının üzerine geçer ve ProcessB kamera cihazını kullanmayı durdurur
- iOS safari'de, birden çok arama istemcisi için kamerayı aynı sekmede veya sekmeler arasında açık yapamazsınız. Herhangi bir arama istemcisi kamerayı kullandığında, kamerayı kullanan önceki bir arama istemcisinden kamerayı alır. Önceki arama istemcisi bir cameraStoppedUnexpectedly UFD alır.
Ekran paylaşımı
Uygulamanın kapatılması, uygulamanın paylaşılmasını durdurmaz
Örneğin, Chromium'dan Microsoft Teams uygulamasını ekran olarak paylaştığınızı varsayalım. Ardından Teams uygulamasındaki "X" düğmesini seçerek kapatın. Teams uygulaması kapatılmayacaktır ve arka planda çalışmaya devam edecektir. Masaüstü çubuğunuzun sağ alt kısmında simgeyi görmeye devam edersiniz. Teams uygulaması hala çalıştığından, ekran paylaşımı devam ediyor demektir ve aramadaki uzak katılımcı Teams uygulamanızın ekran paylaşımını görmeye devam edebilir. Uygulamanın ekran paylaşımını durdurmak için masaüstü çubuğundaki simgesine sağ tıklamanız ve ardından çık'a tıklamanız gerekir. Ya da tarayıcıda "Paylaşımı durdur" düğmesine tıklamanız gerekir. Veya SDK'nın Call.stopScreenSharing() API'sini çağırın.
Safari yalnızca tam ekran paylaşımı yapabilir
Safari yalnızca ekranın tamamının ekran paylaşımına izin verir. Tam ekran, belirli masaüstü uygulaması veya belirli bir tarayıcı sekmesini ekran paylaşımına olanak tanıyan Chromium'un aksine.
macOS'ta ekran paylaşımı izinleri
macOS Safari veya macOS Chrome'da ekran paylaşımı yapmak için, işletim sistemi menüsündeki tarayıcılara ekran kaydı izinleri verilmelidir: "Sistem Tercihleri" -> "Güvenlik ve Gizlilik" -> "Ekran Kaydı."
Azure İletişim Hizmetleri yerel SDK en iyi yöntemleri
Bu bölümde, Azure İletişim Hizmetleri ses ve görüntülü arama yerel SDK'sı ile ilişkili en iyi yöntemler hakkında bilgi sağlanır.
Desteklenen platformlar
Arama Yerel SDK'larının en iyi işlevselliğini sağlamak için en düşük işletim sistemi platformu gereksinimleri aşağıdadır.
- Derleme zamanında iOS 10.0+ ve çalışma zamanında iOS 12.0+ desteği.
- Xcode 12.0+.
- iPadOS 13.0+ desteği.
Uygulama isteği cihaz izinleri
Arama yapmak veya arama almak için Arama Yerel SDK'larını kullanmak için, her platformun cihaz kaynaklarına erişme yetkisine sahip olması gerekir. Geliştirici olarak, kullanıcıdan erişim istemeli ve etkinleştirildiğinden emin olmalısınız. Tüketici bu erişim haklarını yetkilendir, bu nedenle daha önce izin verildiğini doğrulayın.
NSMicrophoneUsageDescription
mikrofon erişimi için.NSCameraUsageDescription
kamera erişimi için.
Günlükleri yapılandırma
Günlük dosyası alma öğreticisine göre günlüğe kaydetmeyi uygulamak her zamankinden daha kritiktir. Ayrıntılı günlükler, cihaz modellerine veya en düşük SDK ölçütlerine uyan işletim sistemi sürümlerine özgü sorunların tanılanmasında yardımcı olur. Günlükler API'sini günlükler olmadan yapılandırmaya başlayan geliştiricilerin Microsoft Desteği ekibinin çağrılarda hata ayıklama ve sorun giderme işlemlerine yardımcı olmasını öneririz.
Arama Kimliğini İzle
CallID
aramanın benzersiz kimliğidir. Tek bir çağrı sırasında bağlanan tüm katılımcılardan ve uç noktalardan gelen bağıntılı olayları tanımlar. Çoğu durumda günlükleri gözden geçirmek için bunu kullanırsınız ve Microsoft Desteği ekip arama sorunlarını gidermeye yardımcı olmak için bunu ister. Uygulamanızda yapılandırdığınız telemetri verilerini izlemeniz CallID
gerekir. Her platform için nasıl alındığını anlamak için sorun giderme kılavuzundaki yönergeleri izleyebilirsiniz.
UFD (Kullanıcıya Yönelik Tanılama) ve medya kalitesi istatistiklerine abone olma
- Arama sırasında müşterilerinizi etkileyen sorunun ne olabileceğini belirlemek üzere bir çağrının çeşitli özelliklerini incelemek için kullanılabilecek Kullanıcıya Yönelik Tanılama (UFD).
- Medya kalitesi istatistikleri , gelen ve giden arama ölçümleri için düşük düzey ses, video ve ekran paylaşım kalitesi ölçümlerini inceler. Aramanız sona erdikten sonra verileri toplamanızı ve işlem hattı alımınıza göndermenizi öneririz.
Hata İşleme
Çağrı veya uygulama sırasında herhangi bir hata varsa, yöntemler hata kodları içeren hata nesnelerini döndürür. Doğru hata işleme ve uyarıları görüntülemek için bu hata nesnelerinin kullanılması çok önemlidir. Çağrı durumları, çağrı hatasının ardındaki nedeni belirlemeye yardımcı olmak için hata kodları da döndürür. Sorunları çözmek için sorun giderme kılavuzuna başvurabilirsiniz.
Video Akışlarını Yönetme
Video artık kullanıcı arabiriminde VideoStreamRendererView
görüntülenmediğinde öğesini attığınızda emin olun. Akışın türünü belirlemek için kullanın VideoStreamType
.
Genel bellek yönetimi
Kaynakları Önceden Ayırma. İsteğe bağlı olarak değil, uygulamanızın başlangıç aşamasında çağrı istemcinizi ve gerekli kaynakları başlatın. Bu yaklaşım, bir çağrı başlatılırken gecikme süresini azaltır.
Doğru şekilde atın. Sistem kaynaklarını boşaltmak ve bellek sızıntılarını önlemek için kullandıktan sonra tüm çağrı nesnelerinin doğru şekilde atıldığından emin olun. Bellek sızıntılarını önleyen olayların aboneliğini kaldırdığından emin olun.
Başka bir işlem tarafından kullanılan kamera veya mikrofon
Mobil cihazlarda birden çok işlem kameraya veya mikrofona aynı anda erişmeye çalışırsa erişim isteme işleminin cihazın denetimini alacağını unutmayın. Sonuç olarak, ikinci işlem buna erişimi hemen kaybeder.
KULLANıCı Arabirimi Kitaplığı'nı kullanarak APP boyutunu iyileştirme
Yazılım geliştirmede kitaplıkların boyutunu iyileştirmek, özellikle uygulamalar giderek daha karmaşık hale geldikçe ve kaynak yoğunluklu hale geldikçe çeşitli nedenlerle çok önemlidir.
Uygulama Performansı: Daha küçük kitaplıklar bir uygulama tarafından yüklenmesi, ayrıştırılması ve yürütülmesi gereken kod miktarını azaltır. Bu, özellikle sınırlı kaynaklara sahip cihazlarda uygulamanızın başlangıç süresini ve genel performansını önemli ölçüde artırabilir.
Bellek Kullanımı: Kitaplık boyutunu en aza indirerek bir uygulamanın çalışma zamanı bellek ayak izini azaltabilirsiniz. Bu, belleğin genellikle kısıtlandığı mobil cihazlar için önemlidir. Daha düşük bellek kullanımı daha az sistem kilitlenmesine ve daha iyi çoklu görev performansına yol açabilir.
Sonraki adımlar
Daha fazla bilgi için aşağıdaki makaleleri inceleyin: