Tích hợp push notification Android (Kotlin, FCM)

Kotlin/Java, minSdk 23. Firebase Cloud Messaging, màn hình cuộc gọi toàn màn hình dựng sẵn.

🤖 Android

Kotlin/Java, minSdk 23. Firebase Cloud Messaging, màn hình cuộc gọi toàn màn hình dựng sẵn.

Tải SDK trong bảng điều khiển (mục Hướng dẫn tích hợp) sau khi tạo tài khoản miễn phí.

  1. Cấu hình Firebase

    • Tạo app Android trên Firebase Console, tải google-services.json đặt vào thư mục app/.
    • Trên TingPush: upload service account JSON của cùng project Firebase đó.
  2. Thêm module SDK

    Giải nén file tải về vào thư mục gốc của project (tạo ra thư mục PushConsoleSDK/) rồi khai báo module:

    Gradle (Kotlin DSL)
    // settings.gradle.kts
    include(":pushconsole")
    project(":pushconsole").projectDir = file("PushConsoleSDK/android/pushconsole")
    
    // app/build.gradle.kts
    plugins {
        id("com.google.gms.google-services")   // Firebase
    }
    dependencies {
        implementation(project(":pushconsole"))
    }

    Yêu cầu minSdk 23, Kotlin 2.x. Dùng AGP 9 có Kotlin tích hợp sẵn thì xoá dòng id("org.jetbrains.kotlin.android") trong pushconsole/build.gradle.kts. Quyền, service FCM và màn hình cuộc gọi đã khai báo sẵn trong SDK — không cần sửa manifest.

  3. Khởi tạo trong Application

    Khởi tạo và gán listener trong Application.onCreate để không lỡ sự kiện khi app được đánh thức lúc đang tắt.

    App.kt
    class App : Application() {
        override fun onCreate() {
            super.onCreate()
            PushConsole.init(
                this,
                appId = "YOUR_APP_ID",
                serverUrl = "https://tingpush.com",
                options = PushConsole.Options(
                    notificationIcon = R.drawable.ic_notification,
                    callTexts = CallTexts(answer = "Nghe", decline = "Từ chối"),
                ),
            )
            PushConsole.listener = object : PushConsoleListener {
                override fun onCallAccepted(call: CallInfo) {
                    // Người dùng bấm Nghe → kết nối cuộc gọi (call.id, call.data["room"])
                }
                override fun onCallDeclined(call: CallInfo) { }
                override fun onCallMissed(call: CallInfo) { }
                override fun onCallEnded(callId: String) { }
                override fun onNotificationOpened(data: Map<String, String>) {
                    // điều hướng theo data["screen"]...
                }
            }
        }
    }
    
    // AndroidManifest.xml: <application android:name=".App" ...>
  4. Activity chính

    MainActivity.kt
    class MainActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            PushConsole.requestNotificationPermission(this)  // Android 13+
            PushConsole.handleIntent(intent)                 // mở từ thông báo / bấm Nghe
        }
    
        override fun onNewIntent(intent: Intent) {
            super.onNewIntent(intent)
            PushConsole.handleIntent(intent)
        }
    }
  5. Gắn user khi đăng nhập

    Kotlin
    PushConsole.login("user-123")                 // sau khi đăng nhập
    PushConsole.logout()                          // khi đăng xuất
    PushConsole.setTags(mapOf("plan" to "vip"))
    PushConsole.endCall(callId)                   // tắt màn hình đổ chuông

    Java: PushConsole.init(...), PushConsole.login(...), PushConsole.INSTANCE.setListener(...).

  6. Để cuộc gọi đổ chuông ổn định

    Kotlin
    // Màn hình "Cài đặt nhận cuộc gọi" trong app
    if (!PushConsole.canUseFullScreenIntent(this)) {
        PushConsole.openFullScreenIntentSettings(this)      // Android 14+
    }
    if (!PushConsole.isIgnoringBatteryOptimizations(this)) {
        PushConsole.openBatteryOptimizationSettings(this)   // Xiaomi, Oppo, Vivo…
    }

    Xiaomi, Oppo, Vivo, Realme: hướng dẫn người dùng bật Tự khởi động và tắt tối ưu pin (giống Zalo).

✅ Kiểm tra sau khi tích hợp

  1. Chạy app trên máy thật, bật log: thấy [PushConsole] Đã đăng ký thiết bị ….
  2. Tab Thiết bị của dự án: thiết bị xuất hiện; máy iOS có badge VoIP nếu dùng cuộc gọi.
  3. Tab Gửi thông báo: gửi thử tới thiết bị đó.
  4. Chọn 📞 Cuộc gọi, gửi thử khi app đang mở, khi đã tắt app và khi màn hình đang khoá.

Sẵn sàng tích hợp?

Tạo tài khoản để nhận App ID, API Key và tải SDK. Code mẫu trong bảng điều khiển được điền sẵn thông tin dự án của bạn.