IBM HyperProtectSDK

The IBM Hyper Protect iOS SDK for CareKit is an addon for the CareKit framework that consumes IBM Hyper Protect Services for zero-trust persistent cloud storage and bi-directional synchronization across multiple devices with just 2 lines of code

9
5
Swift

IBM Hyper Protect SDK for iOS

This SDK implements CareKit’s Remote Synchronization API and must be coupled with the backend SDK IBM-HyperProtectMBaaS on the server side.

Note, this is a pre-1.0 release and is still in beta

Roadmap

  • [ ] Logging with OSLog
  • [ ] OAuth2 support with JWT
  • [x] Bi-directional Synchronization of other high level entities (Contact, CarePlan, Patient)
  • [ ] Comprehensive integration tests
  • [ ] Comprehensive system tests
  • [ ] OpenAPI Specification template
  • [ ] IBM Cloud Starter Kit support
  • [ ] Travis Build Support
  • [ ] Large object support ( > 16 MB)

Getting Started

This package can be imported into XCode using Swift Package Manager:

spm-add-packages

spm-add-git-url

spm-git-master

spm-add-target

Now import the package with

import IBMHyperProtectSDK

and pass it in to your OCKStore:


let remote = IBMMongoRemote(/* credentials and connection information */)
let store = OCKStore(name: "SampleAppStore", type:
  inMemory, remote: remote)

By default if no backend API information is passed in, it will default to https://localhost:3000 . Pass in the apiLocation parameter to point to your IBM Hyper Protect MBaaS deployed locally for development or in IBM Cloud. If the MBaaS is deployed to the IBM Cloud, a certificate may be needed to go through the authentication challenge. This certificate may be added to your project folder. If no value is passed into certificate, it will default to carekit-root.

Contributing

We’re always looking for contributors to help improve the CareKit and IBM Hyper Protect community. Please follow the guide

Known Issues:

  • When using the IBM Hyper Protect SDK, you must also include CareKit in your app via SPM. Including CareKit using the traditional sub-project approach can cause runtime errors in the CoreData stack.
  • As XCode and iOS prevent insecure connections by default, you must use SSL/TLS (https) for your connections. There are work-arounds but given that security is a core tennant of this SDK, we do not recommend skipping SSL/TLS, even in developement/testing.
  • The backend of this SDK uses MongoDB which has a limit of 16 MB. An external object store must be used for objects larger than 16 MB (or segmented to fit the 16 MB limit). We are investigating GridFS support for larger objects.

Self-Paced Lab:

Detailed end-to-end instructions for deploying the IBM-HyperProtectMBaaS and the iOS SDK (this project) with a CareKit sample app are provided here.