Aracılığıyla paylaş


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ı microphoneMuteUnexpectedlyile 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 kullanmadan DeviceManager ö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

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: