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

- Uses Jetpack (AndroidX)
#
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 cloudikecontacts
и 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.cloudikecontacts:cloudikecontacts:5.2.7" implementation "com.cloudike.cloudikelog:cloudikelog:1.2.2"}
#
InitializationInitialization is performed in two stages.
#
Stage 1. Initialize libraryThe 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 contactManager: ContactManager
override fun onCreate() { super.onCreate() // ...
// Initialize logger first because Contact SDK uses it Logger.init(applicationContext) Logger.setDebugMode(true)
// Optionaly // initRxErrorHandler()
// Initialize library ContactManager.initInstance( context = applicationContext, competitionMode = ContactManager.CompetitionMode.STANDALONE, competitorPackageName = "com.package.name.sample_package", canScheduleBackup = true, allowNetworkUsageInRoaming = true)
contactManager = ContactManager
// ...}
Lastly, initialize the contacts library using the method ContactManager.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 ContactManager.prepareToWork() for work:
ContactManager.prepareToWork( baseUrl = "Base URL of the backend", token = "Mountbit-Auth token received after 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:rxjava:2.2.19"implementation "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"
// Work managerimplementation "android.arch.work:work-runtime:1.0.1"implementation "android.arch.work:work-runtime-ktx:1.0.1"
// Date-timeimplementation "com.jakewharton.threetenabp:threetenabp:1.2.2"
// ASDtechimplementation "com.cloudike.cloudikelog:cloudikelog:1.2.1"