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 Arama Web SDK'sı için en iyi yöntemler

Bu bölümde, sesli ve görüntülü arama için Azure İletişim Hizmetleri Arama Web (JavaScript) SDK'sı ile ilişkili en iyi yöntemler hakkında bilgi sağlanır.

Arama devam ederken bir mikrofon takın veya cihaz yöneticisinden bir mikrofonu etkinleştirin

bir Azure İletişim Hizmetleri çağrısının başında kullanılabilir mikrofon olmadığında ve ardından bir mikrofon kullanılabilir olduğunda, değişiklik bir noMicrophoneDevicesEnumerated tanılama olayı oluşturur. Bu olay gerçekleştiğinde, uygulamanızın cihazları listelemek için kullanıcı onayı almak için çağrısı askDevicePermission yapması gerekir. Kullanıcı daha sonra mikrofonun sesini kapatabilir veya açabilir.

VideoStreamRendererView'ı atma

İletişim Hizmetleri uygulamaları artık gerekli olmadığında öğesini veya üst VideoStreamRenderer örneğini atmalıdırVideoStreamRendererView.

Onbeeunload olayında aramayı kapatma

Olay yayıldığında onbeforeunload uygulamanız çağrılmalıdırcall.hangup.

Birden çok sekmede birden çok çağrıyı işleme

Uygulamanızın mobil cihazlarda aynı anda birden çok tarayıcı sekmesinden gelen çağrılara bağlanmaması gerekir. Bu durum, bir cihazdaki mikrofon ve kamera için kaynak ayırma nedeniyle tanımsız davranışlara neden olabilir. Geliştiricilerin yeni bir arama başlatmadan önce arka planda tamamlanan aramaları her zaman kapatmalarını öneririz.

Bir telefon araması geldiğinde bir aramanın işletim sistemi sesini kapatmayı işleme

Azure İletişim Hizmetleri arama sırasında (hem iOS hem de Android için), bir telefon araması gelirse veya sesli yardımcı etkinleştirilirse, işletim sistemi kullanıcının mikrofonunu ve kamerasını 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 videonun açılması ve yeniden başlatılması için kullanıcı eylemi gerekir.

Mikrofonun beklenmedik bir şekilde sesinin kapatıldığına ilişkin bildirimi dinlemek için kalite olayını microphoneMuteUnexpectedly kullanabilirsiniz. Bir aramaya düzgün bir şekilde yeniden bağlanmak için SDK 1.2.3-beta.1 veya sonraki bir sürümü 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(); .

Cihazları yönetme

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. Bunu yaparsanı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 döndürür false . Bu senaryoda uygulamanızın şunları yapması gerekir:

  1. Kullanıcının daha önce erişimi reddettidiğini algılayın.
  2. Kullanıcıya belirli bir cihaz türüne el ile sıfırlama veya açıkça erişim izni verme talimatı verin.

Başka bir işlemin kullandığı bir kameranın davranışını yönetme

  • Windows Chrome ve Windows Microsoft Edge'de: Bir aramayı video açık olarak başlatır, katılır veya kabul ederseniz ve başka bir işlem (web SDK'sının üzerinde çalıştığı tarayıcı dışında) kamera cihazını kullanıyorsa, arama yalnızca ses ile başlatılır ve video olmaz. cameraStartFailed Kamera başlatılamadığından Kullanıcıya Yönelik Tanılama bayrağı oluşturulur.

    Aynı durum, aramanın ortasında görüntülü aramanın açılması 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. Ardından video arama için açılır ve uzak katılımcılar videoyu görmeye başlar.

    İşletim sistemi işlemlerin ve iş parçacıklarının kamera cihazını paylaşmasına olanak sağladığından bu sorun macOS Chrome veya macOS Safari'de mevcut değildir.

  • Mobil cihazlarda: ProcessA, ProcessB tarafından kullanılırken kamera cihazını isterse ProcessA kamera cihazını sollar ve ProcessB cihazı 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 çağrı istemcisi Kullanıcıya cameraStoppedUnexpectedly Yönelik Tanılama bayrağı alır.

Ekran paylaşımını yönetme

Bir uygulamanın kapatılması, uygulamanın paylaşılmasını engellemez

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. Pencere kapalı olsa da Teams uygulaması arka planda çalışmaya devam eder. Simge hala masaüstü görev çubuğunda görünür. Teams uygulaması çalışmaya devam ettiğinden, uzak katılımcılarla ekran paylaşımı devam ediyor.

Uygulamanın ekran paylaşımını durdurmak için şu eylemlerden birini gerçekleştirmeniz gerekir:

  • Masaüstü görev çubuğunda uygulamanın simgesine sağ tıklayın ve ardından Çık'ı seçin.
  • Tarayıcıda Paylaşımı durdur düğmesini seçin.
  • SDK'nın API işlemini çağırın Call.stopScreenSharing() .

Safari yalnızca tam ekran paylaşımı yapabilir

