com.parse
Class PushService

Object
  extended by android.content.Context
      extended by android.content.ContextWrapper
          extended by android.app.Service
              extended by com.parse.PushService
All Implemented Interfaces:
ComponentCallbacks, ComponentCallbacks2

public final class PushService
extends Service

A service to listen for push notifications. This operates in the same process as the parent application. The PushService can listen to pushes from two different sources: Google Cloud Messaging (GCM) or Parse's own push network. Parse will inspect your application's manifest at runtime and determine which service to use for push. We recommend using GCM for push on devices that have Google Play Store support. Parse uses its own push network for apps that want to avoid a dependency on the Google Play Store, and for devices (like Kindles) which do not have Play Store support. To configure the PushService for GCM, ensure these permission declarations are present in your AndroidManifest.xml as children of the <manifest> element:

 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 <uses-permission android:name="android.permission.VIBRATE" />
 <uses-permission android:name="android.permission.WAKE_LOCK" />
 <uses-permission android:name="android.permission.GET_ACCOUNTS" />
 <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
 <permission android:name="YOUR_PACKAGE_NAME.permission.C2D_MESSAGE"
   android:protectionLevel="signature" />
 <uses-permission android:name="YOUR_PACKAGE_NAME.permission.C2D_MESSAGE" />
 
 
 Replace YOUR_PACKAGE_NAME in the declarations above with your application's package name. Also,
 make sure that com.parse.GcmBroadcastReceiver and com.parse.PushService are declared as children
 of the <application> element:
 
 
 <service android:name="com.parse.PushService" />
 <receiver android:name="com.parse.GcmBroadcastReceiver"
  android:permission="com.google.android.c2dm.permission.SEND">
   <intent-filter>
     <action android:name="com.google.android.c2dm.intent.RECEIVE" />
     <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
     <category android:name="YOUR_PACKAGE_NAME" />
   </intent-filter>
 </receiver>
 
Again, replace YOUR_PACKAGE_NAME with your application's package name. To configure the PushService for Parse's push network, ensure these permission declarations are present in your AndroidManifest.xml as children of the <manifest> element:
 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
 <uses-permission android:name="android.permission.VIBRATE" />
 <uses-permission android:name="android.permission.WAKE_LOCK" />
 
Also, make sure that com.parse.ParseBroadcastReceiver, com.parse.PushService, and com.parse.ParsePushBroadcastReceiver are declared as children of the <application> element: <service android:name="com.parse.PushService" /> <receiver android:name="com.parse.ParseBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.USER_PRESENT" /> </intent-filter> </receiver> <receiver android:name="com.parse.ParsePushBroadcastReceiver" android:exported=false> <intent-filter> <action android:name="com.parse.push.intent.RECEIVE" /> <action android:name="com.parse.push.intent.OPEN" /> <action android:name="com.parse.push.intent.DELETE" /> </intent-filter> </receiver> Note that you can configure the push service for both GCM and Parse's network by adding all the declarations above to your application's manifest. In this case, Parse will use GCM on devices with Play Store support and fall back to using Parse's network on devices without Play Store support. If you want to customize the way your app generates Notifications for your pushes, you can register a custom subclass of ParsePushBroadcastReceiver Once push notifications are configured in the manifest, you can subscribe to a push channel by calling:
   ParsePush.subscribeInBackground("the_channel_name");
 
When the client receives a push message, a notification will appear in the system tray. When the user taps the notification, it will broadcast the "com.parse.push.intent.OPEN" intent. The ParsePushBroadcastReceiver listens to this intent to track an app open event and launch the app's launcher activity. To customize this behavior override ParsePushBroadcastReceiver.onPushOpen(Context, Intent).


Field Summary
 
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
 
Fields inherited from class android.content.Context
ACCESSIBILITY_SERVICE, ACCOUNT_SERVICE, ACTIVITY_SERVICE, ALARM_SERVICE, APP_OPS_SERVICE, AUDIO_SERVICE, BIND_ABOVE_CLIENT, BIND_ADJUST_WITH_ACTIVITY, BIND_ALLOW_OOM_MANAGEMENT, BIND_AUTO_CREATE, BIND_DEBUG_UNBIND, BIND_IMPORTANT, BIND_NOT_FOREGROUND, BIND_WAIVE_PRIORITY, BLUETOOTH_SERVICE, CAPTIONING_SERVICE, CLIPBOARD_SERVICE, CONNECTIVITY_SERVICE, CONSUMER_IR_SERVICE, CONTEXT_IGNORE_SECURITY, CONTEXT_INCLUDE_CODE, CONTEXT_RESTRICTED, DEVICE_POLICY_SERVICE, DISPLAY_SERVICE, DOWNLOAD_SERVICE, DROPBOX_SERVICE, INPUT_METHOD_SERVICE, INPUT_SERVICE, KEYGUARD_SERVICE, LAYOUT_INFLATER_SERVICE, LOCATION_SERVICE, MEDIA_ROUTER_SERVICE, MODE_APPEND, MODE_ENABLE_WRITE_AHEAD_LOGGING, MODE_MULTI_PROCESS, MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE, NFC_SERVICE, NOTIFICATION_SERVICE, NSD_SERVICE, POWER_SERVICE, PRINT_SERVICE, SEARCH_SERVICE, SENSOR_SERVICE, STORAGE_SERVICE, TELEPHONY_SERVICE, TEXT_SERVICES_MANAGER_SERVICE, UI_MODE_SERVICE, USB_SERVICE, USER_SERVICE, VIBRATOR_SERVICE, WALLPAPER_SERVICE, WIFI_P2P_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
 
