## Handling FCM/GCM Push Notifications Amazon Pinpoint campaigns can take one of three actions when a user taps a notification: Open your app, Go to a URL, or Open a deep link. ### Open your app By specifying this action, you can open the app when the user taps on the notification. **Adding a Receiver** This receiver is no longer necessary and should be removed as of `com.amazonaws:aws-android-sdk-pinpoint:2.48.0` The SDK provides `PinpointNotificationReceiver` which handles the notification to open your app. In order to use this action, you must register this receiver in your `AndroidManifest.xml` file. For example: ```xml ``` ### Open a deep link This action opens the app to a specified activity. To specify a destination activity for deep links, the app must have set up deep linking. This setup requires an intent filter that registers a URL scheme the deep links will use. After the app creates an intent filter, the data provided by the intent determines the activity to render. **Creating an Intent Filter** Begin to set up deep linking by creating an intent filter in your `AndroidManifest.xml` file. For example: ```xml ``` The data element in the previous example registers a URL scheme, `pinpoint://`, as well as the host, `deeplink`. As a result, when given a URL in the form of `pinpoint://deeplink`, the manifest is prepared to execute the action. **Handling the Intent** Next, set up an intent handler to present the screen associated with the registered URL scheme and host. Intent data is retrieved in the onCreate() method, which then can use `Uri` data to create an activity. The following example shows an alert and tracks an event. ```java public class DeepLinkActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getIntent().getAction() == Intent.ACTION_VIEW) { Uri data = getIntent().getData(); if (data != null) { // show an alert with the "custom" param new AlertDialog.Builder(this) .setTitle("An example of a Deeplink") .setMessage("Found custom param: " +data.getQueryParameter("custom")) .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .setIcon(android.R.drawable.ic_dialog_alert) .show(); } } } } ```