thx-fcm

Nei vari progetti sta nascendo l’esigenza di utilizzare messaggi di tipo push per inviare notifiche informative ai vari frontend; come servizio per l’invio è stato scelto è Firebase Cloud Messaging (FCM).

Per semplificare la configurazione e l’interazione con FCM, è stato creato thx-fcm come wrapper del pacchetto django-fcm.

Per installare il pacchetto: aggiungere nel setup.py thx-fcm e poi installare con il sistema corrente (pip, buildout …)

Assolutamente necessario creare un progetto su https://console.firebase.google.com/ e inserire la chiave FCM generata nel settings FCM_APIKEY

Di seguito gli altri settings:

THX_FCM_DEVICE_ADMIN_USER = “thux”
Serve per impostare l’utente creator di default
THX_FCM_DEVICE_DELETE_INVALID_REG_ID = False
Serve per decidere se elminare o meno il device registrato nel caso FCM risponda con un messaggio di dispositivo invalido
FCM_DEVICE_MODEL = “thx_fcm.Device”
Indica il modello che si occupa di rappresentare il Device.

Per gli altri settings vedere https://django-fcm.readthedocs.io/en/latest/

Device

È stata creata la classe Device estendendo la classe AbstractDevice (di django-fcm) per ridefinirne alcuni attributi e per aggiungere funzionalità

  • Device (AbstractDevice, UserModel, DateModel, OrderedModel)

Modelli

class thx.fcm.models.Device(*args, **kwargs)[sorgente]

Device è una classe che estende AbstractDevice di django-fcm e CleanModel, UserModel, DateModel, OrderedModel di thx-core.

Alla classe vengono aggiunti alcuni attributi per raccogliere ulteriori informazioni dei vari device che vengono registrati; il campo reference può essere utilizzato per indicare per esempio l’utente o un codice univoco per individuare il device associato ad esso.

Infine sono stati aggiunti i metodi sotto riportati.

Le notifiche possono essere inviate partendo da una istanza device precisa, oppure da un queryset.

exception DoesNotExist
exception MultipleObjectsReturned
classmethod get_test_data_for_push()[sorgente]

genera payload di esempio per il campo data (sezione custom della notifica)

classmethod get_test_extra_option_for_push()[sorgente]

genera payload di opzioni extra

classmethod get_test_notification_for_push()[sorgente]

genera payload di esempio per il campo notification (sezione base per la notifica)

mark_inactive(**kwargs)[sorgente]

metodo ingaggiato dal sistema quando si ottiene una risposta di device invalido da FCM

send_test_push_message(data=None, notification=None, extra_option=None)[sorgente]

invia notifica di test tramite FCM

Parametri
  • data – payload customizzato da inviare con la notifica; se non valorizzata verrà impostata col metodo get_test_data_for_push

  • notification – payload di base della notifica; se non valorizzata verrà impostata col metodo get_test_notification_for_push

  • extra_options – payload extra da inviare con la notifica; se non valorizzata verrà impostata col metodo get_test_extra_option_for_push