Constructor Summary
PushService()
          Client code should not construct a PushService directly.
 
Method Summary
static Set<String> getSubscriptions(Context context)
          Deprecated. Subscriptions are stored in the ParseInstallation "channels" field. Use ParseInstallation.getCurrentInstallation().getList<String>("channels")
 IBinder onBind(Intent intent)
          onBind should not be called directly.
 void onCreate()
          Client code should not call onCreate directly.
 void onDestroy()
          Client code should not call onDestroy directly.
 int onStartCommand(Intent intent, int flags, int startId)
           
static void setDefaultPushCallback(Context context, Class<? extends Activity> cls)
          Deprecated. Replaced by ParsePushBroadcastReceiver
static void setDefaultPushCallback(Context context, Class<? extends Activity> cls, int icon)
          Deprecated. Replaced by ParsePushBroadcastReceiver
static void subscribe(Context context, String channel, Class<? extends Activity> cls)
          Deprecated. Developers should use ParsePush.subscribeInBackground and ParsePushBroadcastReceiver.
static void subscribe(Context context, String channel, Class<? extends Activity> cls, int icon)
          Deprecated. Developers should use ParsePush.subscribeInBackground and ParsePushBroadcastReceiver.
static void unsubscribe(Context context, String channel)
          Deprecated. Developers should use ParsePush.unsubscribeInBackground and ParsePushBroadcastReceiver.
 
Methods inherited from class android.app.Service
dump, getApplication, onConfigurationChanged, onLowMemory, onRebind, onStart, onTaskRemoved, onTrimMemory, onUnbind, startForeground, stopForeground, stopSelf, stopSelf, stopSelfResult
 
Methods inherited from class android.content.ContextWrapper
attachBaseContext, bindService, checkCallingOrSelfPermission, checkCallingOrSelfUriPermission, checkCallingPermission, checkCallingUriPermission, checkPermission, checkUriPermission, checkUriPermission, clearWallpaper, createConfigurationContext, createDisplayContext, createPackageContext, databaseList, deleteDatabase, deleteFile, enforceCallingOrSelfPermission, enforceCallingOrSelfUriPermission, enforceCallingPermission, enforceCallingUriPermission, enforcePermission, enforceUriPermission, enforceUriPermission, fileList, getApplicationContext, getApplicationInfo, getAssets, getBaseContext, getCacheDir, getClassLoader, getContentResolver, getDatabasePath, getDir, getExternalCacheDir, getExternalCacheDirs, getExternalFilesDir, getExternalFilesDirs, getFilesDir, getFileStreamPath, getMainLooper, getObbDir, getObbDirs, getPackageCodePath, getPackageManager, getPackageName, getPackageResourcePath, getResources, getSharedPreferences, getSystemService, getTheme, getWallpaper, getWallpaperDesiredMinimumHeight, getWallpaperDesiredMinimumWidth, grantUriPermission, isRestricted, openFileInput, openFileOutput, openOrCreateDatabase, openOrCreateDatabase, peekWallpaper, registerReceiver, registerReceiver, removeStickyBroadcast, removeStickyBroadcastAsUser, revokeUriPermission, sendBroadcast, sendBroadcast, sendBroadcastAsUser, sendBroadcastAsUser, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcastAsUser, sendStickyBroadcast, sendStickyBroadcastAsUser, sendStickyOrderedBroadcast, sendStickyOrderedBroadcastAsUser, setTheme, setWallpaper, setWallpaper, startActivities, startActivities, startActivity, startActivity, startInstrumentation, startIntentSender, startIntentSender, startService, stopService, unbindService, unregisterReceiver
 
Methods inherited from class android.content.Context
getString, getString, getText, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, registerComponentCallbacks, unregisterComponentCallbacks
 
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PushService

public PushService()
Client code should not construct a PushService directly.

Method Detail

subscribe

@Deprecated
public static void subscribe(Context context,
                                        String channel,
                                        Class<? extends Activity> cls)
Deprecated. Developers should use ParsePush.subscribeInBackground and ParsePushBroadcastReceiver.

Helper function to subscribe to push notifications with the default application icon.

