Skip to content

Commit

Permalink
release v5.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
acarioni committed Nov 7, 2022
1 parent 60af861 commit 602fb53
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 22 deletions.
8 changes: 4 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
# SDK for Swift Clients CHANGELOG

## xxxxxxxxxx
## 5.0.0

_Compatible with Lightstreamer Server since 7.3.0._<br>
_Compatible with code developed for the previous versions._<br>
_Released on xxxxxxxxxx._
_Released on 7 Nov 2022._

<!--21/9/2022-->
Improved the "delta delivery" mechanism, by adding the support for value differences, as per the extension introduced in Server version 7.3.0.
Currently only differences in JSON Patch format are supported.
Currently two "diff" formats are supported: JSON Patch and TLCP-diff.

<!--21/9/2022-->
Added the getValueAsJSONPatchIfAvailable function in the ItemUpdate class, to take advantage of the new support for JSON Patch differences, which may prove useful in some use cases.
See the JSDocs for details.
See the Docs for details.


## 5.0.0 beta 4
Expand Down
2 changes: 1 addition & 1 deletion LightstreamerClient.podspec
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# NB keep in sync with Package.swift
Pod::Spec.new do |s|
s.name = 'LightstreamerClient'
s.version = '5.0.0-beta.4'
s.version = '5.0.0'
s.summary = 'Lightstreamer Swift Client SDK'
s.homepage = 'https://github.com/Lightstreamer/Lightstreamer-lib-client-swift'
s.license = { :type => 'Apache 2.0', :file => 'LICENSE.md' }
Expand Down
24 changes: 12 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,15 +71,15 @@ If you prefer not to use any of the aforementioned dependency managers, you can

## Quickstart

