# Push Notifications
Currently Parcelvoy supports sending push notifications to the two largest push notification services (Apple & Google). Since push notifications are a single message type, both services are included inside of a single provider. If you do not wish to send notifications to one platform, just leave that section blank and any devices that fall into the excluded platform will be excluded from sends.

## APN (Apple Push Notifications)
### Enable In Xcode
To begin, you'll need to add the Push Notification capability to your app in Xcode. Please follow the steps on Apples ["Registering your app with APNs" article.](https://developer.apple.com/documentation/usernotifications/registering_your_app_with_apns)

### Enable in Apple Developer Portal
1. Sign in to the [Apple Developer Portal](https://developer.apple.com/)
2. Select `Identifiers` under the `Certificates, IDs & Profiles` section.
3. Click on the identifier that corresponds to your app.
4. Under Capabilities, scroll down and check the Push Notifications capability.
5. Hit save in the top right corner. 

### Create Token Authentication File
Parcelvoy only supports using a .p8 Token-basen authentication file to enable Apple Push Notification sending. This is the recommended approach by Apple, will let you send notifications to both production and development apps and does not expire.
1. Follow the instructions that Apple provides in their [Establishing a Token-Based Connection to APNs](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/establishing_a_token-based_connection_to_apns) article.
2. Download the .p8 file you are provided.

### Setup Parcelvoy
1. Select the `APN & Firebase` integration or pick an existing integration.
2. Open the key you downloaded in a text editor and copy it into the `Key` field.
3. You can find the `Key ID` in the keys section of your Apple [developer account](https://developer.apple.com/account/). Make sure to use the key for the same p8 key you downloaded. Copy that in.
4. The `Team ID` is generated by Apple for your [developer account](https://developer.apple.com/account/). It can be found in the top right of your Apple developer account when you log in. Copy that in.
5. Your `Bundle ID` is the identifier for your app. You can find your Bundle ID in the Identifiers section of your Apple developer account or within Xcode Main `Target > General > Identity`. Copy this in as well.
6. Once these fields are filled, hit save.

## Firebase (Google Push Notifications)
### Setup Firebase
1. Follow Google's [Add Firebase to your Android project](https://firebase.google.com/docs/android/setup) documentation to get Firebase integrated into your app.
### Create Service Account
1. Open Firebase, and click on the gear icon next to your project name.
2. Navigate to `Project Settings -> Cloud Messaging`
3. If Firebase Cloud Messaging API (V1) is disabled, then click the kebab menu icon on the top right corner and open the link. On the subsequent page hit Enable.
4. Now navigate to `Service Accounts` on the `Project Settings` page.
5. Click `Generate a new private key`. On the warning popup, hit `Generate key` and save the downloaded file.

### Setup Parcelvoy
1. Select the `APN & Firebase` integration or pick an existing integration.
2. Open the previously downloaded file in a text editor and copy the contents into the `Server Key` field.
3. Hit save.