firebase-device-store
v0.2.0
Published
Automatically store Device and FCM token information for Firebase Auth users in Cloud Firestore.
Readme
Firebase Device Store
Automatically store Device and FCM Token information for Firebase Auth Users in Cloud Firestore.
This library is a proof of concept, and very much a work in progress.
Installation
Firebase Device Store requires Firebase v5.0.0 or later.
npm install --save firebase-device-storeSetup
The following Firebase libraries need to be enabled in your application:
import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/firestore';
import 'firebase/messaging';Example usage
import DeviceStore from 'firebase-device-store';
const deviceStore = DeviceStore(firebase.app(), 'user-devices');Documentation
Firebase Device Store automatically stores device and FCM information for Firebase Auth users in Cloud Firestore.
When creating a device store, it will:
- Request appropriate Firebase Messaging permissions, if they have not already been granted
- Subscribe to Firebase Auth and listen to changes in authentication state
- Subscribe to Firebase Messaging and listen to changes in the FCM token
- Automatically store device and FCM token information in the Cloud Firestore collection you specify
Data Model
A Document is created in the Cloud Firestore collection for each logged in user:
/user-devices
- userId1: {},
- userId2: {},The structure of this Document is as follows:
{
devices: Device[],
userId: string,
}A Device object contains the following:
{
deviceId: string, // The browser's user agent
fcmToken: string, // The FCM token
name: string, // The name of the browser
os: string, // The OS of the device
type: 'web'
}API
DeviceStore(app, collectionPath)
Parameters:
app:firebase.app.Appfor the Firebase App to usecollectionPath: (Optional)stringto specify the Cloud Firestore collection where devices should be stored. Defaults touser-devices.
Returns:
Promise<DeviceStore> containing:
signOut: A method to be called beforefirebase.auth().signOut()to ensure that the device token is removed from the user. This can't be done automatically due to Cloud Firestore security rules.unsubscribe: A method that can be called to unsubscribe the device store from Auth and Messaging.
Security rules
You will need to add the following security rules for your Cloud Firestore collection:
service cloud.firestore {
match /databases/{database}/documents {
// Add this rule, replacing `user-devices` with the collection path you would like to use:
match /user-devices/{userId} {
allow create, read, update, delete: if request.auth.uid == userId;
}
}
}