# P8 Key or P12 Cert Setup

## Prerequisites

In order to begin subscribing users to notifications you must have either a P8 Key (recommended) or a P12 Certificate; Either of these can be generated via the Apple Developers portal.

* An [Apple Developer Account](https://developer.apple.com/account/) that has Admin privileges
* Your application's App Bundle ID (e.g., `com.pushly.example`)
* An iOS application or XCode project with the Push Notifications capability added

## P8 Key Setup (Recommended)

### Step 1: Generate the Key

If you are not renewing an existing P12 certificate we recommend using the newer P8 Key to provide authorization to send notifications. The P8 key will work across all of your applications and environments. You do not need a separate P8 file for developer vs production or for each of your applications.

To create a new P8 key navigate to your [Apple Developer Account](https://developer.apple.com/account/) and click the `Keys` link.

<figure><img src="https://810756845-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lry9Z27iWOZyQEGAgY7%2Fuploads%2Fhr66nmrcH5k9oL8e59TU%2Fkeys.png?alt=media&#x26;token=4fff2cf6-6abd-44e0-88d5-18c8ed2976bd" alt=""><figcaption></figcaption></figure>

On the next page click the `+` button next to the `Keys` header

Enter a name for your P8 key; This can be your company name, the name of your application, or any text that will help you identify it later.

Check the `Apple Push Notification service (APNs)` box and  click the `Continue` button.

<figure><img src="https://810756845-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lry9Z27iWOZyQEGAgY7%2Fuploads%2F1MikHTSIx0icOiCAaWJx%2Fcreate.png?alt=media&#x26;token=d57ce1af-94e1-445b-bc1b-bbb0a32eef50" alt=""><figcaption></figcaption></figure>

On the next page, copy the value provided for `Key ID` and then click the `Download` button to download the P8 Key.

<figure><img src="https://810756845-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lry9Z27iWOZyQEGAgY7%2Fuploads%2FlZQkYbTrhXRRZERcCaec%2FScreenshot%202022-12-12%20at%204.10.09%20PM.png?alt=media&#x26;token=3ba39f9c-e7b6-473d-808a-b289075eb454" alt=""><figcaption></figcaption></figure>

The last piece of information we need is the `Team ID` associated to your membership and can be found in the top right of the screen underneath your name.

<figure><img src="https://810756845-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lry9Z27iWOZyQEGAgY7%2Fuploads%2FXFo3595GgoygzfAbErcN%2FScreenshot%202022-12-12%20at%204.19.50%20PM.png?alt=media&#x26;token=24947664-83c3-4817-976e-33cbe23f9963" alt=""><figcaption></figcaption></figure>

### Step 2: Enable Integration in Pushly

Now that you have the `Team ID`, `Key ID` , and the P8 Key you can log into the Pushly platform, navigate to the `Settings` page, and locate the `Send Integrations` section.

For here, click the `Edit` button in the `Send Integration` header, enable the `Native` switch under the `Apple` heading and:

1. Choose `P8 Cert` from the pill selection
2. Click the certificate area to upload your P8 Key
3. Enter the `Team ID`
4. Enter the `Key ID`
5. Click the `Submit` button

<figure><img src="https://810756845-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lry9Z27iWOZyQEGAgY7%2Fuploads%2FzISEeeHVthIJ2AVhffo5%2FScreenshot%202023-02-01%20at%209.29.20%20AM.png?alt=media&#x26;token=2a1e22e1-3c51-435c-8f39-8e20a9a8a65e" alt=""><figcaption></figcaption></figure>

If everything was entered correctly you should now see a section underneath `Send Integrations` that shows an active Apple Native integration.

<figure><img src="https://810756845-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lry9Z27iWOZyQEGAgY7%2Fuploads%2Fnwbudz0lLpKSXyWiK5Eo%2FScreenshot%202023-02-01%20at%209.27.22%20AM.png?alt=media&#x26;token=b86668f2-c739-4630-a063-629a7c78bc7f" alt=""><figcaption></figcaption></figure>

## P12 Certificate Setup

We do not recommend creating new P12 Certificates in favor of using P8 Keys. If you have an existing P12 Certificate follow the steps below to renew it and add it to the platform.

### Step 1: Create a Certificate Request (CSR)

1. On a Mac computer Open the `Keychain Access` application
2. Within the `Keychain Access` primary application menu, select `Keychain Access` > `Certificate Assistant` > `Request a Certificate from a Certificate Authority`
3. In the Certificate Information window, enter the following information:
   * In the `User Email Address` field, enter your email address.
   * In the `Common Name` field, create a name for your private key (e.g. Company Name Web Push).
   * The `CA Email Address` field should be left empty.
   * In the `Request` group, select the `Saved to disk` option.
4. Click `Continue` within Keychain Access and save the CSR to disk to complete this step.

### Step 2: Create an Identifier for Your App

{% hint style="danger" %}
If you are renewing an existing certificate you can skip this step and move to Step 3 since the App Identifier should already exist within your Apple developer account.
{% endhint %}

1. [Login](https://developer.apple.com/account/ios/certificate/) to your company's Apple Developer Console account.
2. Click on the `Identifiers` link under `Certificates, Identifiers & Profiles`
3. In the top-right dropdown ensure `App IDs` is selected and click the `+` button next to the `Identifiers` header.
4. Choose `App IDs` from the list of options and press the `Continue` button.
5. Choose `App` as the identifier type and click the `Continue` button
6. Enter a description. Eg: `YOUR_APP_NAME Push Notifications`
7. Enter the Bundle ID for your app. Eg:  `com.YOUR_APP_NAME.app-push`
8. Under the `Capabilities` tab scroll down and check the `Push Notifications` capability
9. Click the `Continue` and then `Register` button.

### Step 3: Generate a Web Push Certificate

1. Click on `Certificates` in the left nav and press the `+` sign next to the `Certificates` header
2. Choose `Apple Push Notification service SSL (Sandbox & Production)` from the list of Services and then click `Continue`.
3. Select the App Identifier that corresponds to the application for which you are generating the certificate and click the `Continue` button.
4. Click the `Choose File` button, browse for the CSR file that we created in the first step, and click `Continue`.
5. The next screen informs you that your certificate is ready. Click `Download` to store the certificate on your computer.

### Step 4: Generate the .p12 Certificate

* Navigate to the certificate you saved on your computer and double click it to install it to the `Keychain Access` application.
* Open the `Keychain Access` application and click on `My Certificates` tab with the `Login` keychain selected in the left navigation section.
* Right click on the installed Apple Push Services certificate and choose `Export`.
* In the save dialog, choose a filename (or leave the default), choose the `.p12` file format, and click the `Save` button.
* You will be prompted to enter a password - leave both boxes empty and click `OK`.
* Click `Allow` to save the p12 certificate to your computer.

### Step 5: Upload the Certificate via the Platform

Now that you have the `Bundle ID` and the P12 Certificate you can log into the Pushly platform, navigate to the `Settings` page, and locate the `Send Integrations` section.

For here, click the `Edit` button in the `Send Integration` header, enable the `Native` switch under the `Apple` heading and:

1. Enter the application's `Bundle ID`
2. Choose `P12 Cert` from the pill selection
3. Click the area to upload your P12 Certificate
4. If you entered a passphrase when generating the certificate enable the switch and add it
5. Click the `Submit` button
