OBI4chatSDK 4.0.2

OBI4chatSDK 4.0.2

Robert MajtanMarko VukusicPjero PetejMaid BeslagicMaid Beslagic维护。



 
依赖项
PusherSwift= 9.2.2
lottie-ios= 3.2.3
Alamofire= 5.4.4
 

  • OBI4wan 提供

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 中有 NSPhotoLibraryUsageDescriptionNSCameraUsageDescription 条目。

这是由 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 是一个字符串,可以是 outgoingincoming,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()