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