iOS Simulator can neither subscribe to nor receive push notifications. Android Emulator works fine though.
Plugin source Sample Plugin API Docs Geozones Plugin API Docs Message Inbox Plugin API Docs
1. Create an app on Firebase Cloud Messaging Console. You may use this guide for reference (section Manually add Firebase).
2. Get iOS push certificates by following the iOS Platform Configuration guide.
3. Configure the App in Pushwoosh Control Panel. Please follow Android configuration guide for Andriod and iOS Platform Configuration guide for iOS.
First, you need to add the pushwoosh package to your project:
1. Add a dependency to your pubspec.yaml
file:
dependencies:pushwoosh: ^1.8.0
2. Install the package from the command line:
$ flutter packages get
3. Import the package in your dart code
import 'package:pushwoosh/pushwoosh.dart';
Second, place the google-services.json
file into android/app
folder in your project directory.
You should've gotten the google-services.json
file while creating the app in Firebase console. If you haven't, please consult this thread (section Get a config file for your Android app).
Third, initialize the plugin:
Pushwoosh.initialize({"app_id": "YOUR_APP_ID", "sender_id": "FCM_SENDER_ID"});
To register for push notifications, call the following method:
Pushwoosh.getInstance.registerForPushNotifications();
To process various events, use the corresponding listeners as follows. Push receipt:
Pushwoosh.getInstance.onPushReceived.listen((event) {...});
Push open:
Pushwoosh.getInstance.onPushAccepted.listen((event) {...});
Deep Link open:
Pushwoosh.getInstance.onDeepLinkOpened.listen((link) {...});
All done!
To find more details on using the plugin, please see Plugin API Docs.
Note that the flutter build apk
command obfuscates your code by default.
Thus, you may get this exception:
java.lang.IllegalStateException: Could not find class for name: com.pushwoosh.plugin.PushwooshNotificationServiceExtension
There are two solutions in this case:
Use the flutter build apk --no-shrink
command to compile your code without obfuscation.
Or you can manually enable ProGuard and add the necessary rules.
To enable ProGuard for your project, add the following strings to your build.gradle file:
build.gradlebuildTypes {release {minifyEnabled trueuseProguard trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'signingConfig signingConfigs.debug}}
Then, add the following rules to the android/app/proguard-rules.pro
proguard-rules.pro#Pushwoosh Flutter-keep class com.pushwoosh.plugin.PushwooshPlugin { *; }-keep class com.pushwoosh.plugin.PushwooshNotificationServiceExtension { *; }