Parameters:
context - This is used to access local storage to cache the subscription, so it must currently be a viable context.
channel - A string identifier that determines which messages will cause a push notification to be sent to this client. The channel name must start with a letter and contain only letters, numbers, dashes, and underscores.
cls - This should be a subclass of Activity. An instance of this Activity is started when the user responds to this push notification. If you are not sure what to use here, just use your application's main Activity subclass.
Throws:
IllegalArgumentException - if the channel name is not valid.
See Also:
ParsePush.subscribeInBackground(String), ParsePushBroadcastReceiver

subscribe

@Deprecated
public static void subscribe(Context context,
                                        String channel,
                                        Class<? extends Activity> cls,
                                        int icon)
Deprecated. Developers should use ParsePush.subscribeInBackground and ParsePushBroadcastReceiver.

Call this function when the user should be subscribed to a new push channel. When push notifications are sent out on this channel subsequently, this device will display a "toast" notification in the system tray. This function returns immediately, even when there is no internet access. In that case the subscription is cached and when internet access is next available the client will inform the server of its subscription. This starts a PushService running in the background that will not permanently terminate as long as the user is subscribed to some channel, unless the application is uninstalled.

Parameters:
context - This is used to access local storage to cache the subscription, so it must currently be a viable context.
channel - A string identifier that determines which messages will cause a push notification to be sent to this client. The channel name must start with a letter and contain only letters, numbers, dashes, and underscores.
cls - This should be a subclass of Activity. An instance of this Activity is started when the user responds to this push notification. If you are not sure what to use here, just use your application's main Activity subclass.
icon - The icon to show for the notification.
Throws:
IllegalArgumentException - if the channel name is not valid.
See Also:
ParsePush.subscribeInBackground(String), ParsePushBroadcastReceiver

unsubscribe

@Deprecated
public static void unsubscribe(Context context,
                                          String channel)
Deprecated. Developers should use ParsePush.unsubscribeInBackground and ParsePushBroadcastReceiver.

Cancels a previous call to subscribe. If the user is not subscribed to this channel, this is a no-op. This call does not require internet access. It returns without blocking.

Parameters:
context - A currently viable Context.
channel - The string defining the channel to unsubscribe from.
See Also:
ParsePush.unsubscribeInBackground(String), ParsePushBroadcastReceiver

setDefaultPushCallback

@Deprecated
public static void setDefaultPushCallback(Context context,
                                                     Class<? extends Activity> cls)
Deprecated. Replaced by ParsePushBroadcastReceiver

Provides a default Activity class to handle pushes. Setting a default allows your program to handle pushes that aren't registered with a subscribe call. This can happen when your application changes its subscriptions directly through the ParseInstallation or via push-to-query.

Parameters:
context - This is used to access local storage to cache the subscription, so it must currently be a viable context.
cls - This should be a subclass of Activity. An instance of this Activity is started when the user responds to this push notification. If you are not sure what to use here, just use your application's main Activity subclass.
See Also:
ParsePushBroadcastReceiver.getActivity(Context, Intent)

setDefaultPushCallback

@Deprecated
public static void setDefaultPushCallback(Context context,
                                                     Class<? extends Activity> cls,
                                                     int icon)
Deprecated. Replaced by ParsePushBroadcastReceiver

Provides a default Activity class to handle pushes. Setting a default allows your program to handle pushes that aren't registered with a subscribe call. This can happen when your application changes its subscriptions directly through the ParseInstallation or via push-to-query.

Parameters:
context - This is used to access local storage to cache the subscription, so it must currently be a viable context.
cls - This should be a subclass of Activity. An instance of this Activity is started when the user responds to this push notification. If you are not sure what to use here, just use your application's main Activity subclass.
icon - The icon to show for the notification.
See Also:
ParsePushBroadcastReceiver.getActivity(Context, Intent), ParsePushBroadcastReceiver.PROPERTY_PUSH_ICON, ParsePushBroadcastReceiver.getSmallIconId(Context, Intent)

getSubscriptions

@Deprecated
public static Set<String> getSubscriptions(Context context)
Deprecated. Subscriptions are stored in the ParseInstallation "channels" field. Use ParseInstallation.getCurrentInstallation().getList<String>("channels")

Accesses the current set of channels for which the current installation is subscribed. It is important to remember that the device may receive pushes by means other than channels. This method returns the local cache, so it returns without blocking on network IO. In rare circumstances this may be stale, but only after the installation was edited via the REST API using the master key.

Parameters:
context - A currently viable Context.
Returns:
A set containing all of the channels this application is currently subscribed to.

onCreate

public void onCreate()
Client code should not call onCreate directly.

Overrides:
onCreate in class Service

onStartCommand

public int onStartCommand(Intent intent,
                          int flags,
                          int startId)
Overrides:
onStartCommand in class Service

onBind

public IBinder onBind(Intent intent)
onBind should not be called directly.

Specified by:
onBind in class Service

onDestroy

public void onDestroy()
Client code should not call onDestroy directly.

Overrides:
onDestroy in class Service