Mobil SDK-nı Android tətbiqinə qoşmaq
Son yeniləmə: 9 oktyabr 2026 · 11 dəq oxunur
Android SDK Kotlin ilə yazılıb, Java-dan da işləyir. Şəbəkədən başqa heç bir icazə istəmir və ekranlarınıza heç nə əlavə etmir. 1.0.2-dən söhbətdə kamera ilə şəkil və video çəkmək və səsli mesaj göndərmək olar. Kamera üçün icazə lazım deyil: SDK telefonun öz kamera tətbiqini açır, FileProvider SDK-nın içindədir; tətbiqin manifestində CAMERA elan olunubsa, SDK əvvəlcə bu icazəni soruşur. Səsli mesaj üçün tətbiq öz AndroidManifest.xml-ində RECORD_AUDIO elan etməlidir, yoxsa mikrofon düyməsi görünmür və SDK bunu loga yazır.
Addımlar
-
1
Tələblər
- Android 6.0 (API 23) və ya daha yeni,
compileSdk35 və ya daha yeni, Kotlin 1.8 və ya daha yeni. - Panelin Quraşdırma bölməsindən App ID və Android API açarı (
android_…).
- Android 6.0 (API 23) və ya daha yeni,
-
2
Paketi əlavə edin
Paket Maven Central-dadır. Çox layihədə
settings.gradle.kts-dəmavenCentral()artıq var.// app/build.gradle.kts dependencies { implementation("ai.clomni:messenger:1.0.5") } -
3
SDK-nı başladın
initialize-i bir dəfə,Applicationsinfinizdə çağırın. Bildiriş tətbiqin prosesini başlada bilər, onun açdığı Messenger-ə isə hazır SDK lazımdır, ona görəActivitygecdir.// App.kt import android.app.Application import ai.clomni.messenger.Clomni import ai.clomni.messenger.ClomniLogLevel class App : Application() { override fun onCreate() { super.onCreate() Clomni.initialize(this, appId = "app_…", apiKey = "android_…") if (BuildConfig.DEBUG) Clomni.setLogLevel(ClomniLogLevel.DEBUG) } }<!-- AndroidManifest.xml --> <application android:name=".App" ...>AGP 8 və daha yenisində
BuildConfig.DEBUGüçünapp/build.gradle.kts-dəbuildFeatures { buildConfig = true }lazımdır.Clomni-nin metodlarını istənilən thread-dən çağırmaq olar, dinləyicilər əsas thread-də gəlir. İkinciinitializenəzərə alınmır. -
4
İstifadəçini daxil edin
Öz login-inizdən sonra, serverdən gələn
user_hashilə:val user = ClomniUser(userId = "12345", email = "[email protected]", name = "Aysel") Clomni.loginUser(user, userHash = hashFromYourServer) Clomni.updateUser(language = "az", customAttributes = mapOf("plan" to "premium")) // Together with your app's own logout: Clomni.logout()
Hash-in server kodu «Mobil SDK açarları və istifadəçinin tanıdılması» məqaləsindədir.
Tətbiq hər açılanda, istifadəçi daxil olubsa,
loginUser-i yenidən çağırın, istifadəçi təzə daxil olmuş kimi. Eyni istifadəçi üçün SDK saxlanmış sessiyanı işlədir. -
5
Messenger-i açın
findViewById<View>(R.id.support).setOnClickListener { Clomni.present(source = "profile_support") } // Jetpack Compose Button(onClick = { Clomni.present(source = "profile_support") }) { Text("Support") }Clomni.presentNewConversation(source): birbaşa yeni söhbət.Clomni.presentConversation(id): məlum söhbət, IDonConversationStarted-dən gəlir.Clomni.dismiss(): Messenger-i koddan bağlayır.
Oxunmamış cavabların sayı, düymənin yanında göstərmək üçün:
class ProfileActivity : AppCompatActivity() { private val unread = UnreadCountListener { count -> supportBadge.isVisible = count > 0 supportBadge.text = count.toString() } override fun onStart() { super.onStart() Clomni.addUnreadCountListener(unread) } override fun onStop() { Clomni.removeUnreadCountListener(unread) super.onStop() } }Üzən düymə standart olaraq sönülüdür:
Clomni.setLauncherVisible(true), aşağı naviqasiya panelinin üstünə qaldırmaq üçünClomni.setBottomPadding(72)(dp). -
6
Hadisələr, linklər, dil və görünüş
Messenger-in hadisələrini dinləmək üçün:
Clomni.onMessengerOpened { source -> Log.d("App", "opened from $source") } Clomni.onMessengerClosed { Log.d("App", "closed") } Clomni.onConversationStarted { id -> Log.d("App", "conversation $id") } Clomni.onFlowCompleted { flowId -> Log.d("App", "flow $flowId completed") } Clomni.onUnreadCountChanged { count -> Log.d("App", "unread $count") }Hər hadisənin bir dinləyicisi olur: yenisi köhnəsini əvəz edir,
nullonu silir.Xəbərin düyməsi veb ünvanı və ya tətbiqin deep link-ini aça bilər.
onLinktəyin olunubsa, link əvvəlcə tətbiqə gəlir. Tətbiq onu özü açıbsatrueqaytarın;falsevə ya dinləyici yoxdursa, linki sistem açır.Clomni.onLink { url -> if (url.startsWith("example://")) { startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)).setPackage(packageName)) true } else { false } }Dil, səslər və tətbiqin öz rəngi:
Clomni.setLanguage("en") // az, en or ru; null follows the phone Clomni.setSoundsEnabled(false) // off whatever the panel says Clomni.setTheme( primaryColor = "#0A66C2", typeface = ResourcesCompat.getFont(context, R.font.montserrat), mode = ClomniThemeMode.DARK, // LIGHT, DARK or SYSTEM )setLanguagepaneldə yandırılmış dillərdən birini seçir (Görünüş › «Dillər»). Boş və ya sönülü dil verilsə, telefonun dili, o da yoxdursa panelin əsas dili işlənir.- Səslər: söhbət açıq olanda göndərilən və gələn mesajın qısa səsi. Telefonun səssiz rejiminə tabedir.
setThemepanelin rənginin, şriftinin və rejiminin üstünə tətbiqin özününkünü qoyur. Rəng#RRGGBBformatındadır, brendin digər rəngləri ondan törədilir. Hər çağırış əvvəlkini əvəz edir, verilməyən dəyər panelinki qalır. Format səhvdirsə, logdasetTheme: primaryColor "…" is not #RRGGBBçıxır.- Yalnız şrift üçün:
Clomni.setTypeface(typeface). Şrift istifadəçinin mətn ölçüsü ayarına yenə tabedir.
-
7
Push: Firebase-i tətbiqə qoşun
Operatorun cavabları bağlı tətbiqə FCM data mesajı kimi çatır. SDK-nın Firebase asılılığı yoxdur: tətbiqiniz öz
firebase-messagingkitabxanasını saxlayır, öz push-larınız sizdə qalır.Firebase console › layihəniz › Project Overview › + Add app › Android: paket adını yazın, «Register app»,
google-services.json-u yükləyibapp/qovluğuna qoyun.// settings.gradle.kts (or the root build.gradle.kts) plugins { id("com.google.gms.google-services") version "4.4.2" apply false }// app/build.gradle.kts plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("com.google.gms.google-services") } dependencies { implementation("ai.clomni:messenger:1.0.5") implementation(platform("com.google.firebase:firebase-bom:33.4.0")) implementation("com.google.firebase:firebase-messaging") }Panelə
google-services.jsonyox, layihənin service account JSON faylı yüklənir: «Mobil SDK push açarları» məqaləsinə baxın. -
8
Push: tokeni və mesajları ötürün
// AppMessagingService.kt import ai.clomni.messenger.Clomni import ai.clomni.messenger.ClomniPush import com.google.firebase.messaging.FirebaseMessagingService import com.google.firebase.messaging.RemoteMessage class AppMessagingService : FirebaseMessagingService() { override fun onNewToken(token: String) { Clomni.setDeviceToken(token) // and to your own server, if the app has its own pushes } override fun onMessageReceived(message: RemoteMessage) { if (ClomniPush.handle(this, message.data)) return // your app's own push } }<!-- AndroidManifest.xml, inside <application> --> <service android:name=".AppMessagingService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service>FCM
onNewToken-i yalnız token dəyişəndə çağırır. Cari tokeni hər açılışda da verin,Application.onCreate-dəinitialize-dən sonra:FirebaseMessaging.getInstance().token.addOnSuccessListener(Clomni::setDeviceToken)
Tətbiqdə yalnız bir
FirebaseMessagingServiceolur. Başqası artıq varsa, Clomni mesajlarını həmin servisdə ötürün.ClomniPush.isClomniPush(data)push-un Clomni-yə aid olub-olmadığını emal etmədən deyir. -
9
Push: Android 13 icazəsi və ikon
Android 13 və daha yenisində bildiriş üçün
POST_NOTIFICATIONSicazəsi lazımdır. SDK onu özü istəmir: manifestdə elan edin və məntiqli anda istəyin, məsələn ilk mesajdan sonra.<!-- AndroidManifest.xml --> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
class MainActivity : AppCompatActivity() { private val askNotifications = registerForActivityResult(ActivityResultContracts.RequestPermission()) { } private fun askForNotifications() { if (Build.VERSION.SDK_INT >= 33 && ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED ) { askNotifications.launch(Manifest.permission.POST_NOTIFICATIONS) } } }İcazə olmasa bildiriş göstərilmir, oxunmamış mesajların sayı isə yenə yenilənir. Kiçik ikon tətbiqin ikonudur. O, siluet deyilsə, Android boz kvadrat çəkir:
Clomni.setNotificationIcon(R.drawable.ic_notification)ilə ağ siluet ikon verin.İstifadəçi hər söhbət üçün bir bildiriş görür: başlıq operator və brend, mətn mesajın özü (180 simvola qədər). Bildiriş kanalı
clomni_messages-dir. Toxunanda tətbiq, üstündə həmin söhbət açılır. Messenger açıq olanda Clomni bildirişi göstərilmir. -
10
Yoxlayın
- Tətbiqi telefonda işə salın, bildirişlərə icazə verin və Messenger-i bir dəfə açın.
- Panel › kanalınız › ayarlar sütunu › Push › «Test bildirişi» › cihazı seçin › «Göndər».
Loglar logcat-dadır, tag
Clomni. Tez-tez rastlaşan xətalar:call Clomni.initialize first:initialize-iApplication.onCreate-də çağırın və sinfi manifestdəandroid:nameilə göstərin.api_key səhvdir və ya bu platforma üçün deyil:android_…açarını işlədin, açarın ləğv olunmadığını yoxlayın.notification not shown (POST_NOTIFICATIONS?): Android 13+ icazəsini istəyin.- Servisinizin
onMessageReceived-i çağırılmır: servis manifestdə yoxdur, ya da başqaFirebaseMessagingServicemesajları götürür.
Java-dan:
Clomni.initialize(context, "app_…", "android_…");,Clomni.loginUser(new ClomniUser("12345", "[email protected]"), hashFromYourServer);,Clomni.present("profile_support");. -
11
Tam təlimat
- PDF: Clomni Mobile SDK təlimatı, Azərbaycan, ingilis və rus dilində.
- Onlayn: Android.
- Paneldə: kanalın ayarlar sütununda «Təlimat».