firebase-device-store
v0.2.0
Published
Automatically store Device and FCM token information for Firebase Auth users in Cloud Firestore.
Downloads
3
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-store
Setup
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.App
for the Firebase App to usecollectionPath
: (Optional)string
to 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;
}
}
}