التشغيل السريع: بدء استخدام مكتبة واجهة المستخدم

ابدأ مع مكتبة واجهة مستخدم Azure Communication Services لدمج تجارب الاتصال بسرعة في تطبيقاتك. في هذا التشغيل السريع، تعرف على كيفية دمج المركبات في مكتبة واجهة المستخدم في أحد التطبيقات وإعداد التجربة لمستخدمي التطبيق.

تقدم مكتبة واجهة مستخدم خدمات الاتصالات تجربة اتصال كاملة مباشرة في التطبيق الخاص بك. ويهتم بالاتصال بالمكالمة، ويعين مشاركة المستخدم في المكالمة في الخلفية. بصفتك مطورا، يجب أن تقلق بشأن المكان الذي تريد فيه تشغيل تجربة الاتصال في تجربة مستخدم التطبيق. يأخذ المركب المستخدم من خلال إعداد أجهزته، والانضمام إلى المكالمة والمشاركة فيها، وتقديم مشاركين آخرين.

اعرض هذا الفيديو للحصول على نظرة عامة:

إشعار

للحصول على وثائق مفصلة وقوالب تشغيل سريعة حول مكتبة واجهة مستخدم الويب، تفضل بزيارة دفتر قصة مكتبة واجهة مستخدم الويب.

المتطلبات الأساسية

يمكنك الوصول إلى قوالب التشغيل السريع التالية

احصل على نموذج تطبيق Android لهذا التشغيل السريع في مصدر مفتوح مكتبة واجهة مستخدم Azure Communication Services لنظام التشغيل Android.

المتطلبات الأساسية

إعداد المشروع

أكمل الأقسام التالية لإعداد مشروع التشغيل السريع.

قم بإنشاء مشروع Android جديد

في Android Studio، أنشئ مشروعا جديدا:

  1. في القائمة ملف، حدد مشروع جديد جديد>.

  2. في New Project، حدد قالب مشروع Empty Activity .

    لقطة شاشة تعرض مربع حوار مشروع جديد في Android Studio مع تحديد نشاط فارغ.

  3. حدد التالي.

  4. في نشاط فارغ، قم بتسمية المشروع UILibraryQuickStart. بالنسبة للغة، حدد Java/Kotlin. للحصول على الحد الأدنى من SDK، حدد API 26: Android 8.0 (Oreo) أو أحدث.

  5. حدد إنهاء.

    لقطة شاشة تعرض خيارات المشروع الجديدة والزر إنهاء المحدد.

قم بتثبيت الحِزَم

أكمل الأقسام التالية لتثبيت حزم التطبيقات المطلوبة.

إضافة تبعية

في ملف UILibraryQuickStart/app/build.gradle على مستوى التطبيق (في مجلد التطبيق)، أضف التبعية التالية:

dependencies {
    ...
    implementation 'com.azure.android:azure-communication-ui-calling:+'
    ...
}

إضافة مستودعات Maven

مطلوب مستودعان Maven لدمج المكتبة:

  • MavenCentral
  • مستودع حزمة Azure

لإضافة المستودعات:

  1. في البرامج النصية 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"
        }
        ...
    }
    
  2. مزامنة مشروعك مع ملفات 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>

تهيئة المركب

لتهيئة المركب:

  1. انتقل إلى MainActivity.

  2. أضف التعليمات البرمجية التالية لتهيئة المكونات المركبة للاتصال. استبدل "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، أنشئ التطبيق وابدأ تشغيله:

  1. حدد Launch.
  2. اقبل الأذونات، ثم حدد إعدادات الجهاز والميكروفون والفيديو.
  3. حدد الانضمام إلى المكالمة.

الرسوم المتحركة ل GIF التي تعرض مثالا على كيفية تشغيل المشروع على جهاز Android.

نموذج الكائن

تتعامل الفئات والواجهات التالية مع بعض الميزات الرئيسية لواجهة مستخدم 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.

val locator = CallCompositeGroupCallLocator(UUID.fromString("GROUP_CALL_ID"))

الانضمام إلى اجتماع Teams

يمكنك الانضمام إلى اجتماع Teams باستخدام آليتين:

  • عنوان URL لاجتماع Teams أو عنوان URL قصير لاجتماع Teams
  • معرف اجتماع Teams ورمز المرور

يمكن استرداد ارتباط اجتماع Teams باستخدام واجهات برمجة تطبيقات Graph، وهو أمر مفصل في وثائق Graph.

تقبل Communication Services Calling SDK ارتباط اجتماع Teams كاملاً. يتم إرجاع هذا الارتباط كجزء من onlineMeeting المورد، ويمكن الوصول إليه ضمنjoinWebUrl الخاصية يمكنك أيضا الحصول على معلومات الاجتماع المطلوبة من عنوان URL للانضمام إلى الاجتماع في دعوة اجتماع Teams نفسها.

الانضمام عبر عنوان URL لاجتماع Teams

للانضمام إلى اجتماع Microsoft Teams، قم بتهيئة CallCompositeTeamsMeetingLinkLocator.

val locator = CallCompositeTeamsMeetingLinkLocator("TEAMS_MEETING_LINK")

الانضمام عبر معرف اجتماع 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 بمجرد توصيل المكالمة.

