> ## Documentation Index
> Fetch the complete documentation index at: https://moengage-sdk-docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# iOS Push Configuration

## APNS Certificate:

First, you will have to create an APNS certificate and upload to the dashboard to be able to send push notifications in iOS. Follow the steps below to do that:

* [Create an APNS certificate](/developer-guide/ios-sdk/push/basic/apns-certificate-pem-file-legacy)
* [Convert the resultant certificate to .pem format](/developer-guide/ios-sdk/push/basic/apns-certificate-pem-file-legacy)
* [Upload .pem file to MoEngage Dashboard](/developer-guide/ios-sdk/push/basic/apns-certificate-pem-file-legacy)

## Adding Push Entitlement to your Project:

Once the APNS Certificate is uploaded, enable Push Entitlement in the Xcode project. For that select your app target, then go to Capabilities. Here enable the Push Notifications capability for your app as shown below:

<img src="https://mintcdn.com/moengage-sdk-docs/MzPS8rk8pRdgBJ_x/images/iOSPushConfiguration1.png?fit=max&auto=format&n=MzPS8rk8pRdgBJ_x&q=85&s=91995c97cc34d764047ef16eabe57d05" alt="I OS Push Configuration1" width="1932" height="84" data-path="images/iOSPushConfiguration1.png" />

## Uninstall Tracking:

We make use of silent pushes to track uninstalls. For tracking uninstalls of all the users, enable Remote Notification background mode in-app capabilities for the same as shown below:

<Frame>
  <img src="https://mintcdn.com/moengage-sdk-docs/MzPS8rk8pRdgBJ_x/images/iOSPushConfiguration2.png?fit=max&auto=format&n=MzPS8rk8pRdgBJ_x&q=85&s=538b901ce9387d1d29ee8b1091b3602c" alt="I OS Push Configuration2" width="1960" height="468" data-path="images/iOSPushConfiguration2.png" />
</Frame>

## Push Registration:

After this you will have to register for push notification by using **registerForPush** method of the plugin as shown below :

<CodeGroup>
  ```javascript TypeScript theme={"theme":{"light":"github-light","dark":"github-dark"}}
  //This is only for iOS
  import { MoECapacitorCore } from 'capacitor-moengage-core'
  MoECapacitorCore.registerForPush();
  ```
</CodeGroup>

<Info>
  **AppDelegate Remote notification methods will not be called**

  The plugin gets all the remote notification-related callbacks, therefore you won't receive any of them in your AppDelegate. Therefore, you will have to add observers for the notifications provided by the plugin instead.
</Info>

## Provisional Push Registration:

<Info>
  This feature is supported from version ***9.0.0*** of the plugin.
</Info>

To register for provisional push notification, call [***registerForProvisionalPush()***]() API of the plugin as shown below.

<CodeGroup>
  ```javascript TypeScript theme={"theme":{"light":"github-light","dark":"github-dark"}}
  import { MoECapacitorCore } from 'capacitor-moengage-core'
  MoECapacitorCore.registerForProvisionalPush({ appId: your_workspace_id });
  ```
</CodeGroup>

## Rich Push and Templates Support:

Please refer to the Native iOS SDK docs for supporting Rich Push(images/videos/audio in the notification) and Templates in the app:

* [Rich Push](/developer-guide/ios-sdk/push/basic/ios-push-integration-tutorial#optional)
* [Push Templates](/developer-guide/ios-sdk/push/optional/push-templates)
