NowChatService クラス - iOS
NowChatService クラスは、ライブエージェント仮想機能とチャット機能を提供します。
このクラスを使用して、チャットサービスの開始と停止、チャットセッションの開始、チャットユーザーインターフェイスの作成、未読メッセージの購読/購読解除を行うことができます。
| 名前 | 説明 |
|---|---|
| 構成 | サービスの初期化時に提供された構成設定。 データタイプ: NowServiceConfiguration |
| instanceVersion | 関連付けられた ServiceNow インスタンスのバージョン (utah や quebec など)。 データタイプ:文字列 |
| Networkservice | このチャットサービスに関連付けられたネットワークサービス。 データタイプ:NetworkService |
| セッションタイプ | セッションのタイプ。 可能な値:
データタイプ:SessionType |
NowChatService - init(configuration: NowServiceConfiguration, delegate: NowChatServiceDelegate?, coreServiceProvider: NowCoreServiceProviding? = nil)
新しい NowChatService インスタンスを初期化します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 構成 | NowServiceConfiguration | サービスを適切に初期化するために必要な構成情報。 |
| 代理人 | NowChatServiceDelegate | オプション。NowChatServiceDelegate プロトコルを実装する NowChat コールバックデリゲートオブジェクト。 デフォルト:nil |
| coreServiceProvider | ナウコアサービス提供 | オプション。NowCoreServiceOffering プロトコルを実装するオブジェクト。NowChat サービスへのアクセスを提供します。 デフォルト:nil |
次のコード例は、この関数を呼び出す方法を示しています。
guard let coreService = NowSDK.core() else {
// Error with NowServiceError.sdkNotConfigured
return
}
guard
let instanceUrl = URL(string: "http://sample.service-now.com"),
let serviceConfig = NowSDK.makeServiceConfiguration(for: instanceUrl) else {
// Could not create service –
// NowServiceError.serviceConfigurationInvalid
return
}
let chatService = NowChatService(configuration: serviceConfig, delegate: delegate, coreServiceProvider: coreService)
NowChatService - makeChatUI(テーマ: NowChatThemeable)
チャット ユーザー インターフェイスをホストする UIViewController を作成します。
この関数はチャット UI を作成しますが、 startChat() 関数を呼び出してチャットセッションを開始する必要があります。チャット UI が表示されるようになったら、この呼び出しを行う必要があります。詳細については、関連するサンプル アプリケーションと Mobile SDK 開発者ガイド - iOS を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| theme | NowChatThemeable オブジェクト | 作成するチャット UI のテーマ情報。 |
| タイプ | 説明 |
|---|---|
| オブジェクト | 成功:UI ビューコントローラーの構成情報を含む UIViewController オブジェクト。 エラー:NowChatServiceError オブジェクト。 考えられるエラー:
|
次のコード例は、この関数を呼び出す方法を示しています。
func makeChatScreen() -> UIViewController? {
var chatService: NowChatService?
guard let chatService = chatService else { return nil }
let result = chatService.makeChatUI(theme: CarrascoChatTheme(baseTheme: CarrascoTheme()))
switch result {
case .success(let chatViewController):
return chatViewController
case .failure(let error):
debugPrint("Chat screen creation failed with error: \(error)")
return nil
}
}
NowChatService - shutdown()
アクティブなチャットセッションを含め、チャットサービスをシャットダウンします。
この関数を呼び出した後、関連付けられ た NowChatService は非アクティブになり、再利用できません。別のチャットセッションを確立するには、NowChat.makeChatService() 関数を呼び出して新しい NowChatService インスタンスを作成します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、この関数を呼び出す方法を示しています。
private func resetChat() {
chatService?.shutdown()
chatService = nil
initializeChatService()
viewState = makeViewState()
}
func initializeChatService() {
NowChat.makeChatService(instanceUrl: instanceUrl, delegate: self) { [weak self] result in
guard let self = self else { return }
switch result {
case .success(let service):
self.chatService = service
case .failure(let error):
debugPrint("Creating the chat service failed with error: \(error)")
}
self.viewState = self.makeViewState()
}
func makeViewState() -> ViewState {
ViewState(chatEnabled: chatService != nil,
menuItems: menuItems)
}
NowChatService - startChat()
チャットセッションを開始します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| void または文字列 | 成功:なし エラー:NowChatServiceError 考えられるエラー:
|
次のコード例は、この関数を呼び出す方法を示しています。
chatService.startChat { [weak self] result in
if case .failure(let error) = result {
debugPrint("Chat session initialization failed with error: \(error)")
self?.resetChat()
}
}
NowChatService - startChat(_ completion: @escaping (Result<Void, NowChatServiceError>))
チャットセッションを開始し、チャットセッションが開始された後に完了ブロックを実行します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 完了 | オブジェクト | チャットセッションが開始された後に実行する完了ブロック。 完了ブロックの値を返します。
考えられるエラー:
|
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、この関数を呼び出す方法を示しています。
func startChat() {
guard let chatService = chatService else {
debugPrint("Chat service is invalid")
viewState = makeViewState()
return
}
chatService.startChat { [weak self] result in
if case .failure(let error) = result {
debugPrint("Chat session initialization failed with error: \(error)")
self?.resetChat()
}
}
}
func makeViewState() -> ViewState {
ViewState(chatEnabled: chatService != nil,
menuItems: menuItems)
}
NowChatService - subscribeToUnreadMessageCount(pollingInterval: TimeInterval, completion: @escaping (Int) -> Void)
未読メッセージ数リスナーに登録します。
| 名前 | タイプ | 説明 |
|---|---|---|
| ポーリング間隔 | 時間間隔 | Web サービスで未読チャットメッセージ数をポーリングする頻度。 単位:秒 |
| 完了 | @escaping (int) -> void) | 未読チャットメッセージ数を報告するために呼び出す完了ハンドラー。 Int:未読チャットメッセージの数。 |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、この関数を呼び出す方法を示しています。
…
if viewModel.isPolling {
viewModel.unsubscribeFromUnreadMessageCount()
viewState.pollingInterval = ""
} else {
viewModel.subscribeToUnreadMessageCount(pollingInterval: timeInterval)
}
…
func subscribeToUnreadMessageCount(pollingInterval: TimeInterval) {
chatService.subscribeToUnreadMessageCount(pollingInterval: pollingInterval) { [weak self] count in
self?.unreadMessageCount = count
}
isPolling = true
}
NowChatService - unsubscribeFromUnreadMessageCount()
未読メッセージ数リスナーの受信を登録解除します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、この関数を呼び出す方法を示しています。
…
if viewModel.isPolling {
viewModel.unsubscribeFromUnreadMessageCount()
viewState.pollingInterval = ""
} else {
viewModel.subscribeToUnreadMessageCount(pollingInterval: timeInterval)
}
…
func unsubscribeFromUnreadMessageCount() {
chatService.unsubscribeFromUnreadMessageCount()
isPolling = false
unreadMessageCount = 0
}