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í.
Cấu hình Firebase
- Tạo app Android trên Firebase Console, tải
google-services.jsonđặt vào thư mụcapp/. - Trên TingPush: upload service account JSON của cùng project Firebase đó.
- Tạo app Android trên Firebase Console, tải
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")trongpushconsole/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.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.ktclass 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" ...>Activity chính
MainActivity.ktclass 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) } }Gắn user khi đăng nhập
KotlinPushConsole.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ôngJava:
PushConsole.init(...),PushConsole.login(...),PushConsole.INSTANCE.setListener(...).Để 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
- Chạy app trên máy thật, bật log: thấy
[PushConsole] Đã đăng ký thiết bị …. - 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.
- Tab Gửi thông báo: gửi thử tới thiết bị đó.
- 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á.