لمزيد من المعلومات حول الغرف، كيفية إنشاء غرفة وإدارتها، راجع التشغيل السريع للغرف

val locator = CallCompositeRoomLocator("<ROOM_ID>")

إعداد مكالمة صادرة 1:N وإشعارات دفع المكالمات الواردة

تدعم مكتبة واجهة المستخدم مكالمة VoIP واحد إلى واحد لطلب المستخدمين بواسطة معرف الاتصال. لتلقي المكالمات الواردة، تدعم مكتبة واجهة مستخدم المكالمات أيضا التسجيل في إشعارات PUSH. لمعرفة المزيد حول تكامل نظام Android وiOS الأساسي واستخدام واجهة برمجة التطبيقات، راجع كيفية إجراء مكالمة واحدة لواحد وتلقي إشعارات PUSH.

تشغيل المركب

لتشغيل واجهة مستخدم الاستدعاء، داخل الدالة startCallComposite ، قم باستدعاء launch على المثيل CallComposite .

callComposite.launch(activityContext, locator)

الاشتراك في أحداث خطأ 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.

المتطلبات الأساسية

إعداد المشروع

أكمل الأقسام التالية لإعداد مشروع التشغيل السريع.

إنشاء مشروع Xcode جديد

في Xcode، قم بإنشاء مشروع جديد:

  1. في القائمة ملف، حدد مشروع جديد>.

  2. في اختيار قالب لمشروعك الجديد، حدد النظام الأساسي لنظام iOS وحدد قالب تطبيق التطبيق . يستخدم التشغيل السريع لوحات عمل UIKit. لا ينشئ التشغيل السريع الاختبارات، لذا يمكنك إلغاء تحديد خانة الاختيار تضمين الاختبارات .

    لقطة شاشة تعرض مربع حوار مشروع Xcode الجديد، مع تحديد iOS وقالب التطبيق.

  3. في اختيار خيارات لمشروعك الجديد، لاسم المنتج، أدخل UILibraryQuickStart. بالنسبة للواجهة، حدد لوحة العمل.

    لقطة شاشة تعرض تعيين خيارات مشروع جديد في Xcode.

تثبيت الحزمة والتبعيات

  1. (اختياري) بالنسبة إلى MacBook مع M1، قم بتثبيت Rosetta وتمكينها في Xcode.

  2. في دليل جذر المشروع الخاص بك، قم بتشغيل pod init لإنشاء Podfile. إذا واجهت خطأ، فقم بتحديث CocoaPods إلى الإصدار الحالي.

  3. أضف التعليمات البرمجية التالية إلى Podfile الخاص بك. استبدل UILibraryQuickStart باسم المشروع الخاص بك.

    platform :ios, '15.0'
    
    target 'UILibraryQuickStart' do
        use_frameworks!
        pod 'AzureCommunicationUICalling'
    end
    
  4. شغّل pod install --repo-update.

  5. في Xcode، افتح الملف generated.xcworkspace* .

طلب الوصول إلى أجهزة الجهاز

للوصول إلى أجهزة الجهاز، بما في ذلك الميكروفون والكاميرا، قم بتحديث قائمة خصائص معلومات التطبيق. تعيين القيمة المقترنة إلى سلسلة مضمنة في مربع الحوار الذي يستخدمه النظام لطلب الوصول من المستخدم.

  1. انقر بزر الماوس الأيمن فوق 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:

    لقطة شاشة تعرض مثالا على التعليمات البرمجية المصدر لقائمة المعلومات في ملف Xcode.

  2. للتحقق من إضافة طلبات أذونات الجهاز بشكل صحيح، حدد Open As>Property List. تحقق من أن قائمة خصائص المعلومات تبدو مشابهة للمثال التالي:

    لقطة شاشة تعرض خصوصية جهاز الكاميرا والميكروفون في Xcode.

إيقاف تشغيل Bitcode

في مشروع Xcode، ضمن Build Settings، قم بتعيين الخيار Enable Bitcode إلى No. للعثور على الإعداد، قم بتغيير عامل التصفية من أساسي إلى الكل أو استخدم شريط البحث.

لقطة شاشة تعرض خيار Build Settings لإيقاف تشغيل Bitcode.

تهيئة المركب

لتهيئة المركب:

  1. انتقل إلى ViewController.

  2. أضف التعليمات البرمجية التالية لتهيئة المكونات المركبة لاستدعاء. استبدل <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). بعد ذلك، جرب تجربة الاتصال على المحاكي:

  1. حدد بدء التجربة.

  2. اقبل أذونات الصوت، ثم حدد إعدادات الجهاز والميكروفون والفيديو.

  3. حدد بدء المكالمة.

رسم GIF المتحرك الذي يوضح الشكل والأداء النهائيين لتطبيق iOS للتشغيل السريع.

نموذج الكائن

تتعامل الفئات والواجهات التالية مع بعض الميزات الرئيسية لمكتبة عميل واجهة مستخدم 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، يمكنك حذف المورد أو مجموعة الموارد.

يؤدي حذف مجموعة الموارد إلى حذف أية موارد أخرى مقترنة بها أيضًا.

تعرّف على المزيد حول تنظيف الموارد.