Lightstreamer Swift 客户端 SDK
Lightstreamer Swift 客户端 SDK 允许任何 Swift 应用程序双向与 Lightstreamer 服务器 通信。API 允许订阅服务器推送的实时数据,并向服务器发送任何消息。
该库提供连接故障的自动恢复,最佳可用传输的自动选择,以及订阅和连接操作的完全解耦。它负责将订阅转发到服务器,并在连接断裂后重新打开时重新转发所有订阅。
该库还提供对移动推送通知(MPN)的支持。虽然实时订阅通过客户端连接提供更新,但 MPN 订阅通过推送通知提供更新,即使应用程序处于离线状态。它们由服务器的一个特殊模块,即 MPN 模块处理,始终保持活动状态,并在无需客户端连接的情况下继续推送。
该 SDK 还旨在取代和演变所有针对 Apple 平台(即 iOS、macOS、tvOS 和 watchOS 客户端 SDK)的客户端 SDK。
系统要求
平台 | 最低 Swift 版本 | 安装 | 状态 |
---|---|---|---|
iOS 10.0+ / macOS 10.12+ / tvOS 10.0+ / watchOS 3.0+ | 5.1 | Swift 包管理器、手动、CocoaPods | 完全测试 |
安装
Swift 包管理器
Swift 包管理器是一个用于自动分发 Swift 代码的工具,并集成到了 swift
编译器中。
一旦你设置了你的 Swift 包,将 Lightstreamer Swift 客户端 SDK 作为依赖项添加只需将其添加到 Package.swift
的 dependencies
值即可。
dependencies: [
.package(url: "https://github.com/Lightstreamer/Lightstreamer-lib-client-swift.git", from: "6.0.1")
]
CocoaPods
CocoaPods 是一个用于 Cocoa 项目的依赖管理器。要使用 CocoaPods 将 LightstreamerClient 集成到你的 Xcode 项目中,请在 Podfile 中指定它。
pod 'LightstreamerClient'
手动方式
如果你偏好不使用上述提到的任何依赖管理器,你可以手动将 Lightstreamer Swift 客户端 SDK 集成到你的项目中。
-
打开终端,
cd
到你的顶级项目目录,并运行以下命令 “如果” 你的项目尚未初始化为 git 仓库$ git init
-
通过运行以下命令将 Lightstreamer Swift 客户端 SDK 添加为 git 子模块
$ git submodule add https://github.com/Lightstreamer/Lightstreamer-lib-client-swift.git
-
打开新的
Lightstreamer-lib-client-swift
文件夹,并将LightstreamerClient.xcodeproj
拖放到应用程序 Xcode 项目的 Project Navigator 中。它应该嵌套在你的应用程序的蓝色项目图标下面。它位于所有其他 Xcode 组之上或之下并不重要。
-
完成后,在“项目导航器”中选择您的应用程序项目(蓝色项目图标),然后导航到目标配置窗口。在侧边栏的“目标”标题下选择应用程序目标。
-
在该窗口顶部的标签栏中,打开“通用”面板。
-
在“框架、库和嵌入式内容”部分下单击+按钮。
-
选择LightstreamerClient条目。
Quickstart
要连接到Lightstreamer服务器,需要创建、配置一个LightstreamerClient对象,并指示它连接到Lightstreamer服务器。以下是一个创建LightstreamerClient并连接到位于 https://push.lightstreamer.com 的Lightstreamer服务器的简化代码示例
let client = LightstreamerClient(serverAddress: "https://push.lightstreamer.com/", adapterSet: "DEMO")
client.connect()
为了订阅Lightstreamer服务器上的每个订阅,需要一个Subscription实例。一个简单的Subscription实例包含三个项目和要在MERGE模式下订阅的两个字段,可以轻松创建(参见 Lightstreamer通用概念)
let items = [ "item1", "item2", "item3" ]
let fields = [ "stock_name", "last_price" ]
let sub = Subscription(subscriptionMode: .MERGE, items: items, fields: fields)
sub.dataAdapter = "QUOTE_ADAPTER"
sub.requestedSnapshot = .yes
client.subscribe(sub)
在将订阅发送到服务器之前,通常至少要向Subscription实例附加一个SubscriptionDelegate,以便消费实时更新。以下代码显示了每次接收到新更新时字段的值stock_name和last_price
class SubscriptionDelegateImpl: SubscriptionDelegate {
func subscription(_ subscription: Subscription, didUpdateItem itemUpdate: ItemUpdate) {
print("\(itemUpdate.value(withFieldName: "stock_name")): \(itemUpdate.value(withFieldName: "last_price"))")
}
// other methods...
}
sub.addDelegate(SubscriptionDelegateImpl())
Mobile Push Notifications Quickstart
Mobile Push Notifications (MPN)基于Apple Push Notification Service技术开发。
在您可以使用MPN服务之前,您需要
您有了APNs帐户后,可以创建一个MPN设备,它代表了在特定移动设备上运行的特殊应用程序。
以下代码片段显示了一个iOS应用程序代理方法的示例实现,这些方法用于注册远程通知并接收相应的令牌。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UIApplication.shared.registerForRemoteNotifications()
return true
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
let tokenAsString = deviceToken.map { String(format: "%02x", $0) }.joined()
let mpnDevice = MPNDevice(deviceToken: tokenAsString)
}
func application(_ application: UIApplication,
didFailToRegisterForRemoteNotificationsWithError
error: Error) {
// Try again later.
}
要接收通知,您需要订阅一个MPN 订阅:它包含订阅详情和用于监视其状态的监听器。实时数据通过本地推送通知进行路由。
let builder = MPNBuilder()
builder.body("Stock ${stock_name} is now ${last_price}")
builder.sound("Default")
builder.badge(with: "AUTO")
builder.customData([
"stock_name" : "${stock_name}",
"last_price" : "${last_price}"])
let format = builder.build()
let items = [ "item1", "item2", "item3" ]
let fields = [ "stock_name", "last_price" ]
let sub = MPNSubscription(subscriptionMode: .MERGE, items: items, fields: fields)
sub.notificationFormat = format
sub.triggerExpression = "Double.parseDouble($[2])>45.0"
client.subscribeMPN(sub, coalescing: true)
通知格式允许您指定通知消息的格式。它可以包含特殊语法,允许您使用订阅更新内容来组成消息(参见一般概念指南中的第5.4.1节)。
可选的触发表达式允许您指定何时发送通知消息:它是一个Java语言的布尔表达式,当结果为真时触发通知的发送(参见一般概念指南中的第5.4.2节)。如果未指定,则在数据适配器产生更新时每次都会发送通知。
日志记录
要启用内部客户端日志记录器,创建LoggerProvider的实例,并将其设置为LightstreamerClient的默认提供程序。
let loggerProvider = ConsoleLoggerProvider(level: .debug)
LightstreamerClient.setLoggerProvider(loggerProvider)
兼容性
自版本7.4.0起与Lightstreamer服务器兼容。
文档
支持
有关问题和支持,请使用官方论坛。本页的问题列表仅用于报告错误和提出功能请求。