iOS_OBI4ChatSDK
安装
OBI4wan iOS 聊天 SDK 支持 iOS 13。
CocoaPods
在 Podfile 中添加 OBI4ChatSDK pod 并运行 pod install
。
target :YourTargetName do
pod 'OBI4ChatSDK'
end
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
end
end
end
更新 Info.plist
安装 OBI4ChatSDK 时,您需要确保在您的 Info.plist
中有 NSPhotoLibraryUsageDescription
和 NSCameraUsageDescription
条目。
这是由 Apple 要求的,适用于所有访问相册和相机的应用程序。由于图像上传功能,在安装 OBI4ChatSDK 时这是必要的。当用户点击图库上传按钮时,会提示用户相册权限;当用户点击相机上传按钮时,会提示相机权限。
配置
- 在 AppDelegate 中使用下一行初始化 OBI4Chat SDK
OBI4Chat(guid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
enableLauncher: Bool,
userGuid: String? = nil,
externalConfiguration: ExternalChatConfigurationModel? = nil)
guid
是您的聊天的唯一标识符,enableLauncher
参数定义是否显示默认打开聊天的按钮,通过userGuid
参数可以设置自定义用户 ID,并且可以通过externalConfiguration
参数覆盖从 API 获取的配置。
以下显示外部配置对象。
class ExternalChatConfigurationModel: NSObject {
var saveChatHistory: Bool?
var preChatFormText: String?
var preChatFormKeys: [String]?
var emailFormText: String?
var emailFormKeys: [String]?
var widgetDisplay: String?
var unavailableHeader: String?
var unavailableText: String?
var canSendAttachment: Bool?
var widgetText: String?
var widgetTitle: String?
var widgetSubtitle: String?
var widgetWelcomeLine: String?
var widgetLogoURI: String?
var widgetColor: String?
var widgetLanguage: String?
var widgetPosition: String?
var autoTriggerEnabled: Bool?
var autoTriggerDelaySeconds: Int?
var autoTriggerText: String?
var autoTriggerCooldownTime: Int?
var autoTriggerTriggerOnlyOnce: Bool?
}
使用
-
如果启用
enableLauncher
,则将显示默认按钮。如果您想使用自己的按钮,则可以调用 OBI4Chat 实例的openChat()
方法。 -
用户可以使用默认的 UI 实现,无需进行其他操作。但如果用户想要实现的话,必须实现
OBI4ChatObserver
协议。
OBI4ChatObserver
协议有四个方法
- 收到新消息时调用该函数。
func obi4Chat(_ chat: OBI4Chat, didReceiveNewMessage message:OBIMessage)
- 收到输入事件时调用该函数。
func obi4Chat(_ chat: OBI4Chat, didReceiveTyping typing: ClientTyping)
- 聊天初始化时调用该函数。
func obi4ChatInited(_ chat: OBI4Chat)
- 表单提交时调用该函数。
func obi4ChatPreformSubmited(_ chat: OBI4Chat)
发送消息时使用 OBI4Chat
的下一个函数
func sendMessage(message: OBIMessage, shouldSave: Bool)
用于输入此函数
func sendTyping(typing: ClientTyping)
OBIMessage
是发送/接收的消息类型。这是一个模型类,以下是其结构
class OBIMessage: NSObject, Codable {
public let content: String?
public let type: String
public let author: OBIAuthor?
public let attachment: OBIAttachment?
public let date: String
}
- content 是文本消息,type 是一个字符串,可以是
outgoing
或incoming
,date 是当前日期和时间。Author 和 attachment 是对象,Author 是OBIAuthor
类型的对象,此对象的下一个结构如下
class OBIAuthor: NSObject, Codable {
public let url: String?
public let name: String
}
- url 是作者的图标图像的 URL,它是可选的,name 是作者的名字。
- Attachment 是
OBIAuthor
类型的对象,此对象的下一个结构如下
class OBIAttachment: NSObject, Codable {
public let url: String
public let type: String?
public let name: String
}
- url 是附件存储的 URL,如果附件是图像,则 type 是
nil
,如果附件是 PDF 文档,则 type 是application/pdf
,name 是附件的名字。
ClientTyping
表示在发送/接收输入事件时的消息类型。这是一个模型类,其结构如下:
class ClientTyping: NSObject, Codable {
public let typing: Bool
}
- 输入参数表示用户/代理是否正在输入。
当用户实现自己的界面时,他必须将实现了 OBI4ChatObserver
的对象添加到 OBI4Chat 中作为观察者,这可以通过此方法完成
func addObserver(_ observer: OBI4ChatObserver)
- 如果用户想要移除观察者,可以调用此函数
func removeObserver(_ observer: OBI4ChatObserver)
要检查聊天是否可用,可以调用此函数
func isChatAvailabile(_ completion: @escaping (OBI4ChatSDK.ChatAvailability) -> Void)
- 完成时,用户会得到一个响应,指示聊天是否可用。响应的结构如下:
class ChatAvailability : NSObject, Codable {
public let available: Bool
}
可用参数表示聊天是否可用。
- 用于使用可选的自定义用户 ID 重新启动聊天
func restartChat(userGuid: String? = nil)
- 用于获取当前聊天用户 ID
func getCurrentUserGuid() -> String
- 用于删除所有用户的聊天历史记录
func deleteChatHistory()