Getting Started
#
Before You BeginThis SDK is stored in the private maven repo and developed for use with the Cloudike Backend. If you need access, please Contacts Us
#
Requirements- Minimum API level 18 or later

- Note! Current SDK version uses Pre-AndroidX Room and Paging library versions.
#
InstallationTo enable library in your app, you should add a link to our private repository in the application-level Gradle file (usually app / build.gradle
). Then, add a dependency for the libraries cloudikephotos
and cloudikelog
as shown below:
// ...repositories { // ... maven { url "https://rt.cloudike.com/artifactory/libs-release-local" credentials { username = "${artifactory_username}" password = "${artifactory_password}" } }}
// ...dependencies { implementation 'com.cloudike.cloudikephotos:cloudikephotos:2.9.4' implementation "com.cloudike.cloudikelog:cloudikelog:1.2.2"}
#
InitializationInitialization is performed in two stages.
#
Stage 1. Initialize library.The best place for the first stage is the method Application.onCreate(). The first step is to initialize the library Logger
. Optionally, you can implement initRxErrorHandler() to log errors that occur in RxJava2.
private lateinit var photoManager: PhotoManager
override fun onCreate() { super.onCreate() // ...
// Initialize logger first because Photos SDK uses it Logger.init(applicationContext) Logger.setDebugMode(true)
// Optionaly // initRxErrorHandler()
PhotoManager.initInstance( context = applicationContext, competitionMode = PhotoManager.CompetitionMode.INTEGRATION, competitorPackageName = "com.cloudike.NO_COMPETITOR_APP", enablePeriodicScans = true)
photoManager = PhotoManager // ...}
Lastly, initialize the photos library using the method PhotoManager.initInstance().
If you need to use the custom parametersSSL Socket Factory
and Trust Manager
, use the following guide.
#
Stage 2. Preparation for work.After user has logged in, it is necessary to call PhotoManager.prepareToWork() for work:
PhotoManager.prepareToWork( baseUrl = "Base URL of the backend", token = "Authentication token received during user login", profileId = "User profile id", userAgent = "User agent string"), deviceId = "Unique device id")
#
Optionally: initialization of the RxJava2 error handlerTo log errors that occur in RxJava2, it is advisable to initialize the handler:
private fun initRxErrorHandler() { RxJavaPlugins.setErrorHandler(Consumer { exception -> var e: Throwable? = exception if (e is UndeliverableException) { e = e.cause } if (e is OnErrorNotImplementedException) { // error received by observer that does not provide onError handler if (e.cause != null) { e = e.cause } } if (e is IOException || e is SocketException) { // fine, irrelevant network problem or API that throws on cancellation Logger.main().i("RxErrorHandler", "Exception caught", e) return@Consumer } if (e is InterruptedException) { // fine, some blocking code was interrupted by a dispose call Logger.main().i("RxErrorHandler", "Exception caught", e) return@Consumer } if (e is NullPointerException || e is IllegalArgumentException || e is UnsupportedOperationException) { // that's likely a bug in the application Logger.main().e("RxErrorHandler", "Exception caught", e) Thread.currentThread().uncaughtExceptionHandler .uncaughtException(Thread.currentThread(), e) return@Consumer } if (e is IllegalStateException) { Logger.main().e("RxErrorHandler", "Exception caught", e) // that's a bug in RxJava or in a custom operator Thread.currentThread().uncaughtExceptionHandler .uncaughtException(Thread.currentThread(), e) return@Consumer } Logger.main().w("RxErrorHandler", "Undeliverable exception received, not sure what to do", e) })}
#
DependenciesOur SDK uses the following dependencies:
// RxJavaimplementation "io.reactivex.rxjava2:rxkotlin:2.3.0"implementation "io.reactivex.rxjava2:rxandroid:2.1.1"
// Retrofitimplementation "com.squareup.retrofit2:retrofit:2.6.4"implementation "com.squareup.retrofit2:converter-gson:2.6.4"implementation "com.squareup.retrofit2:adapter-rxjava2:2.6.4"implementation "com.squareup.okhttp3:okhttp:3.12.10"implementation "com.squareup.okhttp3:logging-interceptor:3.12.10"
// Roomimplementation "android.arch.persistence.room:runtime:1.1.1"implementation "android.arch.persistence.room:rxjava2:1.1.1"kapt "android.arch.persistence.room:compiler:1.1.1"
// Pagingimplementation "android.arch.paging:runtime:1.0.1"implementation "android.arch.paging:rxjava2:1.0.1"
// Work managerimplementation "android.arch.work:work-runtime:1.0.1"implementation "android.arch.work:work-runtime-ktx:1.0.1"
// ASDtechimplementation "com.cloudike.cloudikelog:cloudikelog:1.1.0"