BotStacksChat 1.0.1

BotStacksChat 1.0.1

Brent 维护。



 
依赖
AnyCodable-FlightSchool>= 0
SwiftDate>= 0
DynamicColor>= 0
SDWebImageSwiftUI>= 0
ActivityIndicatorView>= 0
SwiftyJSON>= 0
Giphy>= 0
Gifu>= 0
Sentry>= 0
Apollo>= 0
Apollo/WebSocket>= 0
SnapKit>= 0
 

  • Brent Walter

CodeFactor Cocoapods GitHub issues GitHub commit activity

IAC IOS

In-AppChat iOS SDK

为您的 iOS 应用提供令人愉快的聊天。试试吧,下载 In-AppChat iOS

 

📃 目录

 

✨ 概览

此 SDK 集成在 InAppChat 平台上提供的完整服务的聊天体验。

InAppChat 为您的用户提供完整的 UI 和后端服务,以启用聊天。

您只需登录 SDK 并显示 InAppChat 视图控制器即可。

 

您还可以查看 /Example 目录,了解启用了 InAppChat 的应用的运行示例。

 

⚙ 安装

此 SDK 可通过常规方式以 Cocoapod 的形式访问。

.package(url: "https://github.com/RipBullNetworks/inappchat-ios", .upToNextMajor(from: "1.0.0")),

 

CocoaPods

将 pod 添加到您的 podfile 中

pod "InAppChat"

 

🚀 开始使用

第 1 步:初始化 SDK

在您的应用代理或启动逻辑所在的任何位置,初始化 InAppChat SDK

BotStacksChat.setup(apiKey: apiKey)

 

注意,您可以选择延迟加载,稍后调用 InAppChat.shared.load 来按您的加载序列加载 IAC

 

第 2 步:登录您的用户

在显示UI之前,您必须通过指定的登录方法之一将用户登录到InAppChat。

这些方法返回一个布尔值,表示用户是否已登录。

@IBAction func loginToInAppChat() {
  self.loading = true
  Task.detached {
    do {
      let loggedIn = try await InAppChat.shared.login(
            accessToken: nil,
            userId: id,
            username: nickname,
            picture: picture,
            displayName: name
          )
      if loggedIn {
        displayInAppChat()
      }
    } catch let err {
      print("error logging in \(err)")
    }
  }
}

 

InAppChat以及SDK中的所有其他状态对象都扩展了ObservableObject。InAppChat维护一个@Published的isUserLoggedIn属性,您也可以在您的SwiftUI应用中使用它。您还可以监听Chats对象,该对象包含整个InAppChat界面的状态。

 

在视图控制器中使用combine监听InAppChat

InAppChat.shared.objectWillChange
  .makeConnectable()
  .autoconnect()
  .sink(receiveValue: {[weak self] _ in
    DispatchQueue.main.async {
      // update my chat UI
    }
  }).store(in: bag)

 

在SwiftUI中使用@ObservedObject

public struct MyView: View {
  @ObservedObject var inappchat = InAppChat.shared

  public var body: some View {
    ZStack {
      if inappchat.isUserLoggedIn {
        // Render InAppChat UI
        InAppChatView {
          // handle logout
        }
      } else {
        MyLoginView()
      }
    }
  }
}

 

第3步:显示UI

甲. UIKit

如果您使用UIKit,只需在UI代码中的任何位置推送或呈现InAppChat控制器。例如,在点击消息按钮时

@IBAction func onPressMessaging() {
  let inapphatController = BotStacksChatController.instance()
  self.navigationController?.push(inappchatController, animated: true)
  // or you can present
  self.present(inappchatController, animated: true)
}

 

乙. SwiftUI

通过渲染InAppChatView在任何全屏视图中渲染InAppChat。包括注销处理器,以便用户注销时返回到您自己的UI。

struct ContentView: View {

  var body: some View {
    InAppChatView {
      // handle logout
      displayUserLogin()
    }
  }
}

 

第4步:启用Giphy支持

UI工具包内置了对Giphy的支持。如果您希望在聊天应用程序中启用Giphy,请从Giphy获取Giphy API密钥。然后在启动代码中导入并设置Giphy SDK

import GiphyUISDK

func onAppStartup() {
  Giphy.configure(apiKey: "your-api-key")
}

 

🖍 主题

您可以通过在显示UI之前任何时间传递一个主题到InAppChat来自定义InAppChat UI的为主题。该主题支持字体、颜色以及类似气泡边框半径和图像大小等。为InAppChatUI提供Theme对象

InAppChat.set(theme: Theme())

 

A. 颜色

您可以为主题对象提供您自己的颜色主题,其中包括一系列参数。UI工具包使用明暗两种主题,所以请提供这两种主题。

InAppChat.set(
theme:
  Theme(
    light:
      Colors(
        primary: .blue,
        background: .white
      ),
    dark:
      Colors(
        primary: .blue,
        background: .black
      )
    )
)

 

B. 字体

UI工具包使用与iOS相同的字体样式。您可以为这些字体提供自定义的字体对象

InAppChat.set(theme:
  Theme(
    fonts: Fonts(
      title: .app(22, .black),
      title2: .app(20, .heavy),
      title2Regular: .app(20),
      title3: .app(16, .heavy),
      headline: .app(16, .bold),
      body: .app(14),
      caption: .app(12)
    )
  )
)

 

C. 资产

UI工具包还提供可自定义的资产和文本供您使用。最重要的是您希望用于群组的默认图片。

InAppChat.set(theme:
  Theme(
    assets: Assets(group: Image("my-group-placeholder"))
  )
)

 

还有空白的屏幕配置

  InAppChat.set(theme:
      Theme(
        emptyChannels: EmptyScreenConfig(
          image: Image("empty-channels"),
          caption: "You haven't joined any channels yet"),
        emptyChat: EmptyScreenConfig(
          image: Image("empty-chat"),
          caption: "Your friends are ***dying*** to see you"
        ),
        emptyThreads: EmptyScreenConfig(
          image: Image("empty-threads"),
          caption: "You haven't added to any threads yet"),
        emptyAllChannels: EmptyScreenConfig(
          image: Image("empty-all-channels"),
          caption: "It's dead in here"
        )
      )
    )

 

⚡ 运行示例应用

InAppChat上通过单击您的项目,然后在右上角单击项目设置来获取API密钥。

如果您想在示例中添加Giphy,请获取Giphy API密钥。

将两个密钥添加到Example/InAppChat-Example/InAppChat_ExampleApp.swift

运行应用

 

🙋‍♂️ 帮助

如果您在文档中不理解某些内容、遇到问题或只是需要一点点方向上的推动,请加入我们的Discord服务器


所有内容版权所有 © 2023 Rip Bull Networks