Skip to content

Add a Firebase notification version #108

@jackpf

Description

@jackpf
  • Firebase libs must only be included in non-FLOSS build

TODO

  • Build gradle with google flavour + 'com.google.firebase:firebase-messaging:23.0.0'
  • Add firebase receiver to client
  • Maybe refactor unified push receiver -> different package
  • Push notification toggle -> register Firebase push handler on the backend
  • Optional client improvement: only request notification permissions when notifications are toggled on
  • Add "com.google.firebase" % "firebase-admin" % "9.2.0" to server

Example

import com.google.firebase.FirebaseOptions
import com.google.firebase.messaging.{FirebaseMessaging, Message}
import com.google.auth.oauth2.GoogleCredentials
import java.io.FileInputStream

// 1. Initialize (do this once on startup)
val serviceAccount = new FileInputStream("path/to/serviceAccountKey.json")
val options = FirebaseOptions.builder()
  .setCredentials(GoogleCredentials.fromStream(serviceAccount))
  .build()

if (com.google.firebase.FirebaseApp.getApps.isEmpty) {
  com.google.firebase.FirebaseApp.initializeApp(options)
}

// 2. Send a "High Priority" Wake Up Call
def wakeUpDevice(deviceToken: String): String = {
  val message = Message.builder()
    .putData("action", "WAKE_UP_GPS") // Your app reads this key
    .setToken(deviceToken)
    .setAndroidConfig(
      com.google.firebase.messaging.AndroidConfig.builder()
        .setPriority(com.google.firebase.messaging.AndroidConfig.Priority.HIGH) // Critical for waking Doze
        .build()
    )
    .build()

  FirebaseMessaging.getInstance().send(message)
}

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions