# Push Providers & Multi Bundle

## Push Notification Configuration

To set up push notifications for your Activity Feeds application, you need to configure your push providers through the Stream Dashboard.

### Accessing Push Configuration

1. Navigate to your [Stream Dashboard](https://dashboard.getstream.io/)
2. Select your application
3. Go to the **Push Notifications** section in the sidebar

![Push Notifications Dashboard Menu](@shared/assets/dashboard-push-notifications-menu.png)

### Supported Providers

Activity Feeds supports the following push notification providers:

#### Firebase Cloud Messaging (FCM)

- **Best for**: Android and iOS devices, cross-platform applications
- **Requirements**: Firebase project with Cloud Messaging enabled
- **Configuration**: Upload your Firebase service account JSON file

#### Apple Push Notification (APN)

- **Best for**: iOS devices
- **Requirements**: Apple Developer account and push certificate or authentication key
- **Configuration**: Upload your .p8 authentication key or .p12 certificate

### Configuration Steps

#### Firebase Configuration

1. In the Stream Dashboard, click **New Configuration**
2. Select **Firebase** as the provider
3. Provide a descriptive name (e.g., "activity-feeds-firebase")
4. Upload your Firebase service account JSON file

The Firebase service account JSON should look like this:

```json
{
  "type": "service_account",
  "project_id": "your-project-id",
  "private_key_id": "key-id",
  "private_key": "-----BEGIN PRIVATE KEY-----\nYOUR_PRIVATE_KEY\n-----END PRIVATE KEY-----\n",
  "client_email": "firebase-adminsdk-xxxxx@your-project.iam.gserviceaccount.com",
  "client_id": "client-id",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token"
}
```

#### Apple Push Notification Configuration

1. In the Stream Dashboard, click **New Configuration**
2. Select **APN** as the provider
3. Fill in the required information:

| Field Name             | Description                                                          |
| ---------------------- | -------------------------------------------------------------------- |
| **Name**               | Descriptive name for this configuration (e.g., "activity-feeds-apn") |
| **Bundle ID**          | Your iOS app's bundle identifier                                     |
| **Team ID**            | Your Apple Developer Team ID                                         |
| **Key ID**             | Your APNs authentication key ID                                      |
| **Authentication Key** | Your .p8 private key file                                            |

### Multi-Bundle Support

Activity Feeds supports multiple push configurations per provider, enabling:

- **Environment separation** (development, staging, production)
- **App variant support** (different versions of your app)
- **Multi-tenant applications** (different configurations for different customers)

When initializing the Activity Feeds SDK, specify which configuration to use:

```swift
let notificationsConfig = PushNotificationsConfig(
    pushProviderInfo: PushProviderInfo(
        name: "production-ios", // The name you gave in the dashboard
        pushProvider: .apn
    )
)

let config = FeedsConfig(pushNotificationsConfig: notificationsConfig)
```

### Testing Your Configuration

After setting up your push configuration:

1. **Initialize your app** with the push configuration
2. **Register a test device** using your app
3. **Send a test push notification** using the Activity Feeds API
4. **Verify the device receives the notification**

### Best Practices

1. **Use descriptive names** for your push configurations (e.g., "feeds-prod-apn", "feeds-staging-fcm")
2. **Separate configurations** for different environments
3. **Test configurations** before deploying to production
4. **Monitor push delivery** through the dashboard push logs

### Troubleshooting

Common configuration issues:

- **Invalid credentials**: Double-check your service account files and certificates
- **Mismatched bundle IDs**: Ensure bundle IDs match between your app and configuration
- **Expired certificates**: APNs certificates have expiration dates
- **Wrong environment**: Make sure you're using the correct production/sandbox settings

If you encounter issues, check the push logs in your Stream Dashboard for detailed error messages.


---

This page was last updated at 2026-05-22T16:31:46.760Z.

For the most recent version of this documentation, visit [https://getstream.io/activity-feeds/docs/go-golang/push-providers-and-multi-bundle/](https://getstream.io/activity-feeds/docs/go-golang/push-providers-and-multi-bundle/).