Class MpnDevice

java.lang.Object
com.lightstreamer.client.mpn.MpnDevice

public class MpnDevice extends Object
Class representing a device that supports Mobile Push Notifications (MPN).
It contains device details and the listener needed to monitor its status.
An MPN device is created from the application context, the sender ID (a.k.a. authorized entity) and a device token (a.k.a. registration token) obtained from Firebase Cloud Messaging APIs, and must be registered on the LightstreamerClient in order to successfully subscribe an MPN subscription. See MpnSubscription.
After creation, an MpnDevice object is in "unknown" state. It must then be passed to the Lightstreamer Server with the LightstreamerClient.registerForMpn(MpnDevice) method, which enables the client to subscribe MPN subscriptions and sends the device details to the server's MPN Module, where it is assigned a permanent device ID and its state is switched to "registered".
Upon registration on the server, active MPN subscriptions of the device are received and exposed with the LightstreamerClient.getMpnSubscriptions(String) method.
An MpnDevice's state may become "suspended" if errors occur during push notification delivery. In this case MPN subscriptions stop sending notifications and the device state is reset to "registered" at the first subsequent registration.
  • Constructor Summary

    Constructors
    Constructor
    Description
    MpnDevice(android.content.Context appContext, String token)
    Creates an object to be used to describe an MPN device that is going to be registered to the MPN Module of Lightstreamer Server.
    During creation the MpnDevice tries to acquires some more details: The package name, through the Application Context. Any previously registered device token, from the Shared Preferences storage. It then saves the current device token on the Shared Preferences storage.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Adds a listener that will receive events from the MPN device object.
    The same listener can be added to several different MPN device objects.
    The application ID of this MPN device, corresponding to the package name of the application.
    The server-side unique persistent ID of the device.
    The ID is available only after the MPN device object has been successfully registered on the server.
    The device token of this MPN device.
    List containing the MpnDeviceListener instances that were added to this MPN device object.
    The platform identifier of this MPN device.
    The previous device token of this MPN device.
    The status of the device.
    The status can be: UNKNOWN: when the MPN device object has just been created or deleted.
    long
    The server-side timestamp of the device status.
    boolean
    Checks whether the MPN device object is currently registered on the server or not.
    This flag is switched to true by server sent registration events, and back to false in case of client disconnection or server sent suspension events.
    boolean
    Checks whether the MPN device object is currently suspended on the server or not.
    An MPN device may be suspended if errors occur during push notification delivery.
    This flag is switched to true by server sent suspension events, and back to false in case of client disconnection or server sent resume events.
    void
    Removes a listener from the MPN device object so that it will not receive events anymore.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • MpnDevice

      public MpnDevice(@Nonnull android.content.Context appContext, @Nonnull String token)
      Creates an object to be used to describe an MPN device that is going to be registered to the MPN Module of Lightstreamer Server.
      During creation the MpnDevice tries to acquires some more details:
      • The package name, through the Application Context.
      • Any previously registered device token, from the Shared Preferences storage.
      It then saves the current device token on the Shared Preferences storage. Saving and retrieving the previous device token is used to handle automatically the cases where the token changes, such as when the app state is restored from a device backup. The MPN Module of Lightstreamer Server is able to move MPN subscriptions associated with the previous token to the new one.
      Parameters:
      appContext - the Application Context
      token - the device token
      Throws:
      IllegalArgumentException - if context, senderId or token are null.
  • Method Details

    • addListener

      public void addListener(@Nonnull MpnDeviceListener listener)
      Adds a listener that will receive events from the MPN device object.
      The same listener can be added to several different MPN device objects.
      Parameters:
      listener - An object that will receive the events as documented in the MpnDeviceListener interface.
      See Also:
      Lifecycle:
      A listener can be added at any time. A call to add a listener already present will be ignored.
    • removeListener

      public void removeListener(@Nonnull MpnDeviceListener listener)
      Removes a listener from the MPN device object so that it will not receive events anymore.
      Parameters:
      listener - The listener to be removed.
      See Also:
      Lifecycle:
      A listener can be removed at any time.
    • getPlatform

      @Nonnull public String getPlatform()
      The platform identifier of this MPN device. In the MpnDevice implementation it equals to the constant Google and is used by the server as part of the device identification.
      Returns:
      the MPN device platform.
      Lifecycle:
      This method can be called at any time.
    • getApplicationId

      @Nonnull public String getApplicationId()
      The application ID of this MPN device, corresponding to the package name of the application. In the MpnDevice implementation it is determined automatically from the Application Context during creation and is used by the server as part of the device identification.
      Returns:
      the MPN device application ID.
      Lifecycle:
      This method can be called at any time.
    • getDeviceToken

      @Nonnull public String getDeviceToken()
      The device token of this MPN device. In the MpnDevice implementation it is passed during creation and is used by the server as part of the device identification.
      Returns:
      the MPN device token.
      Lifecycle:
      This method can be called at any time.
    • getPreviousDeviceToken

      @Nullable public String getPreviousDeviceToken()
      The previous device token of this MPN device. In the MpnDevice implementation it is obtained automatically from the Shared Preferences storage during creation and is used by the server to restore MPN subscriptions associated with this previous token. May be null if no MPN device has been registered yet on the application.
      Returns:
      the previous MPN device token, or null if no MPN device has been registered yet.
      Lifecycle:
      This method can be called at any time.
    • isRegistered

      public boolean isRegistered()
      Checks whether the MPN device object is currently registered on the server or not.
      This flag is switched to true by server sent registration events, and back to false in case of client disconnection or server sent suspension events.
      Returns:
      true if the MPN device object is currently registered on the server.
      See Also:
      Lifecycle:
      This method can be called at any time.
    • isSuspended

      public boolean isSuspended()
      Checks whether the MPN device object is currently suspended on the server or not.
      An MPN device may be suspended if errors occur during push notification delivery.
      This flag is switched to true by server sent suspension events, and back to false in case of client disconnection or server sent resume events.
      Returns:
      true if the MPN device object is currently suspended on the server.
      See Also:
      Lifecycle:
      This method can be called at any time.
    • getStatus

      @Nonnull public String getStatus()
      The status of the device.
      The status can be:
      • UNKNOWN: when the MPN device object has just been created or deleted. In this status isRegistered() and isSuspended() are both false.
      • REGISTERED: when the MPN device object has been successfully registered on the server. In this status isRegistered() is true and isSuspended() is false.
      • SUSPENDED: when a server error occurred while sending push notifications to this MPN device and consequently it has been suspended. In this status isRegistered() and isSuspended() are both true.
      Returns:
      the status of the device.
      See Also:
      Lifecycle:
      This method can be called at any time.
    • getStatusTimestamp

      public long getStatusTimestamp()
      The server-side timestamp of the device status.
      Returns:
      The server-side timestamp of the device status, expressed as a Java time.
      See Also:
      Lifecycle:
      This method can be called at any time.
    • getDeviceId

      @Nullable public String getDeviceId()
      The server-side unique persistent ID of the device.
      The ID is available only after the MPN device object has been successfully registered on the server. I.e. when its status is REGISTERED or SUSPENDED.
      Note: a device token change, if the previous device token was correctly stored on the Shared Preferences storage, does not cause the device ID to change: the server moves previous MPN subscriptions from the previous token to the new one and the device ID remains unaltered.
      Returns:
      the MPN device ID.
      Lifecycle:
      This method can be called at any time.
    • getListeners

      @Nonnull public List<MpnDeviceListener> getListeners()
      List containing the MpnDeviceListener instances that were added to this MPN device object.
      Returns:
      a list containing the listeners that were added to this device.
      See Also: