Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [GIT Broadcast](https://git.dev.siap.id/micro-service/mobile-notification)
- [GIT Library Broadcast](https://git.dev.siap.id/composer-package/mobile-notification-library)
- # Deployment
- ## Devel
- Server: 172.17.1.31
- Menggunakan Docker dan Traefik
- Stack: mobile-notifcation
- Url Akses: https://mnotif.dev.jagr.id/
- ## Riil
- # Konfigurasi
- ## Database
- - Devel
- Host: db-01.dev.siap.id
- Database: mobilenotifdb
- - Rill: XXX
- ## Cache
- - Devel
- Driver: memcached
- Host: 172.17.1.31
- - Rill: XXX
- ## Queue
- - Devel
- Driver: beanstalkd
- Host: 172.17.1.31
- Queue: mobile-notification
- - Rill: XXX
- ## Definisi
- Group: User dari client
- Device: Device dari user (bisa multi device dalam satu group)
- Topic: Topik yang di subscribe oleh user
- Topic Group: Topic yang di subscribe oleh group
- Message: Notifikasi yang dikirimkan ke user (Bisa direct dari group atau dari topic)
- ## Alur Aplikasi
- Proses pembuatan user baru
- 1. Ketika user login, (api/groups/store) client akan mengirimkan key group untuk dibuatkan group (jika belum memiliki)
- 2. Setelah group dibuat, client akan mengirimkan `reg_token` untuk insert device ke group
- 3. Jika group belum memiliki `notif_key` maka akan dibuatkan `notif_key` untuk manajemen device yang terhubung ke group pada service FCM
- Proses tambah device baru
- 1. Ketika user login, (api/groups/{group}/store-device) client akan mengirimkan `reg_token` baru yang akan di insert ke tabel device
- 2. Jika group belum memiliki `notif_key` maka akan dibuatkan `notif_key`
- 3. Jika group sudah memiliki `notif_key` maka akan device ini akan di tambahkan ke `notif_key` yang sudah ada
- 4. Jika group sudah memiliki topic, maka device ini juga di subscribe ke topic yang sudah ada
- Proses hapus device
- 1. Ketika user logout, (api/groups/{group}/delete-device) client akan mengirimkan `reg_token` yang akan dihapus dari tabel device
- 2. Cek group apabila memiliki `notif_key` maka akan dihapuskan `reg_token` dari `notif_key`
- 3. Cek group apabila memiliki topic, maka device ini juga di unsubscribe dari topic yang sudah ada
- Proses subscribe topic
- 1. Ketika user subscribe topic, (api/groups/{topic}/subscribe) client akan mengirimkan `topic` dan `group` yang akan di subscribe
- 2. Dari group tersebut akan diambil semua device yang valid dan di subscribe ke topic yang diinginkan (karena FCM hanya support subscribe topic dari device)
- Proses unsubscribe topic
- 1. Ketika user unsubscribe topic, (api/groups/{topic}/unsubscribe) client akan mengirimkan `topic` dan `group` yang akan di unsubscribe
- 2. Dari group tersebut akan diambil semua device yang valid dan di unsubscribe dari topic yang diinginkan
- Proses broadcast message ke group
- 1. Ketika user broadcast message ke group, (api/messages/send) client akan mengirimkan `payload` dan `group_ids` yang akan di broadcast
- 2. Dari group tersebut akan diambil `notif_key` yang valid dan di broadcast message ke device yang terhubung ke `notif_key`
- Proses broadcast message ke topic berdasarkan topic_id
- 1. Ketika user broadcast message ke topic, (api/topics/send-message) client akan mengirimkan `payload` dan `topic_id` yang akan di broadcast
- 2. Dari topic_id tersebut akan diambil nama topic dan di broadcast message ke device yang subscribe ke topic tersebut
- 3. Jika environment selain `production` maka nama topic akan di tambahkan `devel-` di depan nama topic secara kode (bukan dari database)
- Proses broadcast message ke topic berdasarkan kriteria
- 1. Ketika user broadcast message ke topic, (api/topics/send-message) client akan mengirimkan `payload` dan `kriteria` yang akan di broadcast
- 2. Kriteria tersebut berisi `id` dari topic dan akan diconvet menjadi nama topic dan disesuaikan kondisi yang dikirimkan (seperti notasi `&&` dan `||`)
- 3. Jika environment selain `production` maka nama topic akan di tambahkan `devel-` di depan nama topic secara kode (bukan dari database)
- ## Pengecekan kendala
- 1. Pastikan user sudah login dan memiliki group dan device
- 2. Pastikan group sudah memiliki `notif_key`
- 3. Cek pada tabel `message` pada group tersebut apakah sudah ada
- 4. Jika `k_status_message` 3, maka cek `status` pada tabel `message` untuk mengetahui status message tersebut
- 5. Jika `k_status_message` 2 dan user belum menerima notifikasi dan status adalah `Requested entity was not found.` maka error tersebut diakibatkan oleh `notif_key` yang tidak valid
- 6. Untuk mengatasi hal tersebut, cek pada tabel `failed_jobs` apakah ada error yang terjadi pada saat pembuatan `notif_key` pada group tersebut dari kolom `payload` dengan operation `add` atau `create` dengan `notification_key_name` yang sesuai dengan `group_id` yang ada di `message` yang statusnya `Requested entity was not found.`
- 7. Jika ada error pada `failed_jobs` maka coba jalankan command untuk regenerasi `notif_key` pada group tersebut dengan cara `php artisan mobile-notification:generate-notification-key {group_id}`. pastikan `APP_ENV` pada `.env` sudah sesuai dengan environment yang diinginkan
- 8. Ulangi langkah 1-7 jika masih terjadi error
Advertisement
Add Comment
Please, Sign In to add comment