LightstreamerClient 6.1.1

LightstreamerClient 6.1.1

Lightstreamer 维护。



 
依赖
Starscream~> 4.0.6
Alamofire~> 5.8.1
RMJSONPatch~> 1.0.5
 

  • Lightstreamer

Lightstreamer Swift 客户端 SDK

Swift Platforms Swift Package Manager

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.swiftdependencies 值即可。

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_namelast_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服务器兼容。

文档

支持

有关问题和支持,请使用官方论坛。本页的问题列表仅用于报告错误和提出功能请求。

许可协议

Apache 2.0