Android SDK Changelog
A reference of bug fixes and improvements made to the Pushy Android SDK.
v1.0.121
- Fixed rare ANR in
PushyServiceManager.stop()
- Disabled notification badge number when foreground service is enabled
v1.0.120
- Fixed rare infinite reconnection loop caused by race condition in
PushyJobService
v1.0.119
- Fixed rare ANRs in
PushyJobService
v1.0.118
- Doze mode compatibility improvements
Please declare the android.permission.SCHEDULE_EXACT_ALARM permission in your AndroidManifest.xml
when building your app with targetSdkVersion 31
(Android 12) or higher.
v1.0.117
- Improved connection handling during Doze mode when foreground service is enabled
v1.0.116
- Fixed rare case of sound playback for foreground notifications when foreground service is enabled
v1.0.115
- Fixed rare case of
Can't create handler inside thread
when invokingPushy.setEnterpriseConfig()
v1.0.114
- Fixed rare case of
ForegroundServiceStartNotAllowedException
when foreground service functionality is enabled
v1.0.113
- Added DNS anti-caching compatibility for
Pushy.setEnterpriseConfig()
(Pushy Enterpise only)
v1.0.112
- Added foreground service type compatibility for
targetSdkVersion 34
(AndroidManifest changes)
v1.0.111
- Fixed rare race condition when calling
Pushy.setEnterpriseConfig()
which caused the SDK to enter a disconnected state on certain Android builds
v1.0.110
- Fix #2 for rare case of
NullPointerException
inPushyJobService.acquireWakeLock()
due to cross-thread access
v1.0.109
- Fixed rare case of
NullPointerException
inPushyJobService.acquireWakeLock()
due to cross-thread access
v1.0.108
- Fixed
PushyJobService
crash introduced in1.0.107
v1.0.107
- Optimized
PushyJobService
MQTT connection reliability - Fixed rare case of
IllegalStateException
inPushySocketService
(Oppo devices only)
v1.0.106
- Optimized wake lock release timing (thanks Eberth Cruz)
- Optimized variable keep alive mechanism for aggressive routers and cellular carriers
- Fixed rare case of
NullPointerException
ingetForegroundNotification()
when foreground service functionality is enabled
v1.0.105
- Optimized wake lock release timing (thanks Eberth Cruz)
v1.0.104
- Added
Pushy.setCustomDeviceId()
to pass in a custom device identifier instead of relying on the device's ANDROID_ID (in the rare case of collisions)
v1.0.103
- Removed unused code in third party library
v1.0.102
- Fixed wake lock handle leak in
PushyUpdateReceiver
(thanks Eberth Cruz)
v1.0.101
- Fixed foreground service notification grouping issue
v1.0.100
- Fixed rare case of
ForegroundServiceDidNotStartInTimeException
when foreground service functionality is enabled
v1.0.99
- Added
Pushy.toggleForegroundService()
for enabling built-in foreground service functionality
v1.0.98
- Fixed rare reconnection bug when calling
Pushy.toggleNotifications(false)
when device Internet is disconnected
v1.0.97
- Fixed rare ANRs in
PushyJobService
andPushyUpdateReceiver
v1.0.96
- Started using
PushySocketService
on Android 7.0 (API level 24) and older - Fix #2 for rare
NullPointerException
crash due to race condition inPushyJobService.main()
v1.0.95
- Fixed rare
NullPointerException
crash due to race condition inPushyJobService.main()
v1.0.94
- Fixed
fdsan_error()
tombstone (not a crash) on Android 13 and up - Fixed rare
NullPointerException
crash inPushyUpdateReceiver.onReceive()
v1.0.93
- Added
Pushy.getFCMToken()
for accessing the underlying FCM Fallback Delivery device token
v1.0.92
- Attempted to fix rare
fdsan_error()
tombstone (not a crash) on Android 13 and up
v1.0.91
- Fixed rare bug when calling
PushySocketService.setForegroundNotification()
v1.0.90
- Added variable keep alive mechanism for custom heartbeat intervals over 5 minutes
- Improved battery usage of
PushyJobService
when app is whitelisted from power optimizations
v1.0.89
- Fixed rare ANR in
PushySocketService
(Android 5 only)
v1.0.88
- Fixed rare case of
NullPointerException
inClientComms.shutdownConnection()
v1.0.87
- Added compatibility with the new Android 13 notification runtime permission scheme.
To display the notification permission dialog for your users on Android 13 and up:
- Please declare the android.permission.POST_NOTIFICATIONS permission in your
AndroidManifest.xml
:
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
- The notification permission dialog will automatically be displayed when calling
Pushy.register()
. Please only callPushy.register()
after the user has had a chance to explore your app, to increase the chance they will consent to receiving notifications. - Please ensure you are passing an
Activity
context toPushy.register()
instead of anApplication
context for the notification permission dialog to be displayed. - To check whether the notification permission dialog was denied in the past and needs to be displayed again, call
Pushy.isPermissionGranted()
and if it returnsfalse
you may callPushy.requestNotificationPermission()
to prompt the user again. Until the user consents,Pushy.isRegistered()
will also returnfalse
. - Android 13 will only prompt the user twice (once if
targetSdkVersion < 33
). Beyond that, you will need to instruct your Android 13 users to manually toggle notifications on for your app in the App Settings to receive notifications.
v1.0.86
- Fixed rare cases of
NullPointerException
inClientState.quiesce()
v1.0.85
- Fixed rare bug when calling
PushySocketService.setForegroundNotification()
- Removed the
android.permission.SCHEDULE_EXACT_ALARM
permission requirement
Please undeclare the android.permission.SCHEDULE_EXACT_ALARM permission in your AndroidManifest.xml
as Google Play may no longer approve releases declaring this permission.
v1.0.84
- Additional reliability fixes for
PushySocketService
(Android 5 only)
v1.0.83
- Multiple reliability fixes for
PushySocketService
(Android 5 only)
v1.0.82
- Started using
PushyJobService
on Android 6.0 and up (API level 23) - Fix #6 for
NullPointerException
inPushyJobService
due to AOSP platform bug (Android 5)
v1.0.81
- Fix #5 for
NullPointerException
inPushyJobService
due to AOSP platform bug (Android 5)
v1.0.80
- Fixed
JobService
memory leak detected by LeakCanary (#20)
v1.0.79
- Doze mode compatibility improvements
- Fixed rare infinite reconnection loop caused by race condition
- Chinese manufacturer power saving compatibility improvements
Please declare the android.permission.SCHEDULE_EXACT_ALARM permission in your AndroidManifest.xml
when building your app with targetSdkVersion 31
(Android 12) or higher.
v1.0.78
- Fixed crash #2 when compiling with
targetSdkVersion 31
and up (Android 12+)
v1.0.77
- Fixed crash #1 when compiling with
targetSdkVersion 31
and up (Android 12+)
v1.0.76
- FCM Fallback Delivery: added support for multiple FCM
<service>
declarations with actioncom.google.firebase.MESSAGING_EVENT
v1.0.75
- Fix #2 for rare bug with
Pushy.setAppId()
when external storage permission is granted
v1.0.74
- Fixed rare bug with
Pushy.setAppId()
when external storage permission is granted
v1.0.73
- Fixed
JobService
memory leak detected by LeakCanary (#17) - Fixed
UntaggedSocketViolation
in StrictMode (VmPolicy) (#18)
v1.0.72
- Added
Pushy.setJobServiceInterval()
for customizing the default JobService maintenance interval
v1.0.71
- Fix #4 for
NullPointerException
inPushyJobService
due to AOSP platform bug (Android 5)
v1.0.70
- Added support for
firebase-messaging:22.0.0
breaking changes - Fixed rare bug with
PushyJobService
entering a 15-second keep alive loop
v1.0.69
- Migrated from the
jCenter()
repository tomavenCentral()
v1.0.68
- Fixed rare crash when invoking
PushySocketService.setForgroundNotification()
v1.0.67
- Fixed rare case of ANR in
PushyJobService
due toSharedPreferences
invocation
v1.0.66
- Fix #3 for
NullPointerException
inPushyJobService
due to AOSP platform bug (Android 5)
v1.0.65
- Fix #2 for
NullPointerException
inPushyJobService
due to AOSP platform bug (Android 5)
v1.0.64
- Added
__json
intent extra for accesssing the raw JSONdata
payload in yourBroadcastReceiver
v1.0.63
- Fixed rare case of
NullPointerException
inPushyBroadcastManager
due to race condition
v1.0.62
- Fixed
NullPointerException
inPushyJobService
due to AOSP platform bug (Android 5)
v1.0.61
- Started using
PushyJobService
on Android 5.0 and up (API level 21)
v1.0.60
- Fixed rare case of ANR in
PushySocketService
due toSharedPreferences
invocation
v1.0.59
- Fixed bug where configuring a foreground service would result in an
IllegalStateException
v1.0.58
- The
android.permission.WRITE_EXTERNAL_STORAGE
permission is no longer used by the SDK - You may remove this permission from your
AndroidManifest.xml
and stop displaying a permission dialog if your app doesn't need access to external storage -
The SDK now makes use of the device's
ANDROID_ID
, in combination with the device manufacturer and model name, for unique device recognition between app reinstalls
v1.0.57
- Added the option to run as a foreground service to prevent background service interruption
v1.0.56
- Improved MQTT connection resiliency on Chinese manufacturer devices
v1.0.55
- Added invocation of
BufferedReader.close()
to fix Strict Mode warning (thanks @FutureGUIs)
v1.0.54
- Added support for FCM high priority fallback delivery to burst through Android power saving mode
v1.0.53
- MQTT connection security and performance improvements (see updated firewall requirements)
v1.0.52
- Dropped support for legacy devices without an auth key
v1.0.51
- Added
Pushy.isConnected()
for checking whether the underlying MQTT connection is established
v1.0.50
- Added support for multiple push
BroadcastReceiver
declarations inAndroidManifest.xml
v1.0.49
- Fixed delayed delivery of notifications to the push
BroadcastReceiver
in rare scenarios
v1.0.48
- Added
Pushy.setEnterpriseCertificate()
for self-signed certificate support in Pushy Enterprise
v1.0.47
- Added
Pushy.toggleExternalStoragePersistence()
for enabling/disabling device token persistence in the external storage
v1.0.46
- Fixed rare
NullPointerException
in internal MQTT connectivity library
v1.0.45
- Fixed bug where calling
Pushy.toggleNotifications(false)
would execute network I/O on main thread
v1.0.44
- Fixed bug where calling
Pushy.setAppId()
would clear a device's saved token on app reinstallation
v1.0.43
- Added an option to customize the
PushyJobService
maintenance interval
v1.0.42
- Fixed bug that prevented socket reconnection when switching from cellular to Wi-Fi
v1.0.41
- Added the option to proxify requests for strict firewalls (contact us for more info)
v1.0.40
- Migrated to
android.intent.action.MY_PACKAGE_REPLACED
for app update broadcasts (Android O)
v1.0.39
- Fixed rare bug that would prevent reconnection when keepalive mechanism fails
v1.0.38
- Removed
org.apache.http.legacy
dependency
v1.0.37
- Added support for passing a
NotificationCompat.Builder
toPushy.setNotificationChannel()
v1.0.36
- Added
Pushy.setNotificationChannel()
for automatically configuring a Notification Channel for your notifications (example usage)
v1.0.35
- Added support for
targetSdkVersion >= 26
(please definePushyJobService
in yourAndroidManifest.xml
)
v1.0.34
- Added
Pushy.setAppId()
for overriding package name dashboard app identification
v1.0.33
- Minor reliability improvements in rare scenarios
v1.0.32
- Added
Pushy.unregister(Context)
for clearing the device registration token
v1.0.31
- Fixed crash related to Android O background execution limits
v1.0.30
- Added a 15-second timeout for all SDK network requests
v1.0.29
- Added
PushyLogger.setLogListener()
for listening to the SDK logcat output
v1.0.28
- Added
Pushy.toggleWifiPolicyCompliance()
for complying with the device's Wi-Fi sleep policy
v1.0.27
- Bundled
com.fasterxml.jackson
inside the SDK
v1.0.26
- Fixed minor bug with
Pushy.setEnterpriseConfig()
for enterprise apps
v1.0.25
- Fixed minor bug with device authentication
v1.0.24
- Added topic subscribe/unsubscribe methods
v1.0.23
- Improved device token validation logic
v1.0.22
- Improved persisted token verification
v1.0.21
- Improved device authentication security
v1.0.20
- Improved the performance of the SDK
v1.0.19
- Improved migration compatibility for Enterprise apps
v1.0.18
- Fixed
SSLSocketFactory
warning whenStrictMode
is enabled
v1.0.17
- Miscellaneous usability improvements
v1.0.16
- Fixed minor bug when calling
Pushy.toggleNotifications()
afterPushy.listen()
v1.0.15
- Improved MQTT reconnection logic in unstable networks
v1.0.14
- Added
Pushy.setHeartbeatInterval()
to modify the default socket keep-alive interval
v1.0.13
- Miscellaneous reliability improvements
v1.0.12
- Reimplemented MQTT connection logic to improve overall reliability
v1.0.11
- Added
Pushy.toggleNotificationsEnabled()
to enable or disable push notifications for the device
v1.0.10
- Improved notification delivery reliability when app is running in the background
v1.0.9
- Improved token persistence algorithm for better device token tracking
- Bundled the
com.fasterxml.jackson
JSON parsing library in a separate.jar
file
v1.0.8
- Fixed bug with double/float values in push payloads
v1.0.7
- Fixed crash for Android 2.2 (Froyo) devices
v1.0.6
- Fixed ANR in background service (transparent to users)
- Added the option to disable
AndroidManifest
permission verification
v1.0.5
- Improved notification persistence mechanism
v1.0.4
- Fixed
NullPointerException
when network connectivity is unstable
v1.0.3
- Improved socket reconnection algorithm
v1.0.2
- The
android.permission.WRITE_EXTERNAL_STORAGE
permission is now optional
v1.0.1
- Improved token persistence between app reinstalls
- Added
AndroidManifest
permission verification for troubleshooting
v1.0.0
- Initial release