Class MixpanelFCMMessagingService

  • All Implemented Interfaces:
    android.content.ComponentCallbacks, android.content.ComponentCallbacks2

    public class MixpanelFCMMessagingService
    extends com.google.firebase.messaging.FirebaseMessagingService
    Service for handling Firebase Cloud Messaging callbacks.

    You can use FirebaseMessagingService to report Firebase Cloud Messaging registration identifiers to Mixpanel, and to display incoming notifications from Mixpanel to the device status bar. This is the simplest way to get up and running with notifications from Mixpanel.

    To enable FCM in your application, place your google-services.json file in your Android project root directory, add firebase messaging as a dependency in your gradle file:

     
     buildscript {
          ...
          dependencies {
              classpath 'com.google.gms:google-services:4.1.0'
              ...
          }
     }
    
     dependencies {
         implementation 'com.google.firebase:firebase-messaging:17.3.4'
         ...
     }
    
     apply plugin: 'com.google.gms.google-services'
     
     
    And finally add a clause like the following to the <application> tag of your AndroidManifest.xml.
    
    
     <service
      android:name="com.mixpanel.android.mpmetrics.MixpanelFCMMessagingService"
      android:enabled="true"
      android:exported="false">
          <intent-filter>
              <action android:name="com.google.firebase.MESSAGING_EVENT"/>
          </intent-filter>
     </service>
    
    

    Once the FirebaseMessagingService is configured, the only thing you have to do to get set up Mixpanel messages is call MixpanelAPI.People.identify(String) with a distinct id for your user.

     
    
     MixpanelAPI.People people = mMixpanelAPI.getPeople();
     people.identify("A USER DISTINCT ID");
    
     
     
    See Also:
    MixpanelAPI.getPeople(), Getting Started with Android Push Notifications
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected static int NOTIFICATION_ID  
      • Fields inherited from class android.app.Service

        START_CONTINUATION_MASK, START_FLAG_REDELIVERY, START_FLAG_RETRY, START_NOT_STICKY, START_REDELIVER_INTENT, START_STICKY, START_STICKY_COMPATIBILITY, STOP_FOREGROUND_DETACH, STOP_FOREGROUND_REMOVE
      • Fields inherited from class android.content.Context

        ACCESSIBILITY_SERVICE, ACCOUNT_SERVICE, ACTIVITY_SERVICE, ALARM_SERVICE, APP_OPS_SERVICE, APPWIDGET_SERVICE, AUDIO_SERVICE, BATTERY_SERVICE, BIND_ABOVE_CLIENT, BIND_ADJUST_WITH_ACTIVITY, BIND_ALLOW_OOM_MANAGEMENT, BIND_AUTO_CREATE, BIND_DEBUG_UNBIND, BIND_EXTERNAL_SERVICE, BIND_IMPORTANT, BIND_INCLUDE_CAPABILITIES, BIND_NOT_FOREGROUND, BIND_NOT_PERCEPTIBLE, BIND_WAIVE_PRIORITY, BIOMETRIC_SERVICE, BLOB_STORE_SERVICE, BLUETOOTH_SERVICE, CAMERA_SERVICE, CAPTIONING_SERVICE, CARRIER_CONFIG_SERVICE, CLIPBOARD_SERVICE, COMPANION_DEVICE_SERVICE, CONNECTIVITY_DIAGNOSTICS_SERVICE, CONNECTIVITY_SERVICE, CONSUMER_IR_SERVICE, CONTEXT_IGNORE_SECURITY, CONTEXT_INCLUDE_CODE, CONTEXT_RESTRICTED, CROSS_PROFILE_APPS_SERVICE, DEVICE_POLICY_SERVICE, DISPLAY_SERVICE, DOWNLOAD_SERVICE, DROPBOX_SERVICE, EUICC_SERVICE, FILE_INTEGRITY_SERVICE, FINGERPRINT_SERVICE, HARDWARE_PROPERTIES_SERVICE, INPUT_METHOD_SERVICE, INPUT_SERVICE, IPSEC_SERVICE, JOB_SCHEDULER_SERVICE, KEYGUARD_SERVICE, LAUNCHER_APPS_SERVICE, LAYOUT_INFLATER_SERVICE, LOCATION_SERVICE, MEDIA_PROJECTION_SERVICE, MEDIA_ROUTER_SERVICE, MEDIA_SESSION_SERVICE, MIDI_SERVICE, MODE_APPEND, MODE_ENABLE_WRITE_AHEAD_LOGGING, MODE_MULTI_PROCESS, MODE_NO_LOCALIZED_COLLATORS, MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE, NETWORK_STATS_SERVICE, NFC_SERVICE, NOTIFICATION_SERVICE, NSD_SERVICE, POWER_SERVICE, PRINT_SERVICE, RECEIVER_VISIBLE_TO_INSTANT_APPS, RESTRICTIONS_SERVICE, ROLE_SERVICE, SEARCH_SERVICE, SENSOR_SERVICE, SHORTCUT_SERVICE, STORAGE_SERVICE, STORAGE_STATS_SERVICE, SYSTEM_HEALTH_SERVICE, TELECOM_SERVICE, TELEPHONY_IMS_SERVICE, TELEPHONY_SERVICE, TELEPHONY_SUBSCRIPTION_SERVICE, TEXT_CLASSIFICATION_SERVICE, TEXT_SERVICES_MANAGER_SERVICE, TV_INPUT_SERVICE, UI_MODE_SERVICE, USAGE_STATS_SERVICE, USB_SERVICE, USER_SERVICE, VIBRATOR_SERVICE, VPN_MANAGEMENT_SERVICE, WALLPAPER_SERVICE, WIFI_AWARE_SERVICE, WIFI_P2P_SERVICE, WIFI_RTT_RANGING_SERVICE, WIFI_SERVICE, WINDOW_SERVICE
      • Fields inherited from interface android.content.ComponentCallbacks2

        TRIM_MEMORY_BACKGROUND, TRIM_MEMORY_COMPLETE, TRIM_MEMORY_MODERATE, TRIM_MEMORY_RUNNING_CRITICAL, TRIM_MEMORY_RUNNING_LOW, TRIM_MEMORY_RUNNING_MODERATE, TRIM_MEMORY_UI_HIDDEN
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static void addToken​(java.lang.String token)
      Only use this method if you have implemented your own custom FirebaseMessagingService.
      protected void cancelNotification​(android.os.Bundle extras, android.app.NotificationManager notificationManager)  
      protected void onMessageReceived​(android.content.Context context, android.content.Intent intent)
      Util method to let subclasses customize the payload through the push notification intent.
      void onMessageReceived​(com.google.firebase.messaging.RemoteMessage remoteMessage)  
      void onNewToken​(java.lang.String token)  
      static void showPushNotification​(android.content.Context context, android.content.Intent messageIntent)
      Only use this method if you have implemented your own custom FirebaseMessagingService.
      static void showPushNotification​(android.content.Context context, android.content.Intent messageIntent, MixpanelPushNotification mixpanelPushNotification)
      Only use this method if you have implemented your own custom FirebaseMessagingService.
      • Methods inherited from class com.google.firebase.messaging.FirebaseMessagingService

        onDeletedMessages, onMessageSent, onSendError, zzb, zzc, zzd
      • Methods inherited from class com.google.firebase.iid.zzb

        onBind, onStartCommand
      • Methods inherited from class android.app.Service

        attachBaseContext, dump, getApplication, getForegroundServiceType, onConfigurationChanged, onCreate, onDestroy, onLowMemory, onRebind, onStart, onTaskRemoved, onTrimMemory, onUnbind, startForeground, startForeground, stopForeground, stopForeground, stopSelf, stopSelf, stopSelfResult
      • Methods inherited from class android.content.ContextWrapper

        bindIsolatedService, bindService, bindService, bindServiceAsUser, checkCallingOrSelfPermission, checkCallingOrSelfUriPermission, checkCallingPermission, checkCallingUriPermission, checkPermission, checkSelfPermission, checkUriPermission, checkUriPermission, clearWallpaper, createAttributionContext, createConfigurationContext, createContextForSplit, createDeviceProtectedStorageContext, createDisplayContext, createPackageContext, createWindowContext, databaseList, deleteDatabase, deleteFile, deleteSharedPreferences, enforceCallingOrSelfPermission, enforceCallingOrSelfUriPermission, enforceCallingPermission, enforceCallingUriPermission, enforcePermission, enforceUriPermission, enforceUriPermission, fileList, getApplicationContext, getApplicationInfo, getAssets, getAttributionTag, getBaseContext, getCacheDir, getClassLoader, getCodeCacheDir, getContentResolver, getDatabasePath, getDataDir, getDir, getDisplay, getExternalCacheDir, getExternalCacheDirs, getExternalFilesDir, getExternalFilesDirs, getExternalMediaDirs, getFilesDir, getFileStreamPath, getMainExecutor, getMainLooper, getNoBackupFilesDir, getObbDir, getObbDirs, getOpPackageName, getPackageCodePath, getPackageManager, getPackageName, getPackageResourcePath, getResources, getSharedPreferences, getSystemService, getSystemServiceName, getTheme, getWallpaper, getWallpaperDesiredMinimumHeight, getWallpaperDesiredMinimumWidth, grantUriPermission, isDeviceProtectedStorage, isRestricted, moveDatabaseFrom, moveSharedPreferencesFrom, openFileInput, openFileOutput, openOrCreateDatabase, openOrCreateDatabase, peekWallpaper, registerReceiver, registerReceiver, registerReceiver, registerReceiver, removeStickyBroadcast, removeStickyBroadcastAsUser, revokeUriPermission, revokeUriPermission, sendBroadcast, sendBroadcast, sendBroadcastAsUser, sendBroadcastAsUser, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcastAsUser, sendStickyBroadcast, sendStickyBroadcastAsUser, sendStickyOrderedBroadcast, sendStickyOrderedBroadcastAsUser, setTheme, setWallpaper, setWallpaper, startActivities, startActivities, startActivity, startActivity, startForegroundService, startInstrumentation, startIntentSender, startIntentSender, startService, stopService, unbindService, unregisterReceiver, updateServiceGroup
      • Methods inherited from class android.content.Context

        getColor, getColorStateList, getDrawable, getString, getString, getSystemService, getText, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, registerComponentCallbacks, sendBroadcastWithMultiplePermissions, unregisterComponentCallbacks
      • Methods inherited from class java.lang.Object

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

      • MixpanelFCMMessagingService

        public MixpanelFCMMessagingService()
    • Method Detail

      • onMessageReceived

        public void onMessageReceived​(com.google.firebase.messaging.RemoteMessage remoteMessage)
        Overrides:
        onMessageReceived in class com.google.firebase.messaging.FirebaseMessagingService
      • onNewToken

        public void onNewToken​(java.lang.String token)
        Overrides:
        onNewToken in class com.google.firebase.messaging.FirebaseMessagingService
      • onMessageReceived

        protected void onMessageReceived​(android.content.Context context,
                                         android.content.Intent intent)
        Util method to let subclasses customize the payload through the push notification intent.
        Parameters:
        context - The application context
        intent - Push payload intent. Could be modified before calling super() from a sub-class.
      • addToken

        public static void addToken​(java.lang.String token)
        Only use this method if you have implemented your own custom FirebaseMessagingService. This is useful when you use multiple push providers. This method should be called from a onNewToken callback. It adds a new FCM token to a Mixpanel people profile.
        Parameters:
        token - Firebase Cloud Messaging token to be added to the people profile.
      • showPushNotification

        public static void showPushNotification​(android.content.Context context,
                                                android.content.Intent messageIntent)
        Only use this method if you have implemented your own custom FirebaseMessagingService. This is useful when you use multiple push providers. Displays a Mixpanel push notification on the device.
        Parameters:
        context - The application context you are tracking
        messageIntent - Intent that bundles the data used to build a notification. If the intent is not valid, the notification will not be shown. See showPushNotification(Context, Intent)
      • showPushNotification

        public static void showPushNotification​(android.content.Context context,
                                                android.content.Intent messageIntent,
                                                MixpanelPushNotification mixpanelPushNotification)
        Only use this method if you have implemented your own custom FirebaseMessagingService. This is useful if you need to override MixpanelPushNotification to further customize your Mixpanel push notification. Displays a Mixpanel push notification on the device.
        Parameters:
        context - The application context you are tracking
        messageIntent - Intent that bundles the data used to build a notification. If the intent is not valid, the notification will not be shown. See showPushNotification(Context, Intent)
        mixpanelPushNotification - A customized MixpanelPushNotification object.
      • cancelNotification

        protected void cancelNotification​(android.os.Bundle extras,
                                          android.app.NotificationManager notificationManager)