Pushwoosh Flutter Plugin
Cross-platform push notifications, In-App messaging, and more for Flutter applications.
- Push Notifications — register, receive, and handle push notifications on iOS and Android
- In-App Messages — trigger and display in-app messages based on events
- Tags & Segmentation — set and get user tags for targeted messaging
- User Identification — associate devices with user IDs for cross-device tracking
- Message Inbox — built-in UI for message inbox with customization options
- Badge Management — set, get, and increment app icon badge numbers
- Live Activities — iOS Live Activities support with default and custom setups
- Geozones — location-based push notifications via separate plugin
- Deep Links — handle deep link URLs from push notifications
- Huawei Push — HMS push notification support
- Multi-channel — email, SMS, and WhatsApp registration
- JavaScript Interface — bidirectional communication with In-App Message HTML
Add the plugin to your pubspec.yaml:
dependencies:
pushwoosh_flutter: '^2.3.16'
dependencies:
pushwoosh_geozones: ^2.3.15 # Location-based push notifications
pushwoosh_inbox: ^2.3.15 # Message Inbox UI
cd ios && pod install
Android Setup #
- Configure Firebase project in Firebase Console
- Place
google-services.json into android/app/ folder
Integrate the Pushwoosh Flutter plugin using AI coding assistants (Claude Code, Cursor, GitHub Copilot, etc.).
Requirement: Your AI assistant must have access to Context7 MCP server or web search capabilities.
Choose the prompt that matches your task:
1. Basic Plugin Integration
Integrate Pushwoosh Flutter plugin into my Flutter project.
Requirements:
- Install pushwoosh_flutter via pub
- Initialize Pushwoosh with my App ID in main()
- Register for push notifications and handle onPushReceived and onPushAccepted streams
Use Context7 MCP to fetch Pushwoosh Flutter plugin documentation.
Show me how to use Pushwoosh tags in a Flutter app for user segmentation.
I need to set tags, get tags, and set user ID for cross-device tracking.
Use Context7 MCP to fetch Pushwoosh Flutter plugin documentation for setTags and getTags.
3. Message Inbox Integration
Integrate Pushwoosh Message Inbox into my Flutter app. Show me how to:
- Display the inbox UI with custom styling using PWInboxStyle
- Load messages programmatically
- Track unread message count
Use Context7 MCP to fetch Pushwoosh Flutter plugin documentation for presentInboxUI.
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
void main() {
runApp(MyApp());
// Initialize Pushwoosh
Pushwoosh.initialize({
"app_id": "YOUR_PUSHWOOSH_APP_ID",
"sender_id": "YOUR_FCM_SENDER_ID"
});
// Listen for push events
Pushwoosh.getInstance.onPushReceived.listen((event) {
print("Push received: ${event.pushwooshMessage.payload}");
});
Pushwoosh.getInstance.onPushAccepted.listen((event) {
print("Push opened: ${event.pushwooshMessage.payload}");
});
// Register for push notifications
Pushwoosh.getInstance.registerForPushNotifications();
}
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
// Set tags
await Pushwoosh.getInstance.setTags({
"username": "john_doe",
"age": 25,
"interests": ["sports", "tech"]
});
// Get tags
Map tags = await Pushwoosh.getInstance.getTags();
print("Tags: $tags");
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
Pushwoosh.getInstance.setUserId("user_12345");
await Pushwoosh.getInstance.postEvent("purchase_complete", {
"productName": "Premium Plan",
"amount": "9.99"
});
import 'package:pushwoosh_inbox/pushwoosh_inbox.dart';
// Open inbox UI with custom styling
var style = PWInboxStyle();
style.dateFormat = "dd.MM.yyyy";
style.accentColor = "#3498db";
style.backgroundColor = "#ffffff";
style.titleColor = "#333333";
style.descriptionColor = "#666666";
style.listEmptyMessage = "No messages yet";
PushwooshInbox.presentInboxUI(style: style);
// Or load messages programmatically
List<InboxMessage> messages = await PushwooshInbox.loadMessages();
for (var msg in messages) {
print("${msg.title}: ${msg.message}");
}
// Track unread count
int? unread = await PushwooshInbox.unreadMessagesCount();
print("Unread messages: $unread");
import 'package:pushwoosh_geozones/pushwoosh_geozones.dart';
// Start location tracking
await PushwooshGeozones.startLocationTracking();
// Stop location tracking
PushwooshGeozones.stopLocationTracking();
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
// Register email
await Pushwoosh.getInstance.setEmail("user@example.com");
// Register multiple emails
await Pushwoosh.getInstance.setEmails(["user@example.com", "work@example.com"]);
// Set user ID and emails together
await Pushwoosh.getInstance.setUserEmails("user_123", ["user@example.com"]);
// Register SMS and WhatsApp
Pushwoosh.getInstance.registerSmsNumber("+1234567890");
Pushwoosh.getInstance.registerWhatsappNumber("+1234567890");
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
// Default setup (call once at app start)
await Pushwoosh.getInstance.defaultSetup();
// Start a Live Activity
await Pushwoosh.getInstance.defaultStart(
"delivery_123",
{"driverName": "John"}, // attributes
{"status": "On the way"} // content
);
// Or start with a custom token
await Pushwoosh.getInstance.startLiveActivityWithToken(token, "delivery_123");
// Stop Live Activity
await Pushwoosh.getInstance.stopLiveActivity();
8. Deep Link Handling #
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
Pushwoosh.getInstance.onDeepLinkOpened.listen((String deepLink) {
print("Deep link opened: $deepLink");
// Navigate to the appropriate screen
});
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
// Register JavaScript interface for In-App communication
await Pushwoosh.getInstance.addJavascriptInterface('flutter', {
'onButtonTap': (Map<String, dynamic> args) {
print("Button tapped with args: $args");
return "OK";
},
'getUserData': (Map<String, dynamic> args) {
return {"name": "John", "premium": true};
}
});
// Remove interface when no longer needed
await Pushwoosh.getInstance.removeJavascriptInterface('flutter');
| Method |
Description |
Pushwoosh.initialize(params) |
Initialize the plugin. Call on every app launch |
registerForPushNotifications() |
Register for push notifications, returns push token |
unregisterForPushNotifications() |
Unregister from push notifications |
getPushToken |
Get the push token (Future) |
getHWID |
Get Pushwoosh Hardware ID (Future) |
| Method |
Description |
setTags(tags) |
Set device tags |
getTags() |
Get device tags |
setUserId(userId) |
Set user identifier for cross-device tracking |
setLanguage(language) |
Set custom language for localized pushes |
setEmail(email) |
Register email for the user |
setEmails(emails) |
Register multiple emails |
setUserEmails(userId, emails) |
Set user ID and register emails |
registerSmsNumber(number) |
Register SMS number (E.164 format) |
registerWhatsappNumber(number) |
Register WhatsApp number (E.164 format) |
| Stream |
Description |
onPushReceived |
Stream of PushEvent when notification is received |
onPushAccepted |
Stream of PushEvent when notification is opened |
onDeepLinkOpened |
Stream of String when a deep link is opened |
| Method |
Description |
postEvent(event, attributes) |
Post event to trigger In-App Messages |
addJavascriptInterface(name, methods) |
Register JS interface for Rich Media communication |
removeJavascriptInterface(name) |
Remove a JavaScript interface |
| Method |
Description |
setApplicationIconBadgeNumber(badge) |
Set badge number |
getApplicationIconBadgeNumber |
Get current badge number (Future) |
addToApplicationIconBadgeNumber(badge) |
Increment/decrement badge |
| Method |
Description |
defaultSetup() |
Setup default Live Activity handling |
defaultStart(activityId, attributes, content) |
Start a default Live Activity |
startLiveActivityWithToken(token, activityId) |
Start Live Activity with a token |
stopLiveActivity() |
Stop the current Live Activity |
| Method |
Description |
startServerCommunication() |
Resume communication with Pushwoosh server |
stopServerCommunication() |
Pause communication with Pushwoosh server |
setShowForegroundAlert(value) |
Show/hide alerts when push received in foreground |
Android-specific #
| Method |
Description |
setMultiNotificationMode(on) |
Allow multiple notifications in notification center |
enableHuaweiNotifications() |
Enable Huawei HMS push support |
| Method |
Description |
PushwooshInbox.presentInboxUI(style?) |
Open inbox UI with optional style customization |
PushwooshInbox.loadMessages() |
Load inbox messages from server |
PushwooshInbox.loadCachedMessages() |
Load cached inbox messages |
PushwooshInbox.unreadMessagesCount() |
Get unread message count |
PushwooshInbox.messagesCount() |
Get total message count |
PushwooshInbox.messagesWithNoActionPerformedCount() |
Get messages with no action count |
PushwooshInbox.readMessage(code) |
Mark message as read |
PushwooshInbox.readMessages(codes) |
Mark multiple messages as read |
PushwooshInbox.deleteMessage(code) |
Delete a message |
PushwooshInbox.deleteMessages(codes) |
Delete multiple messages |
PushwooshInbox.performAction(code) |
Perform the action associated with a message |
| Method |
Description |
PushwooshGeozones.startLocationTracking() |
Start location-based push tracking |
PushwooshGeozones.stopLocationTracking() |
Stop location tracking |
Pushwoosh Flutter Plugin is available under the MIT license. See LICENSE for details.
Made with ❤️ by Pushwoosh