Safari yalnızca ekranın tamamı için ekran paylaşımına izin verir. Bu davranış, tam ekranı, belirli bir masaüstü uygulamasını veya belirli bir tarayıcı sekmesini ekran olarak paylaşmanızı sağlayan Chromium'un aksinedir.

macOS'ta ekran paylaşımı izinleri verilmektedir

macOS Safari veya macOS Chrome'da ekran paylaşımı yapmak için işletim sistemi menüsündeki tarayıcılara gerekli izinleri verin: Sistem Tercihleri>Güvenlik ve Gizlilik>Ekranı Kaydı.

Azure İletişim Hizmetleri Yerel SDK'sını Çağırmak için en iyi yöntemler

Bu bölümde, sesli ve görüntülü arama için Azure İletişim Hizmetleri Yerel SDK'sını Çağırma ile ilişkili en iyi yöntemler hakkında bilgi sağlanır.

Desteklenen platformlar

Burada, Yerel SDK Çağrısının en iyi işlevselliğini sağlamak için en düşük işletim sistemi platformu gereksinimleri yer alı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 istekleri için cihaz izinlerini doğrulama

Arama Yerel SDK'sını çağrı yapmak veya almak için kullanmak için tüketicilerin cihaz kaynaklarına erişmek için her platformu yetkilendirmesi gerekir. Geliştirici olarak, kullanıcıdan erişim istemeli ve izinlerin etkinleştirildiğinden emin olmalısınız. Tüketici bu erişim haklarına yetki verdiğinden, şu anda gerekli izinlere sahip olduğunu doğrulayın.

  • NSMicrophoneUsageDescription mikrofon erişimi için
  • NSCameraUsageDescription kamera erişimi için

Günlükleri yapılandırma

Günlük dosyalarını almayla ilgili öğreticide açıklandığı gibi günlüğe kaydetmenin uygulanması 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. Geliştiricilerin Günlükler API'sini kullanarak günlükleri yapılandırmalarını öneririz. Günlükler olmadan, Microsoft destek ekibi aramalarda hata ayıklamaya ve sorun gidermeye yardımcı olamaz.

CallID'yi izleme

CallID aramanın benzersiz kimliğidir. Tek bir çağrı sırasında bağlanan tüm katılımcılardan ve uç noktalardan bağıntılı olayları tanımlar. Çoğu durumda, günlükleri gözden geçirmek için bunu kullanırsınız. Microsoft Desteği ekibi aramalarda sorun gidermeye yardımcı olması için bunu ister.

Uygulamanızda yapılandırdığınız telemetrideki değeri izlemeniz CallID gerekir. Her platformun değerini almayı anlamak için sorun giderme kılavuzundaki yönergeleri izleyin.

Kullanıcıya Yönelik Tanılama ve medya kalitesi istatistiklerine abone olma

Kullanıcı deneyimini geliştirmeye yardımcı olmak için bu Azure İletişim Hizmetleri özelliklerini kullanabilirsiniz:

  • Kullanıcıya Yönelik Tanılama: Müşterilerinizi etkileyen sorunların nedenini belirlemek için bir çağrının özelliklerini inceleyin.
  • Medya kalitesi istatistikleri: Gelen ve giden arama ölçümleri için düşük düzey ses, video ve ekran paylaşım kalitesi ölçümlerini inceleyin. Bir çağrı sona erdikten sonra verileri toplamanızı ve işlem hattı alımınıza göndermenizi öneririz.

Hata işlemeyi yönetme

Çağrı veya uygulama sırasında herhangi bir hata varsa, yöntemler hata kodları içeren hata nesneleri 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ı hatalarının ardındaki nedenleri 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

Kullanıcı arabirimi artık videoyu görüntülediğinde attığınızda VideoStreamRendererView emin olun. Akışın türünü belirlemek için kullanın VideoStreamType .

Genel bellek yönetimi gerçekleştirme

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, çağrı başlatma 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 tüm çağrı nesnelerini kullanımdan sonra atın. Bellek sızıntılarına neden olabilecek olayların aboneliğini kaldırmayı unutmayın.

İşlemlerin kameraya veya mikrofona nasıl eriştir olduğunu göz önünde bulundurun

Mobil cihazlarda, birden çok işlem kameraya veya mikrofona aynı anda erişmeye çalışırsa, erişim isteğinde bulunmaya yönelik ilk işlem cihazın denetimini alır. Sonuç olarak, ikinci işlem buna erişimi hemen kaybeder.

Kitaplık boyutunu iyileştirme

Yazılım geliştirmede kitaplıkların boyutunu iyileştirmek, özellikle de uygulamalar daha karmaşık ve kaynak yoğunluklu hale geldikçe aşağıdaki nedenlerle çok önemlidir:

  • Uygulama performansı: Daha küçük kitaplıklar, bir uygulamanın yüklemesi, ayrıştırması ve yürütmesi gereken kod miktarını azaltır. Bu azaltma, özellikle kaynakları sınırlı olan 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 azalma, 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.

Daha fazla bilgi için bkz.