To connect to a Lightstreamer Server, a [LightstreamerClient](https://lightstreamer.com/api/ls-swift-client/5.0.0-beta.4/Classes/LightstreamerClient.html) object has to be created, configured, and instructed to connect to the Lightstreamer Server.
To connect to a Lightstreamer Server, a [LightstreamerClient](https://lightstreamer.com/api/ls-swift-client/5.0.0/Classes/LightstreamerClient.html) object has to be created, configured, and instructed to connect to the Lightstreamer Server.
A minimal version of the code that creates a LightstreamerClient and connects to the Lightstreamer Server on *https://push.lightstreamer.com* will look like this:

```swift
let client = LightstreamerClient(serverAddress: "https://push.lightstreamer.com/", adapterSet: "DEMO")
client.connect()
```

For each subscription to be subscribed to a Lightstreamer Server a [Subscription](https://lightstreamer.com/api/ls-swift-client/5.0.0-beta.4/Classes/Subscription.html) instance is needed.
For each subscription to be subscribed to a Lightstreamer Server a [Subscription](https://lightstreamer.com/api/ls-swift-client/5.0.0/Classes/Subscription.html) instance is needed.
A simple Subscription containing three items and two fields to be subscribed in *MERGE* mode is easily created (see [Lightstreamer General Concepts](https://www.lightstreamer.com/docs/ls-server/latest/General%20Concepts.pdf)):

```swift
Expand All @@ -91,7 +91,7 @@ sub.requestedSnapshot = .yes
client.subscribe(sub)
```

Before sending the subscription to the server, usually at least one [SubscriptionDelegate](https://lightstreamer.com/api/ls-swift-client/5.0.0-beta.4/Protocols/SubscriptionDelegate.html) is attached to the Subscription instance in order to consume the real-time updates. The following code shows the values of the fields *stock_name* and *last_price* each time a new update is received for the subscription:
Before sending the subscription to the server, usually at least one [SubscriptionDelegate](https://lightstreamer.com/api/ls-swift-client/5.0.0/Protocols/SubscriptionDelegate.html) is attached to the Subscription instance in order to consume the real-time updates. The following code shows the values of the fields *stock_name* and *last_price* each time a new update is received for the subscription:

```swift
class SubscriptionDelegateImpl: SubscriptionDelegate {
Expand All @@ -110,9 +110,9 @@ Mobile Push Notifications (MPN) are based on [Apple Push Notification Service te

Before you can use MPN services, you need to
- register your app with APNs (read carefully the documentation about [Setting Up a Remote Notification Server](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server));
- configure the Lightstreamer MPN module (read carefully the section *5 Mobile and Web Push Notifications* in the [General Concepts guide](https://lightstreamer.com/docs/ls-server/7.2.0/General%20Concepts.pdf)).
- configure the Lightstreamer MPN module (read carefully the section *5 Mobile and Web Push Notifications* in the [General Concepts guide](https://lightstreamer.com/docs/ls-server/7.3.0/General%20Concepts.pdf)).

After you have an APNs account, you can create a [MPN device](https://lightstreamer.com/api/ls-swift-client/5.0.0-beta.4/Classes/MPNDevice.html), which represents a specific app running on a specific mobile device.
After you have an APNs account, you can create a [MPN device](https://lightstreamer.com/api/ls-swift-client/5.0.0/Classes/MPNDevice.html), which represents a specific app running on a specific mobile device.

The following snippet shows a sample implementation of the iOS app delegate methods needed to register for remote notifications and receive the corresponding token.

Expand All @@ -135,7 +135,7 @@ func application(_ application: UIApplication,
}
```

To receive notifications, you need to subscribe to a [MPN subscription](https://lightstreamer.com/api/ls-swift-client/5.0.0-beta.4/Classes/MPNSubscription.html): it contains subscription details and the listener needed to monitor its status. Real-time data is routed via native push notifications.
To receive notifications, you need to subscribe to a [MPN subscription](https://lightstreamer.com/api/ls-swift-client/5.0.0/Classes/MPNSubscription.html): it contains subscription details and the listener needed to monitor its status. Real-time data is routed via native push notifications.

```swift
let builder = MPNBuilder()
Expand All @@ -155,29 +155,29 @@ sub.triggerExpression = "Double.parseDouble($[2])>45.0"
client.subscribeMPN(sub, coalescing: true)
```

The notification format lets you specify how to format the notification message. It can contain a special syntax that lets you compose the message with the content of the subscription updates (see §5.4.1 of the [General Concepts guide](https://lightstreamer.com/docs/ls-server/7.2.0/General%20Concepts.pdf) ).
The notification format lets you specify how to format the notification message. It can contain a special syntax that lets you compose the message with the content of the subscription updates (see §5.4.1 of the [General Concepts guide](https://lightstreamer.com/docs/ls-server/7.3.0/General%20Concepts.pdf) ).

The optional trigger expression lets you specify when to send the notification message: it is a boolean expression, in Java language, that when evaluates to true triggers the sending of the notification (see §5.4.2 of the [General Concepts guide](https://lightstreamer.com/docs/ls-server/7.2.0/General%20Concepts.pdf)). If not specified, a notification is sent each time the Data Adapter produces an update.
The optional trigger expression lets you specify when to send the notification message: it is a boolean expression, in Java language, that when evaluates to true triggers the sending of the notification (see §5.4.2 of the [General Concepts guide](https://lightstreamer.com/docs/ls-server/7.3.0/General%20Concepts.pdf)). If not specified, a notification is sent each time the Data Adapter produces an update.

## Logging

To enable the internal client logger, create an instance of [LoggerProvider](https://lightstreamer.com/api/ls-swift-client/5.0.0-beta.4/Protocols/LSLoggerProvider.html) and set it as the default provider of [LightstreamerClient](https://lightstreamer.com/api/ls-swift-client/5.0.0-beta.4/Classes/LightstreamerClient.html).
To enable the internal client logger, create an instance of [LoggerProvider](https://lightstreamer.com/api/ls-swift-client/5.0.0/Protocols/LSLoggerProvider.html) and set it as the default provider of [LightstreamerClient](https://lightstreamer.com/api/ls-swift-client/5.0.0/Classes/LightstreamerClient.html).

```swift
let loggerProvider = ConsoleLoggerProvider(level: .debug)
LightstreamerClient.setLoggerProvider(loggerProvider)
```
## Compatibility

Compatible with Lightstreamer Server since version 7.2.0.
Compatible with Lightstreamer Server since version 7.3.0.

## Documentation

- [Live demos](https://demos.lightstreamer.com/?p=lightstreamer&t=client&lclient=apple&sclientapple=ios&sclientapple=macos&sclientapple=tvos&sclientapple=watchos)

- [API Reference](https://lightstreamer.com/api/ls-swift-client/5.0.0-beta.4/index.html)
- [API Reference](https://lightstreamer.com/api/ls-swift-client/5.0.0/index.html)

- [Lightstreamer General Concepts](https://lightstreamer.com/docs/ls-server/7.2.0/General%20Concepts.pdf)
- [Lightstreamer General Concepts](https://lightstreamer.com/docs/ls-server/7.3.0/General%20Concepts.pdf)

## Support

Expand Down
10 changes: 5 additions & 5 deletions Sources/LightstreamerClient/utils/Constants.swift
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import Foundation

#if os(macOS)
let LS_CID = "scFuxkwp1ltvcB4BJ4JikvDAj"
let LS_CID = "scFuxkwp1ltvcB4BJ4n"
#elseif os(tvOS)
let LS_CID = "zxRyen2m uz.k55AK1xlzcjn"
let LS_CID = "zxRyen2m uz.k55AKr"
#elseif os(watchOS)
let LS_CID = ".cWimz9dysogQz2GJ4L73dHzfFo"
let LS_CID = ".cWimz9dysogQz2GJ4L7s"
#else
let LS_CID = "oqVfhw.i6 37e64BHf g6j"
let LS_CID = "oqVfhw.i6 37e64Bn"
#endif
let LS_LIB_NAME = "swift_client"
let LS_LIB_VERSION = "5.0.0 beta4"
let LS_LIB_VERSION = "5.0.0"

let TLCP_VERSION = "TLCP-2.4.0"
let FULL_TLCP_VERSION = TLCP_VERSION + ".lightstreamer.com"

0 comments on commit 602fb53

Please sign in to comment.