Familiar dengan Rainbow API? Kalau belum (atau sudah), mungkin artikel ini cocok buatmu!
Di sini, saya ingin mengupas bagaimana kita developer bisa mengintegrasikan Rainbow API pada aplikasi Android yang sedang kita kembangkan.
Pertama, apa sih Rainbow itu? Rainbow adalah solusi cloud hybrid dari Alcatel Lucent perusahaan teknologi dunia asal Perancis yang menawarkan layanan komunikasi dan kolaborasi fungsional.
Nah, Rainbow API itu Software Development Kit-nya yang juga keluaran Alcatel-Lucent. Dalam pengembangan aplikasi, kita memerlukan Rainbow API agar aplikasi dapat terhubung dengan layanan yang ada pada Rainbow, seperti Authentication, Contacts, Conversation, File Sharing dan masih banyak lainnya.
Rainbow API terdiri dari beberapa SDK yang bisa digunakan, seperti SDK untuk Web, SDK untuk Node.js dan SDK untuk Mobile. SDK untuk Mobile sendiri dapat digunakan dalam pengembangan aplikasi berbasis iOS dan Android.
Pada artikel kali ini kita akan belajar bagaimana cara mengintegrasikan Rainbow API ke dalam project Android.
💻 Mulai Belajar Pemrograman
Belajar pemrograman di Dicoding Academy dan mulai perjalanan Anda sebagai developer profesional.
Daftar SekarangPrasyarat Penggunaan Rainbow SDK pada Project Android
Untuk menggunakan Rainbow SDK pada project Android, minimal target API level pada project adalah 16 “JellyBean.” Tools yang digunakan untuk pengembangan adalah Android Studio, yaitu Integrated Development Environment (IDE) resmi dari Google yang didedikasikan bagi pengembangan aplikasi Android.
Konfigurasi Project Android
Pada pembuatan project baru di Android Studio pastikan kamu memilih minimal SDK Version 16 seperti berikut :
Setelah project berhasil dibuat, pastikan kembali minimal SDK version pada berkas (file) build.gradle adalah 16 dan terdapat juga konfigurasi compileOptions seperti berikut :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
android { compileSdkVersion 27 defaultConfig { applicationId "com.example.rainbowsdk" minSdkVersion 16 targetSdkVersion 27 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } |
Konfigurasi compileOptions di atas penting karena Rainbow SDK memerlukan fitur yang terdapat pada Java 8. Selanjutnya tambahkan konfigurasi maven repository & dependensi Rainbow SDK pada berkas build.gradle yang berada pada module app seperti berikut :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
allprojects { repositories { maven { url "http://maven.openrainbow.io" } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support:exifinterface:27.1.1' implementation 'com.android.support:support-v4:27.1.1' implementation 'com.android.support.constraint:constraint-layout:1.1.2' implementation 'com.ale:rainbowsdk:1.42.0' } |
Setelah menambahkan konfigurasi maven repository & dependensi Rainbow, lakukan sinkronisasi project dengan menekan tombol Sync Now.
Rainbow SDK memerlukan beberapa permission yang perlu ditambahkan pada berkas AndroidManifest.xml seperti berikut :
1 2 3 4 5 6 7 8 |
<uses-permission android:name="android.permission.READ_PROFILE" /> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> |
Selanjutnya, tambahkan class baru yang mewarisi class Application. Class ini nantinya akan digunakan untuk inisialisasi Notification Builder & Rainbow.
Untuk inisialisasi Rainbow sendiri terdapat dua kondisi yang bisa digunakan.
- Kondisi pertama adalah kondisi dimana jika project ingin di hubungkan ke official Rainbow Environment seperti berikut :
123456789101112131415public class App extends Application {@Overridepublic void onCreate() {super.onCreate();RainbowSdk.instance().setNotificationBuilder(getApplicationContext(),MainActivity.class,R.drawable.ic_launcher_background,getString(R.string.app_name),"Connect to the app",Color.RED);RainbowSdk.instance().initialize("applicationId" , "applicationSecret");}}
Inisialisasi Rainbow di atas membutuhkan dua parameter, yaitu applicationId & secretKey yang bisa didapat pada dashboard developer di halaman hub.openrainbow.com. Parameter applicationId & secretKey diperlukan untuk mengidentifikasi project seperti apa yang sedang developer kembangkan. - Selanjutnya adalah kondisi ketika project ingin dihubungkan ke Developer Sandboxed Rainbow seperti berikut :
12345678910111213141516public class App extends Application {@Overridepublic void onCreate() {super.onCreate();RainbowSdk.instance().setNotificationBuilder(getApplicationContext(),MainActivity.class,R.drawable.ic_launcher_background,getString(R.string.app_name),"Connect to the app",Color.RED);RainbowSdk.instance().initialize();}}
Berbeda dengan kondisi pertama, kondisi di atas tidak membutuhkan applicationId & secretKey. Kenapa? Karena kondisi ini biasa digunakan pada project yang masih dalam tahap pengembangan.
Setelah inisialisasi Notification Builder & Rainbow, selanjutnya mari kita daftarkan class yang digunakan untuk inisialisasi ke dalam AndroidManifest.xml seperti berikut:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<uses-permission android:name="android.permission.READ_PROFILE" /> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <application android:allowBackup="true" android:name=".App" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> ... </application> |
Menghubungkan ke Rainbow
Untuk menghubungkan project dengan layanan yang ada pada Rainbow, hal yang pertama dilakukan adalah menjalankan service Rainbow dengan memanggil fungsi start() seperti berikut :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RainbowSdk.instance().connection().start(new StartResponseListener() { @Override public void onStartSucceeded() { } @Override public void onRequestFailed(RainbowSdk.ErrorCode errorCode, String s) { } }); } } |
Jika berhasil menjalankan service Rainbow, lanjutkan dengan memanggil fungsi Sign In seperti berikut :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RainbowSdk.instance().connection().start(new StartResponseListener() { @Override public void onStartSucceeded() { String email = "example@email.com"; String password = "rainbow"; RainbowSdk.instance().connection().signin(email, password, "host" , new SigninResponseListener() { @Override public void onSigninSucceeded() { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this , "Sign In Success" , Toast.LENGTH_SHORT).show(); //Do something on UI Thread here } }); } @Override public void onRequestFailed(RainbowSdk.ErrorCode errorCode, String s) { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this , "Sign In Failed" , Toast.LENGTH_SHORT).show(); //Do something on UI Thread here } }); } }); } @Override public void onRequestFailed(RainbowSdk.ErrorCode errorCode, String s) { } }); } } |
Fungsi Sign In di atas membutuhkan tiga parameter, seperti login, password & host. Parameter login adalah email dari user yang terdaftar pada platform Rainbow.
Untuk parameter host, kita bisa menggunakan sandbox.openrainbow.com jika project terhubung ke Developer Sandboxed Platform. Alternatifnya, bisa juga tanpa parameter host seperti berikut :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RainbowSdk.instance().connection().start(new StartResponseListener() { @Override public void onStartSucceeded() { String email = "example@email.com"; String password = "rainbow"; RainbowSdk.instance().connection().signin(email, password , new SigninResponseListener() { @Override public void onSigninSucceeded() { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this , "Sign In Success" , Toast.LENGTH_SHORT).show(); //Do something on UI Thread here } }); } @Override public void onRequestFailed(RainbowSdk.ErrorCode errorCode, String s) { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this , "Sign In Failed" , Toast.LENGTH_SHORT).show(); //Do something on UI Thread here } }); } }); } @Override public void onRequestFailed(RainbowSdk.ErrorCode errorCode, String s) { } }); } } |
Pemanggilan fungsi runThreadOnUI() bertujuan agar komponen yang berjalan pada UI Thread bisa dipanggil dan dijalankan. Sebabnya, Callback Listener dari SigninResponseListener() sendiri masih berada pada Background Thread. Fungsi runThreadOnUI() sendiri masih bisa disederhanakan lagi menjadi seperti berikut :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RainbowSdk.instance().connection().start(new StartResponseListener() { @Override public void onStartSucceeded() { String email = "example@email.com"; String password = "rainbow"; RainbowSdk.instance().connection().signin(email, password , new SigninResponseListener() { @Override public void onSigninSucceeded() { runOnUiThread(() -> { Toast.makeText(MainActivity.this , "Sign In Success" , Toast.LENGTH_SHORT).show(); //Do something on UI Thread here }); } @Override public void onRequestFailed(RainbowSdk.ErrorCode errorCode, String s) { runOnUiThread(() -> { Toast.makeText(MainActivity.this , "Sign In Failed" , Toast.LENGTH_SHORT).show(); //Do something on UI Thread here }); } }); } @Override public void onRequestFailed(RainbowSdk.ErrorCode errorCode, String s) { } }); } } |
Semoga saat kamu menjalankan project di atas hingga fungsi Sign in, berhasil yah! Jika ya, akan tampil Toast dengan pesan yang sudah ditentukan seperti ini.
Aturan penggunaan Host
Pemanggilan fungsi Sign In bisa tanpa menggunakan parameter host. Catatan:
- Host terakhir yang dipanggil adalah host akan yang digunakan.
- Jika pemanggilan fungsi Sign In baru pertama kali, maka secara otomatis akan dihubungkan ke Rainbow Official Platform “openrainbow.com”. Namun, jika masih dalam tahap pengembangan disarankan untuk menggunakan Developer Sandboxed Platform.
Semoga artikel ini dapat membantu anda. Jika ada pertanyaan, silakan tinggalkan komentar di halaman blog ini dan kami akan membantu anda.