Parley Messaging iOS库
通过Parley Messaging iOS库轻松设置安全的聊天。Parley SDK允许您完全自定义聊天外观,并将其无缝集成到您自己的应用程序中,为用户提供出色的体验。
注意:使用此库需要appSecret
。通过联系Parley可获取appSecret
。
要求
- iOS 11.0+
- Xcode 11+
- Swift 5+
Firebase
对于远程通知,Parley依赖于Google Firebase。如果您尚未配置Firebase,请配置Firebase(使用安装指南)。
截图
空 | 对话 |
---|---|
![]() |
![]() |
安装
CocoaPods是一个用于Cocoa项目的依赖项管理器。有关使用和安装说明,请访问它们的网站。要将Parley集成到您的Xcode项目中,请在您的Podfile
中指定它。
pod 'Parley', '~> 3.0.1'
快速开始
按照以下步骤获取库的基础设置。
ParleyView
添加到 ViewController
步骤 1:将 ParleyView
可以手动初始化,或者直接从 Storyboard 元素完成。
手动:
打开 ViewController 并添加以下导入。
import Parley
在 viewDidLoad
中创建 Parley 视图的实例(例如)。
override func viewDidLoad() {
super.viewDidLoad()
let parleyView = ParleyView()
parleyView.frame = self.view.frame
self.view.addSubview(parleyView)
}
Storyboard:
向 View Controller 添加一个视图,选择“显示标识检查器”选项卡,并将“自定义类”部分修改为:
Class: ParleyView
Module: Parley
步骤 2:配置 Parley
使用 Parley.configure(_ secret: String)
配置 Parley,其中包含你的 appSecret
(例如在步骤 1 中的 ViewController 中)。
Parley.configure("appSecret")
将 appSecret
替换为你的 Parley appSecret
。可以通过联系 Parley 来获取 appSecret
。
步骤 3:配置 Firebase
Parley 需要使用 FCM 标记来成功处理远程通知。
FCM Token
通过你的 Firebase 实例检索到 FCM 标记后,将其传递给 Parley 实例以支持远程通知,这可以通过使用 Parley.setFcmToken(_ fcmToken: String)
完成。
Parley.setFcmToken("fcmToken")
处理远程通知
打开你的 AppDelegate
并在 didReceiveRemoteNotification
方法中添加 Parley.handle(_ userInfo: [AnyHashable: Any])
以处理远程通知。
extension AppDelegate : UNUserNotificationCenterDelegate {
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
_ = Parley.handle(userInfo)
}
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
if UIApplication.shared.applicationState == .active {
completionHandler([]) // Do not show notifications when app is in foreground
} else {
completionHandler([.alert, .sound])
}
}
}
第4步:相机使用说明
将相机和相册使用说明添加到Info.plist
文件中。
<key>NSCameraUsageDescription</key>
<string>We need access to the camera to take photos.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>We need access to the photo library to select photos.</string>
高级
Parley支持使用高级配置,例如指定网络、指定用户信息或启用离线消息。在所有用例中,建议在使用Parley.configure(_ secret: String)
配置聊天之前应用高级配置。
网络
可以通过将ParleyNetwork
设置到Parley.setNetwork(_ network: ParleyNetwork)
方法中来设置网络配置。
let network = ParleyNetwork(
url: "https://api.parley.nu/",
path: "clientApi/v1.2/",
pin1: "/Ukz3F1LSE8d9rpOQ29KhCO/TwsUXcjbOI09tO+D2dI=",
pin2: "RkhWTcfJAQN/YxOR12VkPo+PhmIoSfWd/JVkg44einY="
)
Parley.setNetwork(network)
有关公共密钥固定的更多信息,请参阅OWASP网站。
自定义头信息
可以通过在ParleyNetwork
中使用可选的headers
参数来设置自定义头信息。该参数接受一个[String: String]
字典。
注意,Parley自身使用的头信息无法被覆盖。
let headers: [String: String] = [
"X-Custom-Header": "Custom header value"
]
let network = ParleyNetwork(
url: "https://api.parley.nu/",
path: "clientApi/v1.2/",
pin1: "/Ukz3F1LSE8d9rpOQ29KhCO/TwsUXcjbOI09tO+D2dI=",
pin2: "RkhWTcfJAQN/YxOR12VkPo+PhmIoSfWd/JVkg44einY=",
headers: headers
)
Parley.setNetwork(network)
用户信息
可以通过应用授权令牌到Parley.setUserInformation(_ authorization: String)
方法来识别和加密聊天。可以按照授权头文档轻松生成此令牌。
let authorization = "ZGFhbnw5ZTA5ZjQ2NWMyMGNjYThiYjMxNzZiYjBhOTZmZDNhNWY0YzVlZjYzMGVhNGZmMWUwMjFjZmE0NTEyYjlmMDQwYTJkMTJmNTQwYTE1YmUwYWU2YTZjNTc4NjNjN2IxMmRjODNhNmU1ODNhODhkMmQwNzY2MGYxZTEzZDVhNDk1Mnw1ZDcwZjM5ZTFlZWE5MTM2YmM3MmIwMzk4ZDcyZjEwNDJkNzUwOTBmZmJjNDM3OTg5ZWU1MzE5MzdlZDlkYmFmNTU1YTcyNTUyZWEyNjllYmI5Yzg5ZDgyZGQ3MDYwYTRjZGYxMzE3NWJkNTUwOGRhZDRmMDA1MTEzNjlkYjkxNQ"
Parley.setUserInformation(authorization)
附加信息
此外,您还可以使用Parley.setUserInformation()
方法中的additionalInformation
参数设置用户的附加信息。该参数接受一个[String: String]
字典。
let authorization = "ZGFhbnw5ZTA5ZjQ2NWMyMGNjYThiYjMxNzZiYjBhOTZmZDNhNWY0YzVlZjYzMGVhNGZmMWUwMjFjZmE0NTEyYjlmMDQwYTJkMTJmNTQwYTE1YmUwYWU2YTZjNTc4NjNjN2IxMmRjODNhNmU1ODNhODhkMmQwNzY2MGYxZTEzZDVhNDk1Mnw1ZDcwZjM5ZTFlZWE5MTM2YmM3MmIwMzk4ZDcyZjEwNDJkNzUwOTBmZmJjNDM3OTg5ZWU1MzE5MzdlZDlkYmFmNTU1YTcyNTUyZWEyNjllYmI5Yzg5ZDgyZGQ3MDYwYTRjZGYxMzE3NWJkNTUwOGRhZDRmMDA1MTEzNjlkYjkxNQ"
let additionalInformation = [
kParleyAdditionalValueName: "John Doe",
kParleyAdditionalValueEmail: "[email protected]",
kParleyAdditionalValueAddress: "Randstad 21 30, 1314, Nederland"
]
Parley.setUserInformation(authorization, additionalInformation: additionalInformation)
清除用户信息
Parley.clearUserInformation()
离线消息
可以通过 Parley.enableOfflineMessage(_ dataSource: ParleyDataSource)
方法启用离线消息。 ParleyDataSource
是一个协议,可以用来创建自己的(安全)数据源。此外,Parley 还提供了一个名为 ParleyEncryptedDataSource
的加密数据源,它使用 AES128 加密。
if let key = "1234567890123456".data(using: .utf8), let dataSource = try? ParleyEncryptedDataSource(key: key) {
Parley.enableOfflineMessaging(dataSource)
}
禁用离线消息
Parley.disableOfflineMessaging()
自定义
回调
Parley 提供了一个 ParleyViewDelegate
,可以在 ParleyView
上设置以接收回调。
self.parleyView.delegate = self
extension ChatViewController: ParleyViewDelegate {
func didSentMessage() {
debugPrint("ChatViewController.didSentMessage")
}
}
外观
图片
默认情况下启用图片上传。
self.parleyView.imagesEnabled = false
外观
Parley 提供了一个 ParleyViewAppearance
,可以在 ParleyView
上设置来自定义聊天外观。 ParleyViewAppearance
可以使用常规、斜体和粗体字体初始化,这些都可以自定义。请参考 ChatViewController.swift 以了解如何使用 ParleyViewAppearance
的示例。
let appearance = ParleyViewAppearance(fontRegularName: "Montserrat-Regular", fontItalicName: "Montserrat-Italic", fontBoldName: "Montserrat-Bold")
self.parleyView.appearance = appearance
示例
现代 | |
---|---|
![]() |
![]() |
授权
Parley 采用 MIT 授权。有关更多信息,请参阅 LICENSE 文件。