Changelog
Android
Release history for the Stay22 Android SDK.
1.6.5 — October 30, 2026
Fixed
- An
aidpassed toinitializewith capital letters, such asMyTravelApp, no longer makes the SDK reject its partner configuration withpartner_config_aid_mismatch. Before this fix the SDK scheduled no notifications for that app.
1.6.4 — October 13, 2026
Fixed
- Allez links generated by the SDK now put the partner ID first and the destination second when present.
1.6.2 — October 2, 2026
Fixed
- If the SDK fails to report to Stay22 that it showed a notification, it now retries
several times, starting each attempt only when the device is online. Before, the SDK could lose
that report after one failed attempt, after a few minutes offline, or when your app
called
Stay22.setTravelContextorStay22.clearTravelContextbefore the report went out. The SDK still drops the report if the user opts out after seeing the notification. No change is needed in your app. - If you set
Stay22.testing.baseURL, the SDK's background work now uses it too, for example when it shows a scheduled notification or reports that it could not show one. Before, that work always called Stay22's production server. Apps that do not set it see no change. Set it at app startup, for example inApplication.onCreate, so it also applies when Android starts your app only to run that work.
1.6.1 — October 2, 2026
Fixed
- If your app sets its own StrictMode policy, it no longer sees a main-thread network
violation when the SDK reports to Stay22 that it could not schedule a notification, for
example because the travel context has no usable destination. These reports can come from
Stay22.setTravelContext,Stay22.advanced.scheduleNotificationor your app moving to the background, and the SDK used to send them on the calling thread. On the main thread, Android's default policy threwNetworkOnMainThreadException; the SDK caught it, so your app kept running, but the report never reached Stay22. Reports raised on the main thread are now sent from a background thread. No change is needed in your app.
1.6.0 — October 1, 2026
Added
- Support can inspect a recent notification decision and posting history from device logs when testing your app, without adding logging code to your integration.
1.5.0 — September 28, 2026
Added
Stay22.advanced.setErrorListener(listener)andsetErrorHandler { error -> ... }report SDK failures to your app as aStay22Error, so you can forward them into the crash reporter you already use and see at a glance when a problem is Stay22's rather than yours. The SDK bundles no crash reporter of its own, which would fight yours for the same handlers. Callbacks arrive on the main thread.- Errors raised before your app registers an error listener are held and delivered as soon
as it does, so a partner configuration that fails during
initializestill reaches you. A listener you remove on the main thread is not called again, even for an error already on its way. - SDK errors are now written to Logcat at error level under the
Stay22tag whether or notStay22.testing.showLogsis on. Failures in the SDK's own background work, previously visible only with that flag on, are now reported the same way and throughsetErrorListener. - An unexpected failure in a call into the SDK, or in its own foreground and background
handling, is caught instead of crashing your app. Calls return a safe value; in both
cases the SDK logs the problem and reports it through
setErrorListenerandStay22.diagnostics. A blankaidpassed toinitializestill fails fast, because that is an integration mistake rather than a device problem. - After
Stay22.initialize,Stay22.isEnablednow answersfalse, rather thantrue, when reading the stored setting fails. An app usingcom.stay22.sdk.RequiresConsentcould previously be told the SDK was enabled on a device whose preference store had become unreadable. Beforeinitializethere is no stored setting to read andStay22.isEnabledstill answerstrue; a consent-gated app should callStay22.readEnabled(application)there instead.
1.4.0 — September 25, 2026
Added
- Built-in notification text now follows the device's French or English language when a notification is scheduled. Custom notification text is unchanged.
- Apps that set
com.stay22.sdk.RequiresConsentin AndroidManifest.xml keep the SDK disabled until they explicitly enable it after consent. Stay22.setEnabled(application, enabled)andStay22.readEnabled(application)let Android apps save and read the SDK enabled setting before initialization.
Fixed
- Calling
Stay22.setEnabled(application, false)orStay22.clearTravelContext()now prevents a scheduled Stay22 notification from appearing and removes one already displayed on Android.
1.3.0 — September 22, 2026
Added
Stay22.advanced.noteCurrentActivity(activity)for hosts that start the SDK after the current screen is already in front. Without it, a permission prompt in that same session has no Activity to launch from.
Changed
- The SDK now supports Android 7.0 (API 24). It previously required Android 8.0 (API 26).
Fixed
- Tapping a notification after the app was killed now delivers the click event when the SDK starts again, matching shown and blocked events.
1.2.0 — September 8, 2026
Changed
- Documented that the SDK installs no cookie handler. Stay22's responses set a
session22cookie carrying the same session id the SDK already sends as a parameter. Android'sHttpURLConnectiondefers to the process-wideCookieHandler.getDefault(), which is your app's to set, so the SDK cannot opt out per connection the way the iOS SDK now does and will not install one on your behalf. If your app has a cookie handler it will keep that cookie; the SDK never reads it either way.
Documentation
- Event handling now documents, and the sample now demonstrates, that a
whenoverStay22Eventneeds anelsebranch. The sealed class ships in a separately compiled binary, so awhencovering only today's subclasses throwsNoWhenBranchMatchedExceptiononce a new event is added. Matches the iOS change.
Fixed
- Partner config is now fetched from
/ext/partner/settingsinstead of/ext/partner. The old path is blocked by an unrestricted rule on AdGuard's spyware filter list, so on a device running a system-wide URL filter the SDK never received its config, never scheduled a notification, and retried on every foreground forever./ext/partner/settingswas added for exactly this reason and the web moved to it in April; both paths are registered to the same handler and return the same payload.
1.1.0 — August 31, 2026
Added
- Integration self-check via
Stay22.diagnostics, reporting each prerequisite as pass/warn/fail with the remedy for anything that fails. Stay22.requestNotificationPermission { granted -> }, which reports the user's actual answer. The existing no-argument overload returns the state before the prompt is answered and is now documented as such.Stay22.advanced.scheduleNotification(force:)for verifying an integration without waiting out the normal delay. Defaults tofalseand never bypasses partner settings.
Changed
- Android and iOS now share a version number.
Fixed
- A transient failure no longer loses that trip's notification permanently.
- Repeated travel-context updates no longer defer a notification indefinitely.
- A notification can no longer be delivered twice after an interrupted network call.
- Notification events raised while the app is not running now reach the host app on next launch.
- The SDK can no longer crash the host app on unexpected internal errors, or in apps with a custom background-work setup.
- Release builds no longer strip classes the SDK needs; minified builds are covered by CI.
- Notification permission is no longer requested when the system cannot show a prompt.
Documentation
- Device-context detection now lists every app checked, with an opt-out.
1.0.13 — August 21, 2026
Added
- Notification impression reporting when a Stay22 notification is displayed.
- A
notification_channel_blockedskip reason, so a blocked channel is distinguishable from a missing runtime permission.
Changed
- SDK activity reporting now includes the installed SDK version for release-level diagnostics.
Fixed
- Treat a blocked notification channel as unavailable. Notifications are no longer scheduled or posted when the user has turned off the destination-suggestions channel while leaving notifications enabled for the app.
1.0.12 — July 16, 2026
Fixed
- The locally built fallback notification link now applies device-context provider exclusions, matching the link the server builds.
Changed
- Aligned the notification link and failure-event
sourcetodirect.
1.0.11 — July 2, 2026
Fixed
- Retry loading partner configuration when the app returns to the foreground, so a failed or interrupted initial fetch no longer blocks notifications for the rest of the session.
1.0.10 — July 2, 2026
Changed
- Notification frequency is now recorded when a notification is shown instead of on the next app launch, so suppression windows start on time and undelivered notifications never count as shown.
- Travel context is cleared once its notification is shown; set travel context again to schedule the next one.
1.0.9 — July 2, 2026
Fixed
- A scheduled notification that never appears (for example when the system cancels or defers the background work) is no longer recorded as shown. This prevents an undelivered notification from starting the post-notification cooldown and suppressing later notifications.
1.0.8 — June 30, 2026
Added
- Initial binary distribution of the Stay22 Android SDK (
.aar) via a Maven repository.
Full release notes and downloads: Android releases