- Truy cập Firebase Console
- Chọn project locketclone-f84b2
- Click vào ⚙️ Settings (biểu tượng bánh răng) → Project settings
- Chọn tab Service accounts
- Click Generate new private key
- Xác nhận và download file JSON
- Đổi tên file vừa download thành
service-account.json - Copy file vào thư mục:
app/src/main/assets/service-account.json
File service-account.json sẽ có dạng:
{
"type": "service_account",
"project_id": "locketclone-f84b2",
"private_key_id": "...",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
"client_email": "firebase-adminsdk-xxxxx@locketclone-f84b2.iam.gserviceaccount.com",
"client_id": "...",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
...
}- KHÔNG commit file
service-account.jsonlên GitHub - Thêm vào
.gitignore:app/src/main/assets/service-account.json - Cho production app, nên sử dụng backend server để gửi notifications
- Mở Android Studio
- Click Sync Now để sync Gradle
- Build và run app
- Build và run app trên 2 thiết bị (hoặc emulator)
- Login 2 tài khoản khác nhau và kết bạn
- Từ thiết bị A, gửi tin nhắn cho thiết bị B
- Thiết bị B sẽ nhận được push notification
- Kiểm tra file
service-account.jsonđã đặt đúng vị trí - Kiểm tra FCM token đã được lưu vào Firestore (
users/{userId}/fcmTokens) - Kiểm tra Logcat với tag "DirectNotificationSender"
- Đảm bảo thiết bị có kết nối internet
- File
service-account.jsonkhông tồn tại hoặc sai vị trí - File JSON bị corrupt hoặc không đúng format
- Access token expired (sẽ tự động refresh)
- Service account không có quyền Firebase Cloud Messaging
- Cần enable Firebase Cloud Messaging API:
- Vào Google Cloud Console
- Chọn project locketclone-f84b2
- APIs & Services → Enable APIs
- Search "Firebase Cloud Messaging API" và Enable