التشغيل السريع: بدء استخدام مكتبة واجهة المستخدم
ابدأ مع مكتبة واجهة مستخدم Azure Communication Services لدمج تجارب الاتصال بسرعة في تطبيقاتك. في هذا التشغيل السريع، تعرف على كيفية دمج المركبات في مكتبة واجهة المستخدم في أحد التطبيقات وإعداد التجربة لمستخدمي التطبيق.
تقدم مكتبة واجهة مستخدم خدمات الاتصالات تجربة اتصال كاملة مباشرة في التطبيق الخاص بك. ويهتم بالاتصال بالمكالمة، ويعين مشاركة المستخدم في المكالمة في الخلفية. بصفتك مطورا، يجب أن تقلق بشأن المكان الذي تريد فيه تشغيل تجربة الاتصال في تجربة مستخدم التطبيق. يأخذ المركب المستخدم من خلال إعداد أجهزته، والانضمام إلى المكالمة والمشاركة فيها، وتقديم مشاركين آخرين.
اعرض هذا الفيديو للحصول على نظرة عامة:
إشعار
للحصول على وثائق مفصلة وقوالب تشغيل سريعة حول مكتبة واجهة مستخدم الويب، تفضل بزيارة دفتر قصة مكتبة واجهة مستخدم الويب.
المتطلبات الأساسية
- حساب Azure مع اشتراك نشط. أنشئ حساباً مجاناً.
- تم نشر مورد Communication Services. إنشاء مورد Communication Services
- الرمز المميز لخدمات الاتصالات في Azure. انظر المثال
يمكنك الوصول إلى قوالب التشغيل السريع التالية
احصل على نموذج تطبيق Android لهذا التشغيل السريع في مصدر مفتوح مكتبة واجهة مستخدم Azure Communication Services لنظام التشغيل Android.
المتطلبات الأساسية
- حساب Azure واشتراك Azure نشط. أنشئ حساباً مجاناً.
- شغل نظام التشغيل فيAndroid Studio.
- مورد Azure Communication Services المنشور.
- رمز مميز للوصول إلى Azure Communication Services.
إعداد المشروع
أكمل الأقسام التالية لإعداد مشروع التشغيل السريع.
قم بإنشاء مشروع Android جديد
في Android Studio، أنشئ مشروعا جديدا:
في القائمة ملف، حدد مشروع جديد جديد>.
في New Project، حدد قالب مشروع Empty Activity .
حدد التالي.
في نشاط فارغ، قم بتسمية المشروع UILibraryQuickStart. بالنسبة للغة، حدد Java/Kotlin. للحصول على الحد الأدنى من SDK، حدد API 26: Android 8.0 (Oreo) أو أحدث.
حدد إنهاء.
قم بتثبيت الحِزَم
أكمل الأقسام التالية لتثبيت حزم التطبيقات المطلوبة.
إضافة تبعية
في ملف UILibraryQuickStart/app/build.gradle على مستوى التطبيق (في مجلد التطبيق)، أضف التبعية التالية:
dependencies {
...
implementation 'com.azure.android:azure-communication-ui-calling:+'
...
}
إضافة مستودعات Maven
مطلوب مستودعان Maven لدمج المكتبة:
- MavenCentral
- مستودع حزمة Azure
لإضافة المستودعات:
في البرامج النصية Gradle لمشروعك، تأكد من إضافة المستودعات التالية. بالنسبة إلى Android Studio (2020.*)،
repositories
يوجد فيsettings.gradle
، ضمنdependencyResolutionManagement(Gradle version 6.8 or greater)
. بالنسبة للإصدارات السابقة من Android Studio (4.*)،repositories
يكون على مستوىbuild.gradle
المشروع ، ضمنallprojects{}
.// dependencyResolutionManagement repositories { ... mavenCentral() maven { url "https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1" } ... }
مزامنة مشروعك مع ملفات Gradle. لمزامنة المشروع، في القائمة ملف ، حدد مزامنة المشروع مع ملفات Gradle.
إضافة زر إلى Activity_main.xml
في ملف التخطيط app/src/main/res/layout/activity_main.xml ، أضف التعليمات البرمجية التالية لإنشاء زر لبدء تشغيل المركب:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/startButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Launch"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
تهيئة المركب
لتهيئة المركب:
انتقل إلى
MainActivity
.أضف التعليمات البرمجية التالية لتهيئة المكونات المركبة للاتصال. استبدل
"GROUP_CALL_ID"
بمعرف المجموعة لمكالمتك. استبدل"DISPLAY_NAME"
باسمك. استبدل"USER_ACCESS_TOKEN"
برمزك المميز.
package com.example.uilibraryquickstart
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import com.azure.android.communication.common.CommunicationTokenCredential
import com.azure.android.communication.common.CommunicationTokenRefreshOptions
import com.azure.android.communication.ui.calling.CallComposite
import com.azure.android.communication.ui.calling.CallCompositeBuilder
import com.azure.android.communication.ui.calling.models.CallCompositeGroupCallLocator
import com.azure.android.communication.ui.calling.models.CallCompositeJoinLocator
import java.util.UUID
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val startButton: Button = findViewById(R.id.startButton)
startButton.setOnClickListener { l -> startCallComposite() }
}
private fun startCallComposite() {
val communicationTokenRefreshOptions = CommunicationTokenRefreshOptions({ fetchToken() }, true)
val communicationTokenCredential = CommunicationTokenCredential(communicationTokenRefreshOptions)
val locator: CallCompositeJoinLocator = CallCompositeGroupCallLocator(UUID.fromString("GROUP_CALL_ID"))
val callComposite: CallComposite = CallCompositeBuilder()
.applicationContext(this.applicationContext)
.credential(communicationTokenCredential)
.displayName("DISPLAY_NAME").build()
callComposite.launch(this, locator)
}
private fun fetchToken(): String? {
return "USER_ACCESS_TOKEN"
}
}
تشغيل التعليمات البرمجية
في Android Studio، أنشئ التطبيق وابدأ تشغيله:
- حدد Launch.
- اقبل الأذونات، ثم حدد إعدادات الجهاز والميكروفون والفيديو.
- حدد الانضمام إلى المكالمة.
نموذج الكائن
تتعامل الفئات والواجهات التالية مع بعض الميزات الرئيسية لواجهة مستخدم Azure Communication Services Android:
Name | الوصف |
---|---|
CallComposite | مكون مركب يعرض تجربة مكالمة مع معرض المشاركين وعناصر التحكم |
CallCompositeBuilder | المنشئ الذي يبني CallComposite بالخيارات |
CallCompositeJoinMeetingLocator | CallComposite تم تمرير التشغيل لبدء مكالمة جماعية |
CallCompositeTeamsMeetingLinkLocator | تم تمريره لبدء CallComposite التشغيل للانضمام إلى اجتماع Microsoft Teams |
CallCompositeLocalizationOptions | تم إدخاله كاختياري في CallCompositeBuilder لتعيين لغة المركب |
وظائف مكتبة واجهة المستخدم
احصل على التعليمات البرمجية لإنشاء ميزات الاتصال الرئيسية لتطبيق Android الخاص بك.
إعداد المصادقة
لإعداد المصادقة، داخل الدالة startCallComposite
، قم بتهيئة مثيل CommunicationTokenCredential
. استبدل "USER_ACCESS_TOKEN"
برمز الوصول المميز الخاص بك.
val callComposite: CallComposite = CallCompositeBuilder().build()
val communicationTokenRefreshOptions = CommunicationTokenRefreshOptions(this::fetchToken, true)
val communicationTokenCredential = CommunicationTokenCredential(communicationTokenRefreshOptions)
إنشاء CallComposite
لإنشاء CallComposite
، داخل الدالة startCallComposite
، قم بتهيئة CallCompositeBuilder
مثيل مع سياق التطبيق وبيانات الاعتماد واسم العرض.
val callComposite: CallComposite = CallCompositeBuilder()
.applicationContext(this.applicationContext)
.credential(communicationTokenCredential)
.displayName("DISPLAY_NAME").build()
إعداد مكالمة جماعية
لإعداد مكالمة جماعية، قم بتهيئة CallCompositeGroupCallLocator
.
الانضمام إلى اجتماع Teams
يمكنك الانضمام إلى اجتماع Teams باستخدام آليتين:
- عنوان URL لاجتماع Teams أو عنوان URL قصير لاجتماع Teams
- معرف اجتماع Teams ورمز المرور
يمكن استرداد ارتباط اجتماع Teams باستخدام واجهات برمجة تطبيقات Graph، وهو أمر مفصل في وثائق Graph.
تقبل Communication Services Calling SDK ارتباط اجتماع Teams كاملاً. يتم إرجاع هذا الارتباط كجزء من onlineMeeting
المورد، ويمكن الوصول إليه ضمنjoinWebUrl
الخاصية يمكنك أيضا الحصول على معلومات الاجتماع المطلوبة من عنوان URL للانضمام إلى الاجتماع في دعوة اجتماع Teams نفسها.
الانضمام عبر عنوان URL لاجتماع Teams
للانضمام إلى اجتماع Microsoft Teams، قم بتهيئة CallCompositeTeamsMeetingLinkLocator
.
الانضمام عبر معرف اجتماع Teams ورمز المرور
يحدد CallCompositeTeamsMeetingLinkLocator
موقع اجتماع باستخدام معرف الاجتماع ورمز المرور. يمكن العثور عليها ضمن معلومات الانضمام إلى اجتماع Teams.
يتكون معرف اجتماع Teams من 12 حرفا ويتكون من أرقام مجمعة في ثلاثات (أي 000 000 000 000
).
يتكون رمز المرور من 6 أحرف أبجدية (أي aBcDeF
). رمز المرور حساس لحالة الأحرف.
val locator = CallCompositeTeamsMeetingIdLocator("TEAMS_MEETING_ID", "TEAMS_MEETING_PASSCODE")
إعداد مكالمة الغرف
لإعداد مكالمة Azure Communication Services Rooms، قم بتهيئة CallCompositeRoomLocator
بمعرف غرفة.
أثناء وجودك على شاشة الإعداد، CallComposite
يمكنك تمكين الكاميرا والميكروفون لجميع المشاركين الذين يشاركون في أي دور غرفة. يتم استرداد دور المشارك الفعلي المحدث وقدراته من Azure Communication Services بمجرد توصيل المكالمة.
لمزيد من المعلومات حول الغرف، كيفية إنشاء غرفة وإدارتها، راجع التشغيل السريع للغرف
إعداد مكالمة صادرة 1:N وإشعارات دفع المكالمات الواردة
تدعم مكتبة واجهة المستخدم مكالمة VoIP واحد إلى واحد لطلب المستخدمين بواسطة معرف الاتصال. لتلقي المكالمات الواردة، تدعم مكتبة واجهة مستخدم المكالمات أيضا التسجيل في إشعارات PUSH. لمعرفة المزيد حول تكامل نظام Android وiOS الأساسي واستخدام واجهة برمجة التطبيقات، راجع كيفية إجراء مكالمة واحدة لواحد وتلقي إشعارات PUSH.
تشغيل المركب
لتشغيل واجهة مستخدم الاستدعاء، داخل الدالة startCallComposite
، قم باستدعاء launch
على المثيل CallComposite
.
الاشتراك في أحداث خطأ CallComposite
لتلقي أحداث الخطأ، اتصل setOnErrorHandler
ب CallComposite
.
قد يتم إرسال القيم التالية errorCode
إلى معالج الأخطاء:
CallCompositeErrorCode.CALL_JOIN_FAILED
CallCompositeErrorCode.CALL_END_FAILED
CallCompositeErrorCode.TOKEN_EXPIRED
CallCompositeErrorCode.CAMERA_FAILURE
CallCompositeErrorCode.MICROPHONE_PERMISSION_NOT_GRANTED
CallCompositeErrorCode.NETWORK_CONNECTION_NOT_AVAILABLE
يوضح المثال التالي حدث خطأ لحدث مركب فاشل.
callComposite.addOnErrorEventHandler { callCompositeErrorEvent ->
println(callCompositeErrorEvent.errorCode)
}
تطبيق تكوين نسق
لتغيير اللون الأساسي للمركب، قم بإنشاء نمط نسق جديد في src/main/res/values/themes.xml وsrc /main/res/values-night/themes.xml باستخدام AzureCommunicationUICalling.Theme
كنسق أصل. لتطبيق النسق، أدخل معرف النسق في CallCompositeBuilder
:
<style name="MyCompany.CallComposite" parent="AzureCommunicationUICalling.Theme">
<item name="azure_communication_ui_calling_primary_color">#27AC22</item>
<item name="azure_communication_ui_calling_primary_color_tint10">#5EC65A</item>
<item name="azure_communication_ui_calling_primary_color_tint20">#A7E3A5</item>
<item name="azure_communication_ui_calling_primary_color_tint30">#CEF0CD</item>
</style>
val callComposite: CallComposite =
CallCompositeBuilder()
.theme(R.style.MyCompany_CallComposite)
.build()
تطبيق تكوين الترجمة
لتغيير لغة المركب، استخدم CallCompositeSupportedLocale
لإنشاء CallCompositeLocalizationOptions
باستخدام Locale
. لتطبيق اللغة، أدخل تكوين الترجمة في CallCompositeBuilder
. بشكل افتراضي، تستخدم كافة التسميات النصية سلاسل اللغة الإنجليزية (en
). يمكنك استخدام CallCompositeLocalizationOptions
لتعيين قيمة مختلفة ل language
. بشكل افتراضي، تتضمن مكتبة واجهة المستخدم مجموعة من language
القيم التي يمكنك استخدامها مع مكونات واجهة المستخدم. CallCompositeSupportedLocale
يوفر لغة معتمدة. على سبيل المثال، للوصول إلى اللغة الإنجليزية، يمكنك استخدام CallCompositeSupportedLocale.EN
. CallCompositeSupportedLocale.getSupportedLocales()
يوفر قائمة بالكائنات المحلية للغات المدعومة.
import com.azure.android.communication.ui.calling.models.CallCompositeLocalizationOptions
import com.azure.android.communication.ui.calling.models.CallCompositeSupportedLocale
// CallCompositeSupportedLocale provides list of supported locale
val callComposite: CallComposite =
CallCompositeBuilder().localization(
CallCompositeLocalizationOptions(CallCompositeSupportedLocale.EN)
).build()
الاشتراك في حدث تغيير حالة استدعاء CallComposite
لتلقي أحداث حالة الاتصال التي تم تغييرها، اتصل addOnCallStateChangedEventHandler
ب CallComposite
.
يوضح المثال التالي حدثا لحالة مكالمة تم تغييرها.
callComposite.addOnCallStateChangedEventHandler { callStateChangedEvent ->
println(callStateChangedEvent.code)
}
تجاهل CallComposite والاشتراك في الحدث الذي تم تجاهله
لتلقي التجاهل، اتصل addOnDismissedEventHandler
ب CallComposite
. لتجاهل CallComposite، اتصل ب dismiss
.
يوضح المثال التالي حدثا لحالة مكالمة تم تغييرها.
callComposite.addOnDismissedEventHandler { callCompositeDismissedEvent ->
println(callCompositeDismissedEvent.errorCode)
}
callComposite.dismiss()
المزيد من الميزات
تحتوي قائمة حالات الاستخدام على معلومات مفصلة حول المزيد من الميزات.
إضافة إعلامات إلى تطبيق الأجهزة المحمولة
تتكامل Azure Communication Services مع Azure Event Grid وAzure Notification Hubs، بحيث يمكنك إضافة إشعارات دفع إلى تطبيقاتك في Azure. يمكنك استخدام الإعلامات المؤقتة لإرسال معلومات من التطبيق الخاص بك إلى الأجهزة المحمولة للمستخدمين. يمكن للإعلام المنبثق إظهار مربع حوار أو تشغيل صوت أو عرض واجهة مستخدم مكالمة واردة.
احصل على نموذج تطبيق iOS لهذا التشغيل السريع في مصدر مفتوح مكتبة واجهة مستخدم Azure Communication Services لنظام التشغيل iOS.
المتطلبات الأساسية
- حساب Azure واشتراك Azure نشط. أنشئ حساباً مجاناً.
- جهاز Mac يعمل ب Xcode 13 أو أحدث وشهادة مطور صالحة مثبتة في سلسلة المفاتيح. ينبغي أيضًا تركيب CocoaPods لإحضار التبعيات.
- مورد Azure Communication Services المنشور.
- رمز مميز للوصول إلى Azure Communication Services.
إعداد المشروع
أكمل الأقسام التالية لإعداد مشروع التشغيل السريع.
إنشاء مشروع Xcode جديد
في Xcode، قم بإنشاء مشروع جديد:
في القائمة ملف، حدد مشروع جديد>.
في اختيار قالب لمشروعك الجديد، حدد النظام الأساسي لنظام iOS وحدد قالب تطبيق التطبيق . يستخدم التشغيل السريع لوحات عمل UIKit. لا ينشئ التشغيل السريع الاختبارات، لذا يمكنك إلغاء تحديد خانة الاختيار تضمين الاختبارات .
في اختيار خيارات لمشروعك الجديد، لاسم المنتج، أدخل UILibraryQuickStart. بالنسبة للواجهة، حدد لوحة العمل.
تثبيت الحزمة والتبعيات
(اختياري) بالنسبة إلى MacBook مع M1، قم بتثبيت Rosetta وتمكينها في Xcode.
في دليل جذر المشروع الخاص بك، قم بتشغيل
pod init
لإنشاء Podfile. إذا واجهت خطأ، فقم بتحديث CocoaPods إلى الإصدار الحالي.أضف التعليمات البرمجية التالية إلى Podfile الخاص بك. استبدل
UILibraryQuickStart
باسم المشروع الخاص بك.platform :ios, '15.0' target 'UILibraryQuickStart' do use_frameworks! pod 'AzureCommunicationUICalling' end
شغّل
pod install --repo-update
.في Xcode، افتح الملف generated.xcworkspace* .
طلب الوصول إلى أجهزة الجهاز
للوصول إلى أجهزة الجهاز، بما في ذلك الميكروفون والكاميرا، قم بتحديث قائمة خصائص معلومات التطبيق. تعيين القيمة المقترنة إلى سلسلة مضمنة في مربع الحوار الذي يستخدمه النظام لطلب الوصول من المستخدم.
انقر بزر الماوس الأيمن فوق
Info.plist
entry of the project tree and select ثم حدد Open As>Source Code. أضف الأسطر التالية إلى قسم المستوى<dict>
الأعلى، ثم احفظ الملف.<key>NSCameraUsageDescription</key> <string></string> <key>NSMicrophoneUsageDescription</key> <string></string>
فيما يلي مثال على التعليمات البرمجية
Info.plist
المصدر في ملف Xcode:للتحقق من إضافة طلبات أذونات الجهاز بشكل صحيح، حدد Open As>Property List. تحقق من أن قائمة خصائص المعلومات تبدو مشابهة للمثال التالي:
إيقاف تشغيل Bitcode
في مشروع Xcode، ضمن Build Settings، قم بتعيين الخيار Enable Bitcode إلى No. للعثور على الإعداد، قم بتغيير عامل التصفية من أساسي إلى الكل أو استخدم شريط البحث.
تهيئة المركب
لتهيئة المركب:
انتقل إلى
ViewController
.أضف التعليمات البرمجية التالية لتهيئة المكونات المركبة لاستدعاء. استبدل
<GROUP_CALL_ID>
إما بمعرف المجموعة لمكالمتك أوUUID()
بإنشاء معرف مجموعة للمكالمة. استبدل<DISPLAY_NAME>
باسمك. (حد طول السلسلة ل<DISPLAY_NAME>
هو 256 حرفا.) استبدل<USER_ACCESS_TOKEN>
برمز الوصول المميز الخاص بك.import UIKit import AzureCommunicationCalling import AzureCommunicationUICalling class ViewController: UIViewController { private var callComposite: CallComposite? override func viewDidLoad() { super.viewDidLoad() let button = UIButton(frame: CGRect(x: 100, y: 100, width: 200, height: 50)) button.contentEdgeInsets = UIEdgeInsets(top: 10.0, left: 20.0, bottom: 10.0, right: 20.0) button.layer.cornerRadius = 10 button.backgroundColor = .systemBlue button.setTitle("Start Experience", for: .normal) button.addTarget(self, action: #selector(startCallComposite), for: .touchUpInside) button.translatesAutoresizingMaskIntoConstraints = false self.view.addSubview(button) button.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true button.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true } @objc private func startCallComposite() { let callCompositeOptions = CallCompositeOptions(displayName: "<DISPLAY_NAME>") let communicationTokenCredential = try! CommunicationTokenCredential(token: "<USER_ACCESS_TOKEN>") callComposite = CallComposite(credential: communicationTokenCredential, withOptions: callCompositeOptions) callComposite?.launch(locator: .groupCall(groupId: UUID(uuidString: "<GROUP_CALL_ID>")!)) } }
تشغيل التعليمات البرمجية
لإنشاء التطبيق وتشغيله على جهاز محاكاة iOS، حدد تشغيل المنتج>أو استخدم اختصار لوحة المفاتيح (⌘-R). بعد ذلك، جرب تجربة الاتصال على المحاكي:
حدد بدء التجربة.
اقبل أذونات الصوت، ثم حدد إعدادات الجهاز والميكروفون والفيديو.
حدد بدء المكالمة.
نموذج الكائن
تتعامل الفئات والواجهات التالية مع بعض الميزات الرئيسية لمكتبة عميل واجهة مستخدم Azure Communication Services:
Name | الوصف |
---|---|
CallComposite | المكون الذي يعرض تجربة مكالمة يحتوي على معرض المشاركين وعناصر التحكم |
CallCompositeOptions | إعدادات خيارات مثل النسق ومعالجة الأحداث |
خيارات النسق | خيارات التخصيص للنسق المركب |
عمليات الترجمة | خيارات اللغة للمركب |
وظائف مكتبة واجهة المستخدم
احصل على التعليمات البرمجية لإنشاء ميزات الاتصال الرئيسية لتطبيق iOS الخاص بك.
إعداد المصادقة
لإعداد المصادقة، داخل الدالة startCallComposite
، قم بتهيئة مثيل CommunicationTokenCredential
. استبدل <USER_ACCESS_TOKEN>
برمز الوصول المميز الخاص بك.
let communicationTokenCredential = try! CommunicationTokenCredential(token: "<USER_ACCESS_TOKEN>")
إذا لم يكن لديك بالفعل رمز مميز للوصول، فبادر بإنشاء رمز مميز للوصول إلى Azure Communication Services.
إنشاء CallComposite
لإنشاء CallComposite
، داخل الدالة startCallComposite
، قم بتهيئة CallCompositeOptions
مثيل مع اختياري <DISPLAY_NAME>
ومثيل CommunicationTokenCredential
:
@objc private func startCallComposite() {
let callCompositeOptions = CallCompositeOptions(displayName: "<DISPLAY_NAME>")
let communicationTokenCredential = try! CommunicationTokenCredential(token: "<USER_ACCESS_TOKEN>")
callComposite = CallComposite(credential: communicationTokenCredential, withOptions: callCompositeOptions)
}
إعداد مكالمة جماعية
لإعداد مكالمة جماعية، داخل الدالة startCallComposite
، قم بتهيئة محدد .groupCall
موقع. استبدل <GROUP_CALL_ID>
بمعرف المجموعة لمكالمتك.
// let uuid = UUID() to create a new call
let uuid = UUID(uuidString: "<GROUP_CALL_ID>")!
let locator = .groupCall(groupId: uuid)
لمزيد من المعلومات حول استخدام معرف مجموعة للمكالمات، راجع إدارة المكالمات.
الانضمام إلى اجتماع Teams
يمكنك الانضمام إلى اجتماع Teams باستخدام آليتين:
- عنوان URL لاجتماع Teams أو عنوان URL قصير لاجتماع Teams
- معرف اجتماع Teams ورمز المرور
يمكن استرداد ارتباط اجتماع Teams باستخدام واجهات برمجة تطبيقات Graph، وهو أمر مفصل في وثائق Graph.
تقبل Communication Services Calling SDK ارتباط اجتماع Teams كاملاً. يتم إرجاع هذا الارتباط كجزء من onlineMeeting
المورد، ويمكن الوصول إليه ضمنjoinWebUrl
الخاصية يمكنك أيضا الحصول على معلومات الاجتماع المطلوبة من عنوان URL للانضمام إلى الاجتماع في دعوة اجتماع Teams نفسها.
الانضمام عبر عنوان URL لاجتماع Teams
للانضمام إلى اجتماع Microsoft Teams، داخل الدالة startCallComposite
، قم بتهيئة مثيل لمحدد .teamsMeeting
الموقع. استبدل <TEAMS_MEETING_LINK>
بارتباط اجتماع Teams لمكالمتك. استبدل <DISPLAY_NAME>
باسمك.
let locator = .teamsMeeting(teamsLink: "<TEAMS_MEETING_LINK>")
الانضمام عبر معرف اجتماع Teams ورمز المرور
يحدد teamMeetingId
موقع اجتماع باستخدام معرف الاجتماع ورمز المرور. يمكن العثور عليها ضمن معلومات الانضمام إلى اجتماع Teams.
يتكون معرف اجتماع Teams من 12 حرفا ويتكون من أرقام مجمعة في ثلاثات (أي 000 000 000 000
).
يتكون رمز المرور من 6 أحرف أبجدية (أي aBcDeF
). رمز المرور حساس لحالة الأحرف.
let locator = .teamsMeetingId(meetingId: "<TEAMS_MEETING_ID>", meetingPasscode: "<TEAMS_MEETING_PASSCODE>" )
إعداد مكالمة غرفة
لإعداد مكالمة Azure Communication Services Rooms، قم بتهيئة CallCompositeRoomLocator
بمعرف غرفة.
أثناء وجودك على شاشة الإعداد، CallComposite
سيمكن الكاميرا والميكروفون لجميع المشاركين الذين يشاركون في أي دور غرفة. يتم استرداد دور المشارك الفعلي المحدث وقدراته من Azure Communication Services بمجرد توصيل المكالمة.
لمزيد من المعلومات حول الغرف، كيفية إنشاء غرفة وإدارتها، راجع البدء السريع للغرف
let locator = .roomCall(roomId: "<ROOM_ID>")
إعداد مكالمة صادرة 1:N وإشعارات دفع المكالمات الواردة
تدعم مكتبة واجهة المستخدم مكالمة VoIP واحد إلى واحد لطلب المستخدمين بواسطة معرف الاتصال. لتلقي المكالمات الواردة، تدعم مكتبة واجهة مستخدم المكالمات أيضا التسجيل في إشعارات PUSH. لمعرفة المزيد حول تكامل نظام Android وiOS الأساسي واستخدام واجهة برمجة التطبيقات، راجع كيفية إجراء مكالمة واحدة لواحد وتلقي إشعارات PUSH.
تشغيل المركب
داخل الدالة startCallComposite
، قم باستدعاء launch
على المثيل CallComposite
:
callComposite?.launch(locator: locator)
الاشتراك في الأحداث
يمكنك تنفيذ عمليات الإغلاق للعمل على الأحداث المركبة. قد يتم إرسال رموز الخطأ التالية إلى معالج الأخطاء:
callJoin
callEnd
cameraFailure
tokenExpired
microphonePermissionNotGranted
networkConnectionNotAvailable
يوضح المثال التالي حدث خطأ لحدث مركب فاشل:
callComposite?.events.onError = { error in
print("CallComposite failed with error:\(error)")
}
تطبيق خيارات النسق
لتخصيص تجربة الاتصال في التطبيق الخاص بك، قم بإنشاء خيارات نسق مخصصة تنفذ ThemeOptions
البروتوكول. قم بتضمين مثيل للفئة الجديدة في CallCompositeOptions
:
class CustomThemeOptions: ThemeOptions {
var primaryColor: UIColor {
return UIColor.red
}
}
let callCompositeOptions = CallCompositeOptions(theme: CustomThemeOptions())
لمزيد من المعلومات حول كيفية عمل النمذجة، راجع دليل التحوين.
تطبيق خيارات الترجمة
لتغيير اللغة في المركب، أنشئ خيارات الترجمة المخصصة وقم بتضمينها في CallCompositeOptions
. بشكل افتراضي، تستخدم كافة التسميات النصية سلاسل اللغة الإنجليزية (SupportedLocale.en
). يمكنك استخدام LocalizationOptions
لتعيين قيمة مختلفة ل locale
. بشكل افتراضي، تتضمن مكتبة واجهة المستخدم مجموعة من locale
القيم التي يمكنك استخدامها مع مكونات واجهة المستخدم. SupportedLocale.values
يوفر قائمة بجميع اللغات المدعومة.
في المثال التالي، يتم ترجمة المركب إلى الفرنسية (fr
):
// Option1: Use IntelliSense to get locales UI Library supports.
let localizationOptions = LocalizationOptions(locale: SupportedLocale.frFR)
// Option2: If UI Library doesn't support the locale you set, the Swift Locale struct defaults to English.
let localizationOptions = LocalizationOptions(locale: Locale(identifier: "fr-FR"))
let callCompositeOptions = CallCompositeOptions(localization: localizationOptions)
لمزيد من المعلومات حول الترجمة وللقائمة باللغات المدعومة، راجع دليل الترجمة.
الاشتراك في حدث تغيير حالة استدعاء CallComposite
يمكنك تنفيذ عمليات الإغلاق للعمل على الأحداث المركبة. يتم إرسال حالات الاستدعاء إلى معالج حالة الاستدعاء الذي تم تغييره.
يوضح المثال التالي حدثا لحالة مكالمة تم تغييرها.
callComposite?.events.onCallStateChanged = { callStateEvent in
print("CallComposite call state changed:\(callStateEvent.requestString)")
}
تجاهل CallComposite والاشتراك في الحدث الذي تم تجاهله
لتجاهل CallComposite، اتصل ب dismiss
. يتم إرسال حدث التجاهل التالي عند استبعاد مركب الاستدعاء:
callComposite?.events.onDismissed = { dismissed in
print("CallComposite dismissed:\(dismissed.errorCode)")
}
callComposite.dismiss()
المزيد من الميزات
تحتوي قائمة حالات الاستخدام على معلومات مفصلة حول المزيد من الميزات.
إضافة إعلامات إلى تطبيق الأجهزة المحمولة
تتكامل Azure Communication Services مع Azure Event Grid وAzure Notification Hubs، بحيث يمكنك إضافة إشعارات دفع إلى تطبيقاتك في Azure. يمكنك استخدام الإعلامات المؤقتة لإرسال معلومات من التطبيق الخاص بك إلى الأجهزة المحمولة للمستخدمين. يمكن للإعلام المنبثق إظهار مربع حوار أو تشغيل صوت أو عرض واجهة مستخدم مكالمة واردة.
تنظيف الموارد
إذا كنت ترغب في تنظيف وإزالة اشتراك Communication Services، يمكنك حذف المورد أو مجموعة الموارد.
يؤدي حذف مجموعة الموارد إلى حذف أية موارد أخرى مقترنة بها أيضًا.
تعرّف على المزيد حول تنظيف الموارد.