快速入門:開始使用 UI 程式庫
開始使用 Azure 通訊服務 UI 程式庫,快速將通訊體驗整合到您的應用程式中。 在本快速入門中,瞭解如何將 UI 程式庫複合整合到應用程式中,並為您的應用程式使用者設定體驗。
通訊服務 UI 程式庫會在您的應用程式中轉譯完整的通訊體驗。 它會負責連線到通話,並設定使用者在幕後參與通話。 身為開發人員,您必須擔心應用程式使用者體驗中您想要啟動通訊體驗的位置。 複合會引導使用者設定其裝置、加入通話並參與該呼叫,以及轉譯其他參與者。
檢視此影片以取得概觀:
在適用于 Android 的 開放原始碼 Azure 通訊服務 UI 程式庫中,取得本 快速入門 的 Android 應用程式範例。
必要條件
- Azure 帳戶和作用中的 Azure 訂用帳戶。 免費建立帳戶。
- 執行 Android Studio 的 OS。
- 已 部署Azure 通訊服務資源 。
- Azure 通訊服務 存取權杖 。
設定專案
完成下列各節以設定快速入門專案。
建立新的 Android 專案
在 Android Studio 中,建立新的專案:
在 [ 檔案] 功能表中,選取 [ 新增 > 專案]。
在 [新增專案 ] 中,選取 [ 空白活動] 專案範本。
選取 [下一步] 。
在 [空白活動 ] 中,將專案 命名為 UILibraryQuickStart 。 針對語言,選取 [JAVA/Kotlin ]。 針對最低 SDK,選取 [API 21:Android 5.0 (Lollipop) 或更新版本]。
選取完成。
安裝套件
完成下列各節以安裝必要的應用程式套件。
新增相依性
在您的應用層級 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 com.azure.android.communication.ui.calling.models.CallCompositeRemoteOptions
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 remoteOptions = CallCompositeRemoteOptions(locator, communicationTokenCredential, "DISPLAY_NAME")
val callComposite: CallComposite = CallCompositeBuilder().build()
callComposite.launch(this, remoteOptions)
}
private fun fetchToken(): String? {
return "USER_ACCESS_TOKEN"
}
}
執行程式碼
在 Android Studio 中,建置並啟動應用程式:
- 選取 [ 啟動 ]。
- 接受許可權,然後選取裝置、麥克風和視訊設定。
- 選取加入通話。
物件模型
下列類別和介面會處理 Azure 通訊服務 Android UI 的一些主要功能:
名稱 | 描述 |
---|---|
CallComposite | 使用參與者資源庫和控制項呈現通話體驗的複合元件 |
CallCompositeBuilder | 使用選項建置的 CallComposite 產生器 |
CallCompositeJoinMeetingLocator | CallComposite 傳入啟動以啟動群組通話 |
CallCompositeTeamsMeetingLinkLocator | 傳遞以 CallComposite 啟動以加入 Microsoft Teams 會議 |
CallCompositeLocalizationOptions | 插入為選擇性的 , CallCompositeBuilder 以設定複合語言 |
UI 程式庫功能
取得程式碼,為您的 Android 應用程式建立重要的通訊功能。
建立 CallComposite
若要在 startCallComposite
函式內建立 CallComposite
,請 CallCompositeBuilder
初始化 實例和 CallComposite
實例。
設定驗證
若要設定驗證,請在 函式內 startCallComposite
初始化 CommunicationTokenCredential
實例。 將 取代 "USER_ACCESS_TOKEN"
為您的存取權杖。
val callComposite: CallComposite = CallCompositeBuilder().build()
val communicationTokenRefreshOptions = CommunicationTokenRefreshOptions(this::fetchToken, true)
val communicationTokenCredential = CommunicationTokenCredential(communicationTokenRefreshOptions)
設定群組通話
若要設定群組呼叫,請初始化 CallCompositeGroupCallLocator
,並將它 CallCompositeRemoteOptions
提供給 物件。
val locator = CallCompositeGroupCallLocator(UUID.fromString("GROUP_CALL_ID"))
val remoteOptions = CallCompositeRemoteOptions(
locator,
communicationTokenCredential,
"DISPLAY_NAME",
)
設定 Teams 會議
若要設定 Microsoft Teams 會議,請初始化 CallCompositeTeamsMeetingLinkLocator
,並將它 CallCompositeRemoteOptions
提供給 物件。
val locator = CallCompositeTeamsMeetingLinkLocator("TEAMS_MEETING_LINK")
val remoteOptions = CallCompositeRemoteOptions(
locator,
communicationTokenCredential,
"DISPLAY_NAME",
)
設定會議室通話
重要
Azure 通訊服務這項功能目前處於預覽狀態。
預覽 API 和 SDK 在沒有服務等級協定的情況下提供。 我們建議您不要將它們用於生產工作負載。 某些功能可能不受支援,或可能具有限制的功能。
如需詳細資訊,請檢閱 Microsoft Azure 預覽版 的補充使用規定。
若要設定Azure 通訊服務會議室呼叫,請初始化 CallCompositeRoomLocator
,並將 它提供給 物件, CallCompositeRemoteOptions
並將 設定 CallCompositeParticipantRole
為 CallCompositeLocalOptions
by setRoleHint()
。
CallComposite
將會在連線到呼叫之前使用角色提示。 連線呼叫之後,會從Azure 通訊服務擷取實際的最新參與者角色。
如需會議室的詳細資訊,請參閱 會議室快速入門
val locator = CallCompositeRoomLocator("<ROOM_ID>")
val remoteOptions = CallCompositeRemoteOptions(
locator,
communicationTokenCredential,
"DISPLAY_NAME",
)
val localOptions = CallCompositeLocalOptions().setRoleHint(participantRole)
val callComposite = CallCompositeBuilder().build()
callComposite.launch(context, remoteOptions, localOptions)
啟動複合
若要啟動呼叫 UI,請在 函式內 startCallComposite
呼叫 launch
實例。 CallComposite
訂閱 CallComposite 錯誤事件
若要接收錯誤事件,請使用 CallComposite
呼叫 setOnErrorHandler
。
下列 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
。 根據預設,UI 程式庫包含一組 language
值,您可以搭配 UI 元件使用。 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 撥號狀態已變更事件
若要接收撥號狀態變更事件,請使用 CallComposite
呼叫 addOnCallStateChangedEventHandler
。
下列範例顯示已變更撥號狀態的事件。
callComposite.addOnCallStateChangedEventHandler { callStateChangedEvent ->
println(callStateChangedEvent.code)
}
關閉 CallComposite 並訂閱已關閉的事件
若要接收關閉,請使用 CallComposite
呼叫 addOnDismissedEventHandler
。 若要關閉 CallComposite,請呼叫 dismiss
。
下列範例顯示已變更撥號狀態的事件。
callComposite.addOnDismissedEventHandler { callCompositeDismissedEvent ->
println(callCompositeDismissedEvent.errorCode)
}
callComposite.dismiss()
更多功能
使用案例 清單 包含更多功能的詳細資訊。
將通知新增至行動應用程式
Azure 通訊服務與 Azure 事件方格 和 Azure 通知中樞 整合,因此您可以將 推播通知 新增至 Azure 中的應用程式。 您可以使用推播通知,將應用程式的資訊傳送給使用者的行動裝置。 推播通知可以顯示對話方塊、播放音效或顯示來電 UI。
在適用于 iOS 的 開放原始碼 Azure 通訊服務 UI 程式庫中,取得本 快速入門 的範例 iOS 應用程式。
必要條件
- Azure 帳戶和作用中的 Azure 訂用帳戶。 免費建立帳戶。
- 執行 Xcode 13 或更新版本的 Mac,以及安裝在金鑰鏈中的有效開發人員憑證。 CocoaPods 也必須安裝以擷取相依性。
- 已 部署Azure 通訊服務資源 。
- Azure 通訊服務 存取權杖 。
設定專案
完成下列各節以設定快速入門專案。
建立新的 Xcode 專案
在 Xcode 中,建立新的專案:
在 [ 檔案] 功能表中,選取 [ 新增 > 專案]。
在 [選擇新專案的 範本] 中 ,選取 iOS 平臺,然後選取 應用程式 應用程式範本。 快速入門會使用 UIKit 分鏡腳本。 快速入門不會建立測試,因此您可以清除 [ 包含測試 ] 核取方塊。
在 [選擇新專案的 選項] 中,針對產品名稱輸入 UILibraryQuickStart 。 針對介面,選取 [分鏡腳本 ]。
安裝套件和相依性
(選擇性)針對具有 M1 的 MacBook,請在 Xcode 中安裝和啟用 Rosetta 。
在您的專案根目錄中,執行
pod init
以建立 Podfile。 如果您遇到錯誤,請將 CocoaPods 更新 為目前的版本。將下列程式碼新增至您的 Podfile。 將 取代
UILibraryQuickStart
為您的專案名稱。platform :ios, '15.0' target 'UILibraryQuickStart' do use_frameworks! pod 'AzureCommunicationUICalling' end
執行
pod install --repo-update
。在 Xcode 中,開啟產生的 .xcworkspace 檔案。
要求存取裝置硬體
若要存取裝置的硬體,包括麥克風和相機,請更新應用程式的資訊屬性清單。 將相關聯的值設定為包含在系統用來要求使用者存取的對話方塊中的字串。
以滑鼠右鍵按一下
Info.plist
專案樹狀結構的專案,然後選取 [開啟為 > 原始程式碼]。 將下列幾行新增至最上層<dict>
區段,然後儲存檔案。<key>NSCameraUsageDescription</key> <string></string> <key>NSMicrophoneUsageDescription</key> <string></string>
以下是 Xcode 檔案中原始程式碼的
Info.plist
範例:若要確認已正確新增裝置許可權要求,請選取 [ 開啟身分 > 屬性清單]。 檢查資訊屬性清單看起來與下列範例類似:
關閉 Bitcode
在 Xcode 專案中的 [建置設定] 底 下,將 [ 啟用 Bitcode ] 選項設定為 [否 ]。 若要尋找設定,請將篩選準則從 [基本 ] 變更為 [全部 ],或使用搜尋列。
初始化複合
若要初始化複合:
移至
ViewController
。新增下列程式碼,以初始化呼叫的複合元件。 將 取代為通話的群組識別碼,或
UUID()
取代<GROUP_CALL_ID>
為 ,以產生通話的群組識別碼。 以您的名稱取代<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() callComposite = CallComposite(withOptions: callCompositeOptions) let communicationTokenCredential = try! CommunicationTokenCredential(token: "<USER_ACCESS_TOKEN>") let remoteOptions = RemoteOptions(for: .groupCall(groupId: UUID(uuidString: "<GROUP_CALL_ID>")!), credential: communicationTokenCredential, displayName: "<DISPLAY_NAME>") callComposite?.launch(remoteOptions: remoteOptions) } }
執行程式碼
若要在 iOS 模擬器上建置並執行您的應用程式,請選取 [產品 > 執行 ] 或使用 [⌘-R] 鍵盤快速鍵。 然後,在模擬器上試用通話體驗:
選取 [ 開始體驗 ]。
接受音訊許可權,然後選取裝置、麥克風和視訊設定。
選取 [ 開始通話 ]。
物件模型
下列類別和介面會處理Azure 通訊服務 UI 用戶端程式庫的一些主要功能:
名稱 | 描述 |
---|---|
CallComposite | 轉譯具有參與者資源庫和控制項之通話體驗的元件 |
CallCompositeOptions | 設定主題和事件處理等選項 |
RemoteOptions | 傳送至Azure 通訊服務的遠端選項,以加入 群組通話 或 Teams 會議 。 |
ThemeOptions | 複合主題的自訂選項 |
LocalizationOptions | 複合語言選項 |
UI 程式庫功能
取得程式碼,為您的 iOS 應用程式建立重要的通訊功能。
建立 CallComposite
若要在 startCallComposite
函式 CallCompositeOptions
內建立 CallComposite
實例和 CallComposite
實例:
@objc private func startCallComposite() {
let callCompositeOptions = CallCompositeOptions()
callComposite = CallComposite(withOptions: callCompositeOptions)
}
設定驗證
若要設定驗證,請在 函式內 startCallComposite
初始化 CommunicationTokenCredential
實例。 將 取代 <USER_ACCESS_TOKEN>
為您的存取權杖。
let communicationTokenCredential = try! CommunicationTokenCredential(token: "<USER_ACCESS_TOKEN>")
如果您還沒有存取權杖, 請建立Azure 通訊服務存取權杖 。
設定群組通話
若要設定群組呼叫,請在 函式內 startCallComposite
初始化 RemoteOptions
定位器的 .groupCall
實例。 將 取代 <GROUP_CALL_ID>
為您通話的群組識別碼。 以您的名稱取代 <DISPLAY_NAME>
。
// let uuid = UUID() to create a new call
let uuid = UUID(uuidString: "<GROUP_CALL_ID>")!
let remoteOptions = RemoteOptions(for: .groupCall(groupId: uuid),
credential: communicationTokenCredential,
displayName: "<DISPLAY_NAME>")
如需使用群組識別碼進行通話的詳細資訊,請參閱 管理通話 。
設定 Teams 會議
若要設定 Microsoft Teams 會議,請在 函式內 startCallComposite
初始化 RemoteOptions
定位器的實例 .teamsMeeting
。 將 取代 <TEAMS_MEETING_LINK>
為您通話的 Teams 會議連結。 以您的名稱取代 <DISPLAY_NAME>
。
let remoteOptions = RemoteOptions(for: .teamsMeeting(teamsLink: "<TEAMS_MEETING_LINK>"),
credential: communicationTokenCredential,
displayName: "<DISPLAY_NAME>")
取得 Teams 會議連結
您可以使用 Graph API 取得 Microsoft Teams 會議連結。 此程式詳述于 Graph 檔中 。
通訊服務通話 SDK 接受完整的 Microsoft Teams 會議連結。 此連結會以 joinWebUrl 屬性 下的 資源一部分 onlineMeeting
傳回。 您也可以從 Teams 會議邀請本身的 [加入會議 URL] 取得所需的會議 資訊。
設定會議室通話
重要
Azure 通訊服務這項功能目前處於預覽狀態。
預覽 API 和 SDK 在沒有服務等級協定的情況下提供。 我們建議您不要將它們用於生產工作負載。 某些功能可能不受支援,或可能具有限制的功能。
如需詳細資訊,請檢閱 Microsoft Azure 預覽版 的補充使用規定。
若要設定Azure 通訊服務會議室呼叫,請在 函式內 startCallComposite
初始化 RemoteOptions
定位器的實例 .roomCall
。 將 取代 <ROOM_ID>
為您通話的會議室識別碼。 使用 LocalOptions
roleHint
初始化 實例。
以您的名稱取代 <DISPLAY_NAME>
。
CallComposite
將會在連線到呼叫之前使用角色提示。 連線呼叫之後,會從Azure 通訊服務擷取實際的最新參與者角色。
如需會議室的詳細資訊,請參閱 會議室快速入門
let remoteOptions = RemoteOptions(for: .roomCall(roomId: "<ROOM_ID>"),
credential: communicationTokenCredential,
displayName: "<DISPLAY_NAME>")
let localOptions = LocalOptions(roleHint: participantRole)
let callComposite = CallComposite()
callComposite.launch(remoteOptions: remoteOptions, localOptions: localOptions)
啟動複合
在 函 startCallComposite
式內,呼叫 launch
實例上的 CallComposite
:
callComposite?.launch(remoteOptions: remoteOptions)
訂閱事件
您可以實作關閉以針對複合事件採取行動。 下列 errorCodes 可能會傳送至錯誤處理常式:
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
。 根據預設,UI 程式庫包含一組 locale
值,您可以搭配 UI 元件使用。 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 通訊服務與 Azure 事件方格 和 Azure 通知中樞 整合,因此您可以將 推播通知 新增至 Azure 中的應用程式。 您可以使用推播通知,將應用程式的資訊傳送給使用者的行動裝置。 推播通知可以顯示對話方塊、播放音效或顯示來電 UI。
清除資源
如果您想要清除並移除通訊服務訂用帳戶,您可以刪除資源或資源群組。
刪除資源群組也會刪除與其相關聯的任何其他資源。
深入瞭解清除 資源 。