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:
- Kullanıcının daha önce erişimi reddettidiğini algılayın.
- 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çinNSCameraUsageDescription
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.