Mobile SDK

Open doors with your mobile app, via Digital Key functionality! The SALTO KS mobile SDKs make it easy to build a seamless door opening experience in your application.

Decrease your app’s time to market with our out-of-box support for opening doors with your smartphone, natively inside your applications. Let’s save you some time, so you can work on the unique parts of your app that matter the most.

SALTO KS offers two types of credentials: Tag & Digital Key

TAG

A tag is a physical device (contactless key fob) that works based on RFID. Tags represent the user’s physical credentials to a lock. Every valid tag can lock and unlock a lock. RFID technologies available: DESfire, Mifare. 13.56MHz contactless RFID identification. High security, by using password and encrypted Proximity fobs.

DIGITAL KEY

A Digital Key is the virtual equivalent of a Tag. The Digital Key is stored on the user’s mobile device, and when presented to a lock, it uses BLE (Bluetooth Low Energy) to open the lock. This way users can use their smartphones as a Tag, opening the lock without relying on internet connection; which makes Digital Key as secure as using a physical Tag.

Technical information

The brain of a SALTO KS system is the IQ, it is the link between the lock and cloud. The IQ receives all changes and settings from your application and ensures that all locks are updated within seconds. A Digital Key is generated using encryption keys that are normally unique per IQ. It is however possible to synchronise these keys between the IQs that are part of a collection, so you can use the Digital Key on locks that are attached to different IQs

FEATURES

  • Extract your apps Public Key for Communicating with Connect API

  • Use Digital Key from Connect API to open a lock

SDK Demos

Have a look at our demo apps to understand how to integrate Digital Key in your App.

Android ClaySDK Demo

iOS ClaySDK Demo

Show me content for:IOSANDROID

ClaySDK

Carthage compatible CocoaPods compatible License: MIT

By Salto KS.

Move to Gitlab

This repository is deprecated. Distribution of ClaySDK moved to Gitlab and requires authentication. Please contact SaltoKS support for more information on how to migrate.

Docs can be found here: https://gitlab.com/claysolutions/public/clay-sdk/-/wikis/Home

Introduction

This SDK for iOS contains the most up-to-date frameworks for integrating Mobile Key technology into your own iOS applications. It will setup the necessary security to communicate with Connect API, and unlock locks with encrypted Mobile Keys returned by the Connect API. The SDK for iOS includes iOS libraries, developer documentation and a sample Xcode project to get you up and running quickly and easily.

Requirements

  • iOS 11+

Apart from that, these frameworks must be included into the target project:

  • SaltoJustINMobileSDK.xcframework
  • CoreBluetooth.framework
  • Foundation.framework
  • VirgilSDK
  • VirgilCrypto
  • VirgilCryptoFoundation
  • VSCCommon
  • VSCFoundation

Installation

First, you need to obtain a copy of the JustInMobile iOS SDK from Salto Systems. Once you have this copy, you can start using the SDK.

The Virgil libraries can be found at Virgil Security Objective-C/Swift SDK

CocoaPods

CocoaPods is a dependency manager for Cocoa projects.

To install ClaySDK, simply add the following line to your Podfile:

pod 'ClaySDK', '~> 1.10'

Usage

import ClaySDK
//...
//'self' must conform to ClayDelegate, the apiKey will be provided to you
let clay = ClaySDK(installationUID: "SOME_UNIQUE_ID", apiKey: "THE_API_PUBLIC_KEY", delegate: self)
//...
// Public key that you need to send via API to activate mobile key
let publicKey = clay.getPublicKey()
//...
//'yourOpenDoorDelegate' must conform to OpenDoorDelegate
clay.openDoor(with: "your-encrypted-key", delegate: yourOpenDoorDelegate)

Inside OpenDoorDelegate implementation ClayResult can be handled

import SaltoJustINMobileSDK
//...
func didOpen(with result: ClayResult?) {
    guard let result = result else { return }
    // by using SSOperationGrup
    let group = SSOpResult.getGroup(result.getOpResult())
    switch group {
    case .groupAccepted: 
        // key sucessfully sent to lock (we don't know if user have access, access is indicated by light of the lock)
        break
    case .groupFailure, .groupRejected, .groupUnknownResult:
        // there was a problem with sending key to the lock
        break
    default:
        break
    }
}

Author

Changelog

See CHANGELOG.

App storePlay store