public final class PushService extends Service
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
ParseBroadcastReceiver, PushService, and
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).START_CONTINUATION_MASK, START_FLAG_REDELIVERY, START_FLAG_RETRY, START_NOT_STICKY, START_REDELIVER_INTENT, START_STICKY, START_STICKY_COMPATIBILITYACCESSIBILITY_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_IMPORTANT, BIND_NOT_FOREGROUND, BIND_WAIVE_PRIORITY, BLUETOOTH_SERVICE, CAMERA_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, JOB_SCHEDULER_SERVICE, KEYGUARD_SERVICE, LAUNCHER_APPS_SERVICE, LAYOUT_INFLATER_SERVICE, LOCATION_SERVICE, MEDIA_PROJECTION_SERVICE, MEDIA_ROUTER_SERVICE, MEDIA_SESSION_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, RESTRICTIONS_SERVICE, SEARCH_SERVICE, SENSOR_SERVICE, STORAGE_SERVICE, TELECOM_SERVICE, TELEPHONY_SERVICE, TEXT_SERVICES_MANAGER_SERVICE, TV_INPUT_SERVICE, UI_MODE_SERVICE, USB_SERVICE, USER_SERVICE, VIBRATOR_SERVICE, WALLPAPER_SERVICE, WIFI_P2P_SERVICE, WIFI_SERVICE, WINDOW_SERVICETRIM_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 and Description |
|---|
PushService()
Client code should not construct a PushService directly.
|
| Modifier and Type | Method and Description |
|---|---|
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)
Client code should not call
onBind 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.
Please use
ParsePushBroadcastReceiver instead. |
static void |
setDefaultPushCallback(Context context,
Class<? extends Activity> cls,
int icon)
Deprecated.
Please use
ParsePushBroadcastReceiver instead. |
static void |
subscribe(Context context,
String channel,
Class<? extends Activity> cls)
Deprecated.
Please use
ParsePush.subscribeInBackground(String) and
ParsePushBroadcastReceiver instead. |
static void |
subscribe(Context context,
String channel,
Class<? extends Activity> cls,
int icon)
Deprecated.
Please use
ParsePush.subscribeInBackground(String) and
ParsePushBroadcastReceiver instead. |
static void |
unsubscribe(Context context,
String channel)
Deprecated.
Please use
ParsePush.subscribeInBackground(String) and
ParsePushBroadcastReceiver instead. |
dump, getApplication, onConfigurationChanged, onLowMemory, onRebind, onStart, onTaskRemoved, onTrimMemory, onUnbind, startForeground, stopForeground, stopSelf, stopSelf, stopSelfResultattachBaseContext, 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, getCodeCacheDir, getContentResolver, getDatabasePath, getDir, getExternalCacheDir, getExternalCacheDirs, getExternalFilesDir, getExternalFilesDirs, getExternalMediaDirs, getFilesDir, getFileStreamPath, getMainLooper, getNoBackupFilesDir, 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, unregisterReceivergetDrawable, getString, getString, getText, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, registerComponentCallbacks, unregisterComponentCallbackspublic PushService()
@Deprecated public static void subscribe(Context context, String channel, Class<? extends Activity> cls)
ParsePush.subscribeInBackground(String) and
ParsePushBroadcastReceiver instead.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.IllegalArgumentException - if the channel name is not valid.ParsePush.subscribeInBackground(String),
ParsePushBroadcastReceiver@Deprecated public static void subscribe(Context context, String channel, Class<? extends Activity> cls, int icon)
ParsePush.subscribeInBackground(String) and
ParsePushBroadcastReceiver instead.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.IllegalArgumentException - if the channel name is not valid.ParsePush.subscribeInBackground(String),
ParsePushBroadcastReceiver@Deprecated public static void unsubscribe(Context context, String channel)
ParsePush.subscribeInBackground(String) and
ParsePushBroadcastReceiver instead.context - A currently viable Context.channel - The string defining the channel to unsubscribe from.ParsePush.unsubscribeInBackground(String),
ParsePushBroadcastReceiver@Deprecated public static void setDefaultPushCallback(Context context, Class<? extends Activity> cls)
ParsePushBroadcastReceiver instead.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.ParsePushBroadcastReceiver.getActivity(Context, Intent)@Deprecated public static void setDefaultPushCallback(Context context, Class<? extends Activity> cls, int icon)
ParsePushBroadcastReceiver instead.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.ParsePushBroadcastReceiver.getActivity(Context, Intent),
ParsePushBroadcastReceiver.PROPERTY_PUSH_ICON,
ParsePushBroadcastReceiver.getSmallIconId(Context, Intent)@Deprecated public static Set<String> getSubscriptions(Context context)
ParseInstallation "channels" field.
Use ParseInstallation.getCurrentInstallation().getList<String>("channels")context - A currently viable Context.public void onCreate()
onCreate directly.public int onStartCommand(Intent intent, int flags, int startId)
onStartCommand in class Service