# Push Notifications

**Referd** uses Firebase to deliver maximum experience in your app. This includes push notifications, interactive in-app messaging and referrals support.

![](/files/gsIN20O1vz2gTfUsTOo5)

### Configure Referd With Your Firebase

Before you start, you must configure your Firebase on your Referd account. Follow the steps in [Configure your Firebase account on Referd for mobile push notifications](https://help.tryreferd.com/en/articles/8668480-get-your-referd-integration-details) article from our Help Center related to push notifications.

### Handling Push Notifications Integration

Configure notifications as usual and add two more methods using our SDK. This is normal integration for general firebase notifications configuration, so here is a how-to guide.

1\. Add the below to the **AppDelegate** class

```swift
Inherit :UNUserNotificationCenterDelegate, MessagingDelegate
Add var gameballApp: Gameball?
```

2\. Then put these lines **didFinishLaunchingWithOptions()** in **AppDelegate**

```swift
FirebaseApp.configure()
registerForPushNotifications()
```

3\. Add these stack of lines to the **AppDelegate** class

```swift
    func registerForPushNotifications() {
        UNUserNotificationCenter.current()
            .requestAuthorization(options: [.alert, .sound, .badge]) {
                [weak self] granted, error in
                UNUserNotificationCenter.current().delegate = self
                Messaging.messaging().delegate = self
                guard granted else { return }
                self?.getNotificationSettings()
        }
    }

    func getNotificationSettings() {
        UNUserNotificationCenter.current().getNotificationSettings { settings in
            guard settings.authorizationStatus == .authorized else { return }
            DispatchQueue.main.async {
                UIApplication.shared.registerForRemoteNotifications()
            }
        }
    }
```

4\. Here we need to add this method to register token to **Referd** in this method

```swift
    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
                let tokenParts = deviceToken.map { data in String(format: "%02.2hhx", data) }
                let token = tokenParts.joined()
        if let refreshedToken = InstanceID.instanceID().token() {
            print("InstanceID token: (refreshedToken)")
            self.gameballApp?.registerDevice(withToken: refreshedToken)
        }
    }
```

5\. Here we need to add this method to let **Referd** handle everything related to Referd Widget

```swift
    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        gameballApp?.notificationPopUP(notification: notification)
    }
```

Your users can now receive push notifications from **Referd**.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.tryreferd.com/installing-referd/referd-for-ios/push-notifications-on-ios.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
