你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
开始使用 Azure 通信服务 UI 库,以将通信体验快速集成到你的应用程序中。 本文介绍如何将 UI 库聊天组合集成到应用程序中,并为应用用户设置体验。
Azure 通信服务 UI 库会在应用程序中呈现完整的聊天体验。 它负责连接到 Azure 通信服务聊天服务,并自动更新参与者的状态。 作为开发人员,你需要确定应用用户体验中希望聊天体验的开始位置,并根据需要仅创建 Azure 通信服务资源。
注意
有关 Web UI 库的详细信息,请参阅 Web UI 库情景手册。
先决条件
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- 已部署的 Azure 通信服务资源。 创建 Azure 通信服务资源
- Azure 通信服务令牌。 请参阅此示例。
访问这些快速入门
访问这些故事书
重要
Azure 通信服务的这一功能目前以预览版提供。 预览版中的功能已公开发布,可供所有新客户和现有Microsoft客户使用。
预览版 API 和 SDK 在没有服务级别协议的情况下提供。 建议不要将它们用于生产工作负荷。 某些功能可能不受支持,或者功能可能受到限制。
有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
在适用于 Android 的开源 Azure 通信服务 UI 库中获取用于聊天的 Azure 示例 Android SDK 中的 Android 示例应用程序。
先决条件
- Azure 帐户和有效的 Azure 订阅。 免费创建帐户。
- 运行 Android Studio 的操作系统。
- 已部署的 Azure 通信服务资源。 记下终结点 URL。
- Azure 通信服务访问令牌和用户标识符。
- Azure 通信服务聊天线程,其中添加了上一步骤中的用户。
启动项目
完成以下部分以设置项目。
创建新的 Android 项目
在 Android Studio 中,创建新的项目。
在“文件”菜单中,依次选择“新建”“新建项目”>。
在 “新建项目”上,选择 “空视图活动 ”项目模板。
选择下一步。
将项目 UILibraryQuickStart 命名。 对于语言,请选择“Java/Kotlin”。 对于最低 SDK 版本,请选择“API 23: Android 6.0 (Marshmallow)”或更高版本。
选择“完成”。
安装这些软件包
完成以下部分以安装所需的应用程序包。
添加依赖项
在应用级 UILibraryQuickStart/app/build.gradle 文件中(在应用文件夹中),添加以下依赖项:
dependencies {
...
implementation 'com.azure.android:azure-communication-ui-chat:+'
...
}
添加 Maven 存储库
为了集成库,必须使用 Azure 包存储库。
若要添加存储库,请执行以下操作:
- 在项目 Gradle 脚本中,确保添加了以下存储库。 对于 Android Studio (2020.*),
repositories位于settings.gradle下的dependencyResolutionManagement(Gradle version 6.8 or greater)中。 对于早期版本的 Android Studio (4.*),repositories位于build.gradle下的项目级别allprojects{}中。
// dependencyResolutionManagement
repositories {
...
maven {
url "https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1"
}
...
}
运行代码
在 Android Studio 中,生成并启动应用程序。
- 选择“启动”。
- 聊天客户端会加入聊天线程,你可以开始键入和发送消息。
- 如果客户端无法加入线程,并且出现
chatJoin失败错误,请验证用户的访问令牌是否有效,以及是否已通过 REST API 调用或使用az命令行界面将用户添加到聊天线程。
重要
Azure 通信服务的这一功能目前以预览版提供。 预览版中的功能已公开发布,可供所有新客户和现有Microsoft客户使用。
预览版 API 和 SDK 在没有服务级别协议的情况下提供。 建议不要将它们用于生产工作负荷。 某些功能可能不受支持,或者功能可能受到限制。
有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
在开源 Azure 通信服务 适用于 iOS 的 UI 库中获取Azure 示例 iOS SDK 的聊天功能示例应用程序。
先决条件
- Azure 帐户和有效的 Azure 订阅。 免费创建帐户。
- 运行 Xcode 13 或更高版本的 Mac,以及已安装到密钥链中的有效的开发人员证书。 还必须安装 CocoaPods 以提取依赖项。
- 已部署的 Azure 通信服务资源。 记下终结点 URL。
- Azure 通信服务访问令牌和用户标识符。
- Azure 通信服务聊天线程。 将上一步创建的用户添加到此聊天线程。
启动项目
完成以下部分以设置快速启动项目。
创建新的 Xcode 项目
在 Xcode 中创建新项目。
在文件菜单中,选择新建>项目。
在“为新项目选择模板”中,选择 iOS 平台并选择“应用”应用程序模板。 快速入门使用 UIKit Storyboard。
在“为新建项目选择选项”中,在产品名称处输入 UILibraryQuickStart。 请在“界面”处选择“Storyboard”。 快速入门不会创建测试,因此可以清除“包括测试”复选框。
安装包和依赖项
(可选)对于 MacBook with M1,请在 Xcode 中安装并启用 Rosetta。
在项目根目录中,运行
pod init以创建 Podfile。 如果遇到错误,请将 CocoaPods 更新为当前版本。请将以下代码添加到 Podfile 中。 将
UILibraryQuickStart替换为你的项目名称。platform :ios, '14.0' target 'UILibraryQuickStart' do use_frameworks! pod 'AzureCommunicationUIChat', '1.0.0-beta.5' end运行
pod install --repo-update。在 Xcode 中,打开生成的 xcworkspace 文件。
关闭用户脚本沙盒
链接库中的某些脚本在生成过程中会写入文件。 要启用文件写入功能,请在 Xcode 中禁用用户脚本沙盒功能。
在 Xcode 项目中的 “生成设置”下,将 “用户脚本沙盒 ”选项设置为 “否”。 若要查找设置,请将筛选器从“基本”更改为“全部”,或使用搜索栏。
初始化复合组件
初始化复合组件:
转到
ViewController。添加以下代码来初始化用于聊天的复合组件。 将
<USER_ID>替换为用户标识符。 将<USER_ACCESS_TOKEN>替换为访问令牌。 将<ENDPOINT_URL>替换为你的终结点 URL。 将<THREAD_ID>替换为聊天会话 ID。 将<DISPLAY_NAME>替换为自己的名称。 (<DISPLAY_NAME>的字符串长度限制为 256 个字符)。import UIKit import AzureCommunicationCommon import AzureCommunicationUIChat class ViewController: UIViewController { var chatAdapter: ChatAdapter? override func viewDidLoad() { super.viewDidLoad() let button = UIButton() var configuration = UIButton.Configuration.filled() configuration.contentInsets = NSDirectionalEdgeInsets(top: 10.0, leading: 20.0, bottom: 10.0, trailing: 20.0) configuration.baseBackgroundColor = .systemBlue button.configuration = configuration button.layer.cornerRadius = 10 button.setTitle("Start Experience", for: .normal) button.addTarget(self, action: #selector(startChatComposite), for: .touchUpInside) button.translatesAutoresizingMaskIntoConstraints = false self.view.addSubview(button) button.widthAnchor.constraint(equalToConstant: 200).isActive = true button.heightAnchor.constraint(equalToConstant: 50).isActive = true button.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true button.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true } @objc private func startChatComposite() { let communicationIdentifier = CommunicationUserIdentifier("<USER_ID>") guard let communicationTokenCredential = try? CommunicationTokenCredential( token: "<USER_ACCESS_TOKEN>") else { return } self.chatAdapter = ChatAdapter( endpoint: "<ENDPOINT_URL>", identifier: communicationIdentifier, credential: communicationTokenCredential, threadId: "<THREAD_ID>", displayName: "<DISPLAY_NAME>") Task { @MainActor in guard let chatAdapter = self.chatAdapter else { return } try await chatAdapter.connect() let chatCompositeViewController = ChatCompositeViewController( with: chatAdapter) let closeItem = UIBarButtonItem( barButtonSystemItem: .close, target: nil, action: #selector(self.onBackBtnPressed)) chatCompositeViewController.title = "Chat" chatCompositeViewController.navigationItem.leftBarButtonItem = closeItem let navController = UINavigationController(rootViewController: chatCompositeViewController) navController.modalPresentationStyle = .fullScreen self.present(navController, animated: true, completion: nil) } } @objc func onBackBtnPressed() { self.dismiss(animated: true, completion: nil) Task { @MainActor in self.chatAdapter?.disconnect(completionHandler: { [weak self] result in switch result { case .success: self?.chatAdapter = nil case .failure(let error): print("disconnect error \(error)") } }) } } }如果选择将聊天视图放在小于屏幕大小的框架中,则建议的最小宽度为 250,最小高度为 300。
运行代码
若要在 iOS 模拟器上生成和运行应用,请选择“产品”“运行”>。 还可以使用 (⌘-R) 键盘快捷方式。 然后,在模拟器上试用聊天体验。
- 选择“开始体验”。
- 聊天客户端会加入聊天线程,你可以开始键入和发送消息。
- 如果客户端无法加入线程,并且出现
chatJoin失败错误,请验证用户的访问令牌是否有效,以及是否已通过 REST API 调用或使用 az 命令行界面将用户添加到聊天线程。
清理资源
如果要清理并移除 Azure 通信服务订阅,可以删除资源或资源组。
删除资源组同时也会删除与之相关联的任何其他资源。
了解有关清理资源的详细信息。