iOS Notifications
Crisp uses Apple Push Notification service (APNs) to deliver push notifications on iOS. The Flutter plugin handles most of the integration automatically, but you need to configure a few things.
1. Create an APNs Key
- Go to your Apple Developer Account
- Navigate to Certificates, Identifiers & Profiles > Keys
- Create a new key with Apple Push Notifications service (APNs) enabled
- Download the
.p8key file and note the Key ID
See the Apple documentation for detailed instructions.
2. Configure Crisp Dashboard
- Go to your Crisp Dashboard
- Navigate to Settings > ChatBox Settings > Push Notifications
- Under the Apple Push Notification section:
- Upload your
.p8key file - Enter your Key ID and Team ID
- Click Verify Credentials
- Upload your
3. Add Push Notifications Capability
In Xcode:
- Open your project (
ios/Runner.xcworkspace) - Select your target (Runner)
- Go to Signing & Capabilities tab
- Click + Capability and add Push Notifications
4. Register for Remote Notifications
Add the following to your ios/Runner/AppDelegate.swift inside didFinishLaunchingWithOptions:
DispatchQueue.main.async {
UIApplication.shared.registerForRemoteNotifications()
}This ensures the app registers for remote notifications on launch.
How It Works
The Flutter Crisp Chat plugin's iOS implementation automatically:
- Forwards the device token to Crisp via
CrispSDK.setDeviceToken(deviceToken) - Handles incoming notifications with
CrispSDK.handlePushNotification(notification) - Shows notification banners when the app is in the foreground
- Opens the chat when a notification is tapped
You don't need to write any additional Swift code — the plugin handles all of this internally.
Production Only
Currently, Crisp push notifications on iOS are only sent to production APNs channels. Notifications will not be received when testing with development provisioning profiles or in sandbox mode. This limitation may be resolved in a future Crisp SDK update.
Next Steps
- Notification Handling — Handle notification taps in Flutter (Android Option B)
