Here on the devblog, we took a number of questions posed to our Spark Communications Services SDK team from developers to learn more about the platform. Two of our developers, Gibran Siddique and Denis Fedotenko, were happy to share their insights. Here’s a look at what they had to say.
Q 1: Does the SDK provided functions allow to store RAW data, provided from the DSP, encrypted and ID’ed on the device?
E.g. when the device cannot offload the data immediately, it would need to cache them in a secure fashion.
[BB] There are two ways you can send the RAW data; as part of a data blob in a chat message or as a file attachment. In both cases if the device is offline the message will be queued to be sent later.
In the case of sending the message in a data blob, the RAW data will be encrypted on the device at rest and there is a restriction on size of 70 KB. In the case of file transfers, on Android, iOS and Linux SDKs, the application provides the SDK the path to the file which we then securely transmit when we have a path to the BlackBerry infrastructure. More information on file attachments can be found on our guide [1].
Q 2: If we want to send a single, short message, e.g. an alert or emergency message, would the SDK support that and which protocols would be used?
[BB] The SDK can be used to send all sorts of messages securely. These messages can represent user-visible content or contain arbitrary information that your application can consume. Each chat has meta data which allows to convey additional info specific to developer’s needs. Additionally, each message allows custom types which could be used specific to developers’ needs. For security aspects of in transit and at rest, please see our Security whitepaper [2].
Q 3: In case there are software updates, what method shall be considered to secure update/patch the devices?
[BB] The methods used would be standard means of upgrades provided by the OS. So Google Play store for Android for example.
Q 4: Do GSM and WiFi/Internet communication use the same gateway/receiving server at Blackberry?
[BB] In general, the SDKs infrastructure is IP based and as such remain the same regardless of the wireless medium used.
Q 5: What are the minimal requirements (CPU, memory, storage, Linux version) to have the SDK being used on a platform?
[BB] In terms of versions we support Debian 9 (“stretch”) or Ubuntu 18 as outlined on [3].
We had performed some memory tests recently and found our usage for some sending/receiving messaging is as follows:
Peak virtual memory usage (KB) |
Current virtual memory usage (KB) |
Peak resident set size (KB) |
Executable size (KB) |
Data size (KB) |
75180 |
75180 |
17912 |
12804 |
48008
|
Q 6: We will integrate sensors into the system via bluetooth / wifi connections. Are there options that can be used from the spark framework without one of the supported operating systems, e.g. pure C / C++ libraries that we could include?
[BB] The Spark Communications Services SDK does not have built in support for sensors however the SDK can be used to transmit any data that is collected from the sensors. With respect to the Linux SDK, it is a pure C++ API that is contained within a shared library.
Q 7: For the SnapDragon / Android based system we have the option to use the Android version of the SDK or the Linux version (we are programming using the Qt framework, which is c++ and would thus probably go for the Linux/ C++ version). Are these library versions 100% compatible, e.g. are all API's available under both versions? (I see Linux version is 1.0.0 while Android version is 1.5.0)
[BB] As a starting point, all versions of the SDK across all OSes are compatible with each other. Additionally the Android and iOS SDKs include high level constructs to build OS specific user interfaces as well as the lower level APIs (BBMDS [4]). The Linux SDK only exposes the lower level API. For the JavaScript (web and node) SDKs we have APIs that make sense in that environment which offer the same functionality as what can be done on Android, iOS and Linux.
With regards to API availability on the Android, iOS and Linux SDKs we maintain the same feature set across different releases as enumerated on our release notes page [5]. As such the lower level APIs for R8 on Android, iOS and Linux would be the same.
Q 8: As far as I have read everything is based on Publish-Subscribe mechanism, and communication is generally called a chat, whilst it can be used to exchange data packets rather than a classical "chat". Is my understanding correct that we can use the chat to publish data packets from the SnapDragon/Android based system to a server which has a corresponding endpoint set up?
[BB] Yes this is correct. A chat is a shared space that allows many endpoints to contribute content in a series of individual messages. These messages can represent user-visible content or contain arbitrary information that your application can consume. One such example of this is our Whiteboard for Android sample application [6] or the Location Sharing iOS sample application [7].
Q 9: As an entry point I would use "Message Echo for Linux" example, install it on a Linux client and make it upload some example data instead of echoing back. Or is there a better entry point for testing data upload ?
[BB] Yes for Linux this would be the best entry point.
If you like this format, let us know on the Forums here:
blackberry spark communications services development forum
[1] https://developer.blackberry.com/files/bbm-enterprise/documents/guide/html/messages.html#attachments
[2] https://developer.blackberry.com/files/bbm-enterprise/documents/guide/html/security.html
[3] https://developer.blackberry.com/files/bbm-enterprise/documents/guide/html/gettingStarted-linux.html
[4] https://developer.blackberry.com/files/bbm-enterprise/documents/guide/html/bbmds.html
[5] https://developer.blackberry.com/files/bbm-enterprise/documents/guide/html/releaseNotes.html
[6] https://github.com/blackberry/bb-spark-android-samples/blob/master/Whiteboard/README.md
[7] https://github.com/blackberry/bb-spark-ios-samples/blob/master/LocationSharing/README.md