Classe NowChatService : iOS
La classe NowChatService fournit des options de messagerie virtuelle et Agent actif de messagerie instantanée.
À l’aide de cette classe, vous pouvez démarrer et arrêter les services de messagerie instantanée, démarrer des sessions de messagerie instantanée, créer une interface utilisateur de messagerie instantanée et vous abonner ou vous désabonner des messages non lus.
| Nom | Description |
|---|---|
| configuration | Paramètres de configuration fournis lors de l’initialisation du service. Type de données : NowServiceConfiguration |
| Version de l’instance | Version de l’instance associée ServiceNow , comme Utah ou Quebec. Type de données : chaîne |
| service réseau | Service réseau associé à ce service de messagerie instantanée. Type de données : NetworkService |
| Type de session | Type de session. Valeurs possibles :
Type de données : Type de session |
NowChatService – init(configuration : NowServiceConfiguration, delegate : NowChatServiceDelegate ?, coreServiceProvider : NowCoreServiceProviding ? = nil)
Initialise une nouvelle instance NowChatService.
| Nom | Type | Description |
|---|---|---|
| configuration | Configuration Now ServiceConfiguration | Informations de configuration nécessaires pour initialiser correctement le service. |
| délégué | NowChatServiceDelegate | Facultatif. Objet délégué de rappel NowChat implémentant le protocole NowChatServiceDelegate. Valeur par défaut : nulle |
| coreServiceProvider | NowCoreServiceProviding | Facultatif. Objet implémentant le protocole NowCoreServiceProviding Fournit l’accès aux services NowChat. Valeur par défaut : nulle |
L’exemple de code suivant montre comment appeler cette fonction.
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(theme : NowChatThemeable)
Crée un UIViewController qui héberge l’interface utilisateur de la messagerie instantanée.
Bien que cette fonction crée l’interface utilisateur de messagerie instantanée, vous devez toujours initier la session de messagerie instantanée en appelant la fonction startChat(). Vous devez passer cet appel dès que l’interface utilisateur de messagerie instantanée devient visible. Pour plus d’informations, consultez l’exemple d’application associé et le guide du Mobile SDK développeur - iOS.
| Nom | Type | Description |
|---|---|---|
| Thème | Objet NowChatThemeable | Informations de thème pour l’interface utilisateur de messagerie instantanée à créer. |
| Type | Description |
|---|---|
| Objet | Réussite : objet UIViewController qui contient les informations de configuration du contrôleur de vue d’interface utilisateur. Échec : objet NowChatServiceError. Erreurs possibles :
|
L’exemple de code suivant montre comment appeler cette fonction.
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()
Arrête le service de messagerie instantanée, y compris toutes les sessions de messagerie instantanée actives.
Après avoir appelé cette fonction, le NowChatService associé est inactif et ne peut pas être réutilisé. Pour établir une autre session de messagerie instantanée, créez une nouvelle instance NowChatService en appelant la fonction NowChat.makeChatService().
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Néant |
L’exemple de code suivant montre comment appeler cette fonction.
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(contextData : [string : any] ?)
Démarre une session de messagerie instantanée.
| Nom | Type | Description |
|---|---|---|
| Données contextuelles | [Chaîne : N’importe laquelle] ? | Facultatif. Dictionnaire contenant les variables de contexte de messagerie instantanée transmises dans la session de messagerie instantanée. Pour en savoir plus sur les variables contextuelles de messagerie instantanée, reportez-vous à la section Live agent chat context variables. |
| Type | Description |
|---|---|
| void ou chaîne | Réussite : nul Erreur : NowChatServiceError Erreurs possibles :
|
L’exemple de code suivant montre comment appeler cette fonction sans transmettre de variables contextuelles.
chatService.startChat { [weak self] result in
if case .failure(let error) = result {
debugPrint("Chat session initialization failed with error: \(error)")
self?.resetChat()
}
}
L’exemple de code suivant montre comment appeler cette fonction en passant des variables de contexte.
chatService.startChat { [weak self] result in
let contextData = ["sys_id": "123456789", "table_name": "wm_task", "active": true] as [String: Any]
chatService.startChat(contextData: contextData) { [weak self] result in
if case .failure(let error) = result {
debugPrint("Chat session initialization failed with error: \(error)")
self?.resetChat()
}
}
}
NowChatService – startChat(contextData : [String : Any] ? = nil, _ completion : @escaping (Result<Void, NowChatServiceError>))
Démarre une session de messagerie instantanée et exécute un bloc de complétion une fois la session de messagerie instantanée démarrée.
| Nom | Type | Description |
|---|---|---|
| Données contextuelles | [Chaîne : N’importe laquelle] ? | Facultatif. Dictionnaire contenant les variables de contexte de messagerie instantanée transmises dans la session de messagerie instantanée. Pour en savoir plus sur les variables contextuelles de messagerie instantanée, reportez-vous à la section Live agent chat context variables. |
| Achèvement | Objet | Bloc de complétion à exécuter une fois la session de messagerie instantanée démarrée. |
| Type | Description |
|---|---|
| void ou chaîne | Valeurs de retour pour le bloc d’achèvement :
Erreurs possibles :
|
L’exemple de code suivant montre comment appeler cette fonction sans données de contexte.
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)
}
L’exemple de code suivant montre comment appeler cette fonction avec des données de contexte.
func startChat() {
guard let chatService = chatService else {
debugPrint("Chat service is invalid")
viewState = makeViewState()
return
}
let contextData = ["sys_id": "123456789", "table_name": "wm_task", "active": true] as [String: Any]
chatService.startChat(contextData: contextData) { [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)
S’abonne à l’écouteur du nombre de messages non lus.
| Nom | Type | Description |
|---|---|---|
| sondageIntervalle | Intervalle de temps | Fréquence à laquelle interroger le service Web pour connaître le nombre de messages de messagerie instantanée non lus. Unité : Secondes |
| Achèvement | @escaping (int) -> nul) | Gestionnaire de complétion à appeler pour signaler le nombre de messages de messagerie instantanée non lus. Int: nombre de messages de messagerie instantanée non lus. |
| Type | Description |
|---|---|
| Néant |
L’exemple de code suivant montre comment appeler cette fonction.
…
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()
Se désabonne de la réception de l’écouteur de nombre de messages non lus.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Néant |
L’exemple de code suivant montre comment appeler cette fonction.
…
if viewModel.isPolling {
viewModel.unsubscribeFromUnreadMessageCount()
viewState.pollingInterval = ""
} else {
viewModel.subscribeToUnreadMessageCount(pollingInterval: timeInterval)
}
…
func unsubscribeFromUnreadMessageCount() {
chatService.unsubscribeFromUnreadMessageCount()
isPolling = false
unreadMessageCount = 0
}