pushpushgo_sdk 1.4.0
pushpushgo_sdk: ^1.4.0 copied to clipboard
PushPushGo SDK for Flutter
0.0.1 #
WIP Release - iOS and Android support based on our native SDK
0.0.2 #
Android switch to version 2.0.1 to fix beacon tags format Fix beacons (tags, selectors) passing to server
0.0.3 #
Add readme md with instructions Cleanup example code
0.0.4 #
Change link to repository in to pubspec
0.0.5 #
Change description in pubspec
0.0.6 #
iOS now support strategy and ttl in tags ios-sdk set to 1.2.0
0.0.7 #
Update android-sdk to 2.0.2 version Fix issue with "crashing app" on initial run
0.0.8 #
VERSION REDACTED
0.0.9 #
Update android-sdk to 2.0.6 version Fix issue with "crashing app" on background run
1.0.1 #
Update ios-sdk to 2.0.1 version Fix issue with delivered events on ios apps Breaking changes: requires AppGroups capability on ios App target
1.0.2 #
Fix ios sdk versioning
1.0.3 #
Add PPG.registerNotificationsDeliveredFromUserInfo() into PushPushGoSdkPlugin.swift
1.0.4 #
Pre release test version for fixing delivery events on app killed
1.1.0 #
Fix async completion handler issue in PPG.registerNotificationsDeliveredFromUserInfo() Fix delivered event issue
1.2.0 #
Add support for Swift Package Manager (SPM) Add support for push notification buttons Fix error for channeling methods not from main thread
1.2.1 #
Fix support of cocoapods (change path to plugin, change podfile version)
1.2.2 #
Cocoapods supported for ios from version 3.0.3 Add Universal Links support
1.2.3 #
Update android and firebase libraries Fix sdk namespace problem
1.2.4-beta.1 #
Add onNotificationClicked event handler Example Android app migration to new version
1.2.4-beta.2 #
Add handleNotificationLink option to control automatic URL opening on notification click Update Android SDK to 3.0.2
1.3.0 #
New Features #
- In-App Messages - Display targeted messages within your app based on routes or custom triggers
- Route-based message triggering with
InAppMessagesNavigatorObserver - Custom event triggers via
showMessagesOnTrigger() - Custom code action handlers for button clicks
- Support for multiple routers (Navigator, go_router, auto_route, Beamer)
- Separate documentation in
IN_APP_MESSAGES.md
- Route-based message triggering with
- Notification Click Handler - Handle push notification clicks directly in Flutter
- New
onNotificationClickedHandlercallback ininitialize()method - New
handleNotificationLinkoption to control automatic URL opening - Access to notification payload (link, campaign, project)
- New
Improvements #
- iOS: Fix cold start notification handling with
pendingNotificationDatamechanism - Updated documentation with In-App Messages guide and notification handler examples
- Update PPG Android SDK to 3.0.2
- Update PPG In-App Messages SDK to 3.0.2
1.3.1 #
Bug Fixes #
- Android: Fix cold-start crash - Added
PushPushGoContentProviderfor early SDK initialization- Prevents
PushPushException: You have to initialize PushPushGo with context first!on first app install - SDK now initializes via ContentProvider before FCM can trigger
onNewToken() - Supports credentials from AndroidManifest meta-data or SharedPreferences
- Prevents
1.3.2 #
New Features #
- Dynamic Groups (Segments) - Assign/unassign subscribers to dynamic groups via Beacon
- New
assignToGroupproperty in Beacon for assigning subscribers to dynamic groups - New
unassignFromGroupproperty in Beacon for unassigning subscribers from dynamic groups - Requires ios-sdk 4.2.0+ and android-sdk 3.1.0+
- New
1.3.3 #
Bug Fixes #
- Android: Fix release build crash (R8/ProGuard) - Added consumer ProGuard rules for Huawei HMS classes
- Fixes
Missing class com.huawei.agconnect.AGConnectOptionsand related R8 errors during release build - Apps using only GMS (without HMS) no longer fail on
minifyReleaseWithR8
- Fixes
1.3.4 #
Bug Fixes #
- Android: Fix in-app messages not displaying - Fixed
currentActivitybeing null inInAppUIControllerwhen SDK is initialized from Dart (after the firstActivity.onResume). The SDK registersActivityLifecycleCallbackstoo late to capture the initial resume, so the current activity is now injected directly via reflection at initialization time and before each trigger/route change. - Android: Fix Kotlin 2.x compilation error - Fixed
onSuccesssignature inPushpushgoSdkPluginto match updated interface definition
1.3.5 #
Bug Fixes #
- Android: Fix missing click events when
handleNotificationLink: false- Notification click tracking (handleBackgroundNotificationClick) was incorrectly gated by thehandleNotificationLinkflag inPushPushGoHelpers.onCreate/onNewIntent, so apps that opted out of native link opening to handle deeplinks themselves stopped reporting click events to PPG entirely. Click tracking is now always invoked; thehandleNotificationLinkflag continues to control only whether the native SDK opens the URL (via the no-opnotificationHandleroverride). - Android: Apply
notificationHandleroverride in early init paths - The no-op handler is now also applied fromPushPushGoContentProviderandPushPushGoHelpers.initializebased on the persisted flag, so link opening stays suppressed even on cold-starts triggered by a notification click before the Flutter side initializes.
1.3.6 #
Bug Fixes #
- Android: Fix cold-start crash on FCM callbacks (
PushPushException: You have to initialize PushPushGo with context first!) - Bumped native android-sdk from 3.1.0 to 3.2.0. In 3.1.0 the internallogDebug()calledPushPushGo.getInstance()without an initialization guard, so any FCM callback (onNewToken/onMessageReceived) arriving before SDK initialization crashed the app before theisInitialized()check could run - typically on the first launch after a fresh install, when SharedPreferences are still empty and AndroidManifest meta-data credentials are not configured. FCM callbacks arriving before initialization are now safely ignored. Configuring the AndroidManifest meta-data is still recommended so that pushes received on cold start are actually displayed.
1.3.7 #
Bug Fixes #
- iOS: Fix notification click not delivered on cold start - The
UNUserNotificationCenterdelegate was registered only duringinitialize()(called from Dart after the Flutter engine starts), which is after the app finishes launching - too late for iOS to reliably deliver the tap that launched the app. As a result,onNotificationClickedHandler(and native link opening) did not fire when the app was fully closed. The delegate is now registered at plugin registration time (duringdidFinishLaunching), and a tap that arrives beforeinitialize()completes is cached natively and replayed right after initialization.
1.4.0 #
Features #
- Live Activities - Real-time, backend-driven notifications on both platforms: Android 16 Live Updates (
ProgressStyle) and iOS Live Activities on the Lock Screen and Dynamic Island, with theFOOTBALL_MATCH_TRACKINGtemplate. NewPPGLiveActivitiesAPI:initialize,isSupported,subscribe,unsubscribe,getSubscriberId,isActive,getActiveActivities,simulatePush, plus astatusStreamof lifecycle events andsetClickHandlerfor taps. See Live Activities Guide. - Android: No host-app code required - The plugin intercepts Live Activity clicks on both cold start and
onNewIntent, so unlike the native SDK integration nothing has to be added toMainActivity. Clicks arriving before the Flutter engine is ready are buffered and replayed. Deep link opening follows the existinghandleNotificationLinkflag. - iOS: Widget Extension integration - Live Activities are rendered by a Widget Extension in the host app, using the Lock Screen and Dynamic Island views shipped by the native SDK. The plugin reuses the App Group and credentials already configured for push notifications, handles late-join bootstrap (subscribing to an already running activity), and prefetches team badges into the App Group. Taps arrive as SDK-owned
ppg-la://URLs: the plugin consumes them to report the click to Dart (live notification id, deep link and action button index) and lets the native SDK forward the tap to its real destination —http(s)to the browser, a custom scheme back to the app so your own routing sees it,ppg-la://closeto end the activity. URLs that are notppg-la://are left untouched, so universal links and other deep-link plugins are unaffected. A complete working example was added inexample/ios/LiveActivityWidget.
Bug Fixes #
- Live Activity clicks are no longer lost on cold start - A tap that launches the app is delivered by the native side as soon as the event channel opens, which is typically before the app registers its click handler (any widget touching
statusStreamopens the channel first). Those clicks were dropped. They are now buffered on the Dart side and replayed the momentsetClickHandleris called, so handler registration order no longer matters. Status events published before the firststatusStreamlistener attaches are replayed the same way. - iOS: correct click payload -
liveNotificationIdwas empty for every tap exceptCLOSEbuttons, anddeepLinkcarried the SDK-internalppg-la://click?…wrapper instead of the real destination. Both are now read from the wrapper, andactionIndexreports the tapped action button (0/1) instead of always-1, matching Android. - iOS: no more spurious clicks - Any URL opened while a Live Activity was on screen (universal links, OAuth callbacks, other plugins' deep links) was reported as a Live Activity tap. Only the SDK-owned
ppg-la://scheme is inspected now. - Android:
isSupported()no longer depends on SDK initialization - It returnedfalseon a supported Android 16+ device wheneverPushpushgoSdk.initialize()had not completed, conflating "not initialized" with "unsupported device". It now falls back to the OS version check. - Android: invalid credentials no longer brick the app -
PushPushGo.getInstance()only validates while it builds its singleton, so credentials passed to a laterinitialize()were accepted unchecked and written to SharedPreferences. The next cold start rebuilt the SDK from those values, threw during validation insidePushPushGoHelpers.initialize(), and killedApplication.onCreate— an unrecoverable crash loop until the user cleared app data. Credentials are now validated before they are stored (initialize()fails withINVALID_CREDENTIALSinstead), and startup initialization no longer throws: unusable stored credentials are logged, dropped and the app starts normally. - CocoaPods: a missing
:gitsource now fails instead of silently downgrading - The podspec depended onPPG_framework/PPG_InAppMessageswithout a version floor. The 4.x native SDK is served from GitHub, but the CocoaPods trunk still carriesPPG_framework 3.0.3(June 2025), so an app that forgot the:git/:tagline in itsPodfileresolved that copy and quietly built against a native SDK four minor versions behind. Both dependencies now require~> 4.3, so CocoaPods reportsNone of your spec sources contain a spec satisfying the dependencyinstead. The README also spells out that both pods are required, even for push-only apps.
Dependencies #
- iOS: native ios-sdk 4.2.0 → 4.4.0 (adds the
PPG_LiveActivitiesproduct), linked through Swift Package Manager. On CocoaPods, apps opt in by addingpod 'PPG_LiveActivities', :git => 'https://github.com/ppgco/ios-sdk.git', :tag => '4.4.0'to their ownPodfile; the plugin cannot declare the dependency itself, because the pod is not on the CocoaPods trunk and doing so would breakpod installfor apps that never use Live Activities. The plugin builds and runs with or without the module; without it, Live Activities report as unsupported. - Android: no change - native android-sdk 3.2.0 already ships Live Activities.