- Use app ui mode for AppActivity
- Update target and compile SDK version to 35 (Android 15)
- Remove navigation and address search features
- Add mail requirement flag to google pay request
- Allow PAN_ONLY cards in test environment
- Remove unused html docs
- Update project configs and dependencies for Android Studio compatibility
- Add optional context to logEvent request
- Update fueling API
- Adjust receipt attachments handling
- Add sdk handlers for optional receipt email and receipt attachments
- Update Payment API to 2024-3
- Retrieve CoFu payment method kinds from GeoJson instead of tiles API
- Update Fueling API to 2024-3
- Adjust AppDrawer ripple effect to match content shape
- Add location accurancy to app objects
- Make the content of the AppDrawerHost configurable and extend App model
- Update POI API
- Update Fueling API
- Update Pay API
- Update User API
- Make AppDrawer UI in AppDrawerHost configurable
- Implement shareFile message handler
- Add function to request CoFu gas stations within visible region
- Only enable web contents debugging in debug builds
- Re-generate pay API 2022-1
- Add cofu gas station object to gas station
- Add network security config to example apps
- Set min SDK version to Android 8
- Add clientId as requirement for SDK setup
- Regenerate API files to fix relationship and type generation
- Use git tags instead of GitLab tags to retrieve last tag to construct the snapshot version
- Add suffix to API filenames to avoid filenames that are reserved on Windows
- Also publish the SDK as snapshot release
- TargetSdk and compileSdk to Android 14
- Add a communication handler to start the navigation to the specified location
- Return the correct response in the Google Pay availability check
NOTE: If you want to use Google Pay, please upgrade to this PACE Cloud SDK version.
- Add Google Pay availability check as util function
- Rename brand id key
- Re-implement the local available apps and AppDrawer logic in Jetpack Compose
BREAKING CHANGE: You no longer need to call AppKit.requestLocalApps, AppKit.openApps and AppKit.closeApps yourself. This is now automatically managed by the AppDrawerHost. So just add the AppDrawerHost composable function to your Jetpack Compose layout or the AppDrawerHostView to your view-based layout. See migration guide or documentation for more information.
- Add merchantId to request model to fix payment on production
NOTE: If you want to use Google Pay, please upgrade to this PACE Cloud SDK version.
- Add brand id to gas station
- Implement payment process with Google Pay
- Add timeout to location functions
- Moved and renamed the CdnAPI to PaymentMethodVendorsAPI
- Change POIKit.observe functions to return live gas station response instead of observables
- Add danish localization
- Add updating distance label to app drawers
- Add GasStation.isOpen function
- Upgraded dependencies for Android gradle plugin, Kotlin and Compose. Make sure client dependencies are compatible or update them.
- Correctly set webview background color
- Change Gradle configuration of Room testing from api to androidTestImplementation
- Generate API 2022-1
- Cleanup documentation
- Decrease log level of unimportant error logs
- Fix crash in user preferences migration if an empty session is persisted
- Implement meta collector
- Add the interruptible flag to the merge request CI jobs to cancel old pipelines
- Scope user preferences to user id
- Catch ActivityNotFoundExeption if no supported browser is installed during authorization
- Crash when selecting the feedback button in the fueling canceled error
- Disable all activity transition animations
- Cleanup variables
- Force the use of Chrome custom tab for the authorization if it is installed and enabled
- Adjust GitLab base URL
- Remove createdAtStart = true flag in the GeoAPIManager Koin declaration to not make requests during SDK setup
- Add fuel.site to list of trusted domains
- Unified user agents from requests and the apps
- Support absolute paths in manifest
- Restructure generated API files so that the client can overwrite the request setup
- Add the ability to add additional query parameters to each payment method vendors request
- Cleanup todos in code
- Remove the stage environment
- Add migration guide for stage removal
- Make sure that the GeoJson is only requested once during the init of the caches
- Remove AppFragment memory leak in AppActivity
- Introduce environment-based CDN base url for payment method vendors request
- Change GeoAPIClient to use cdn url
- Revise user info request and response model
- Remove the internal POI GeoJSON API files
- Regenerate API files to fix problems with wrong return types
- Improve the handling of process kills during the creation of a payment method within the custom tab
- Correctly generate relationships and resources of API files
- Remove bot configs
- Update documentation link
- Exclude unused 'Errors' classes from generated API code
- Remove enums in GasStation model
- Fix typo in GitLab bot config
- Refactor URL and manifest handling to use fueling URL from GeoJSON
- Update string resources
- Add label config for PACEBot
- Remove GitLab issue templates
- Use cdn instead of cms
- Use Gson instead of Moshi for CMSApi
- Reformat code and optimize imports of all files
- Add pre-commit git hook to format generated code
- Make sure that the API call returns the server error and not 401 if PACE ID is not reachable
- Regenerate all API files to remove Authenticator
- Update GitLab templates
- Add callbacks to report breadcrumbs or errors to client app
- Implement fueling example app
- Fetch the gas stations to observe first if we don't have the coordinates
- Add shellCard payment method and dieselB0 fuel type to GasStation model
- Remove geofence related code and strings
- Adjust bump script to automatically create changelog
- Fix
IllegalStateException
in POIKit where the database was accessed on the main thread
- Add the following languages: Czech, French, Portuguese, Dutch, Italian, Polish, Romanian, Russian and Spanish
- Regenerate all API files with a new headers parameters per request
- Add new property
isOnlineCoFuGasStation
toGasStation
- Regenerate all API files to change the return type from
Void
toResponseBody
- Fix wrong setup check error message
- Check if the manifest request was successful before deserializing the response body
- Add process payment quick fix for pre auth payments
- Replace Kotlin synthetics with Jetpack View Binding
- Change the
screenOrientation
for all activities tobehind
, which uses the samescreenOrientation
as the activity immediately beneath it in the activity stack - Remove JCenter as dependency repository
- Remove fallback to
apps/query
endpoint to request local apps if GeoJSON file couldn't be retrieved
- The
connectedFuelingStatus
property of theCofuGasStation
is now nullable so that the Cofu gas station is not skipped in the cache loading if this property is absent in the API response
- Fix a bug where the
additionalParameters
of theCustomOIDConfiguration
were overwritten by the values from thePACECloudSDK.additionalQueryParams
- Fix a bug where the payment process was not possible if the
pace_redirect_scheme
is not specified
- Reduce requests to the token endpoint by refreshing the token only once if multiple API requests fail with
401 - Unauthorized
- Add the possibility to open authorization and end session requests in a WebView instead of the custom tab. This behavior can be controlled with the new
integrated
attribute of theoidConfiguration
of the SDK setupconfiguration
. Setintegrated
totrue
, if you want to open the authorization and end session requests in a WebView. Set it tofalse
(default), if you want to open them in the custom tab as before.
- Add environment based URL extensions. All extensions are defined in the
URL
object e.g.URL.dashboard
to get the URL of the dashboard app of the set environment.Environment.$ENV.$url
is deprecated now.
- Regenerate communication code and rewrite the
openUrlInNewTab
PWA request to handle the newintegrated
parameter. If theintegrated
parameter is set to true, then the URL will be loaded in a new WebView instead of the custom tab.
- Simplified setup of IDKit. SDK now decides which
OIDConfiguration
should be used so that clients only need to provide aCustomOIDConfiguration
with aclientId
andredirectUri
.
- Add
additionalProperties
property toGasStation
model - Set
pace.cloud
as default value of thedomainACL
property in the PACE Cloud SDK configuration
- Add default ProGuard rules to fix possible problems when client apps use ProGuard
- Add
ACCESS_COARSE_LOCATION
permission check in SystemManager - Update Room's version to
2.4.0-beta02
to fix a bug on Apple's M1 chips
- Introduce
shareText
PWA communication handler, which by default opens the system share sheet for sharing text. This behavior can be overridden inAppCallback.onShareTextReceived(text, title)
.
- IMPORTANT: We have updated all dependencies to the latest stable versions to fix possible security vulnerabilities in
kotlin-reflect
. We have also updated target and compile SDK versions to API level 31 (Android 12).
- Change routing URL endpoint to a
pace.cloud
domain
- Combine IDKit setup with PACECloudSDK setup.
IDKit.setup(...)
is no longer accessible. TheIDKit
is now initialized viaPACECloudSDK.setup(...)
. Therefore an optionalOIDConfiguration
parameter was added to theConfiguration
class of thePACECloudSDK
, which must be initialized with at least theclientId
and theredirectUri
. - Change properties of
CofuGasStation
fromvar
toval
- Add the attribute
properties: Map<String, Any>
to theCofuGasStation
which includes different information of the gas station e.g. app URL
- Adjust handling of utm parameters
- Adjust TOTP secret handling
- Send 499 status when user cancels login
- Add
appAuthRedirectScheme
asmetaData
in Manifest
- Fix generated fueling api 2021-2
- Add
request-id
from backend to log message if request fails - Remove default timeout in PWA communication API
- Use minified GeoJSON to save bandwidth and change default of
geoAppsScope
topace-min
- Regenerate fueling API 2021-2
- Implement
isRemoteConfigAvailable
PWA communication handler to check if the remote config feature is generally available and returnsfalse
by default. This behavior can be overridden inAppCallback.isRemoteConfigAvailable(isAvailable)
.
- Add custom user agent in interceptor
- Regenerate Api for 2021-2
- Override all callbacks for all
LocationListener
instances and adjust callback implementations
- Implement the
isSignedIn
PWA communication handler which returnstrue
by default if the authorization is valid inIDKit
. This behavior can be overridden inAppCallback.isSignedIn(isSignedIn)
. - Add
AppKit.openDashboard(...)
to open the Connected Fueling dashboard app - Implement new price history endpoints in
POIKit
to fetch fuel price history by country or gas station
- Regenerate communication code to fix problem with unparsable error response
- Fix overwriting of custom set
utm_params
- Fix bug where
AppActivity
was finished when it was started andAppKit.openApps(...)
was called at the same time - Overwrite
LocationListener
callback functions to avoid problems/crashes for devices with Android version smaller than 11
- Add setup flag to check whether
PACECloudSDK
has been set up correctly before using it'sKit
s
- Move everything that belongs to the GeoAPI from
AppKit
/API
toPOIKit
:AppKit.requestCofuGasStations(...)
moved toPOIKit.requestCofuGasStations(...)
andAppKit.isPoiInRange(...)
moved toPOIKit.isPoiInRange(...)
- Fix bug where CoFu stations outside the radius were returned from
requestCofuGasStations
call
- Also use the center point (if available) of the CoFu station in the
isPoiInRange
check instead of only the coordinates of the polygons as already done in the local apps check
- Refactor
openUrlInNewTab
flow to fix loading ofcancelUrl
when creating a payment method which opens in custom tab
- Change
requestCofuGasStations()
to return all cofu stations (online and offline)
- Fix Fueling PWA URLs for non-prod environment
- Added
FLAG_ACTIVITY_NEW_TASK
flag to fix a bug where the receipt share sheet was not opened when the PACE Cloud SDK was initialized with an application context
- Add logging for successful setup 'PACECloudSDK' and 'IDKit' and for missing mandatory values for setup
- Open the share sheet by default when the PWA sends image data, e.g. when clicking on a receipt. This behavior can be overridden in
AppCallback.onImageDataReceived(bitmap)
- The location's speed will only affect when app drawers are shown, but not when they are being removed again
- Only show network error in WebView if it is a main frame error
- Fix bug that third party browser custom tabs were not closed after adding the payment method e.g. PayPal
- Add methods to
IDKit
that returns the user's payment methods, transactions and checks the PIN requirements - Remove
LocationAvailability
check since it causes issues on some devices - Ensure that AppKit's requestLocalApps will always call the completion callback
- Migrate Gradle files from Groovy to Kotlin
- Use Kotlin Coroutines instead of Future to fetch the PWA manifest and icons
- Add
bearing
parameter toGetLocation
PWA call
- Add
AppRedirect
handler to PWA communication to let the client app decide if a redirect from the current PWA to another specified PWA should be allowed
- Adjust handling of too large bounding boxes when requesting tiles
- Change default authentication mode to
AuthenticationMode.NATIVE
- Request with multiple accept headers correctly generated e.g.
GetTermsAPI
- Remove
autoClose
option when starting theAppActivity
- Offer default configurations for all environments for clients that login with PACE ID (IDKit)
- Fix bug that could occur when the user tried to log in but was still logged in with another account
- Add function to Appkit to request Connected Fueling gas stations by location and radius
- Use gas station endpoint as fallback for POI position if none was found in the database when observing a single POI by ID
- Return location based apps based on
appsDistanceThresholdInMeters
configuration and not if the location is in the polygon - Rework communication between apps and SDK
- Add
isBiometricAuthEnabled
handler to PWA communication
- Added new generated request with possibility to set readTimeout times for requests
- Added classes to generated requests
- Correctly set content type for request with object schema
- Add function to POIKit to observe gas stations by ID and location
- Update protobuf dependency and regenerate protobuf code
- Added new
Stats
endpoint to determine total number of connected fueling gas stations
- Remove completion lambda from
isPoiInRange
and returntrue
orfalse
synchronously
- Deprecated the
AppCallback.onTokenInvalid
method. UseAppCallback.getAccessToken
instead that introduces theisInitialToken
flag. - Implement automatic session handling for apps. If
IDKit
is used, the SDK will now try to renew the session automatically when an app requests a new token. In this case thegetAccessToken
AppCallback will no longer be called. If the renewal fails theonSessionRenewalFailed
AppCallback may be implemented to specify a custom behavior for the token retrieval. Otherwise the sign in mask will be shown. - Speed up
isPoiInRange
call. Add optionallocation
parameter which will be used instead of the current location if specified. Also makeisPoiInRange
suspend to call it in a own Coroutine.
- Add a new
onLogin
AppCallback that is invoked when the user logs in via an automatic authorization request from the SDK within the PWA (not ifIDKit.authorize(...)
is called manually). This callback provides theAppActivity
context and the authorization result. - Intercept the URLs and close the PWA if it is the close redirect URI
cloudsdk://close
- Add
logout
handler to PWA communication - Automatically refresh the access token and retry the request if it returns status code 401 (unauthorized). If
IDKit
is not initialized, no session is available or the token renewal failed, the error is passed to the client app. - Add
getLocation
handler to PWA communication - Content type and more headers are now generated
- Authorization header only used for needing requests
- Adjust Geo API to new version
2021-1
- Add function to
AppKit
to request Connected Fueling gas stations
- Improve selection of app drawer icon size
- Change expected
getTraceId
message from{}
to""
- Fix NullPointerExceptions while deserializing JSON messages from PWA
- Make app drawer more robust by increasing distance threshold and checking whether same apps are returning when requesting local apps
- Add option to
IDKit.setPINWithBiometry(...)
to authenticate with the device PIN, pattern, or password instead of biometry (defaults totrue
)
- Implement a default handler for
getConfig
PWA message which returnsnull
to prevent waiting for result - Fix host in key under which secure data is persisted
- Use
LocationProvider.currentLocation()
first andLocationProvider.firstValidLocation()
as fallback to speed up the verify location call in the PWA - Refactor
LocationProvider
so that every one-time location e.g. used inisPoiInRange
orrequestLocalApps
is returned inline - Decrease
getConfig
PWA message handling timeout to 5 seconds - Set
utm_source
per default and add defined list of defaultutm_params
to make sure these params won't be removed - Return location accuracy in
verifyLocation
PWA message response - Add option to authenticate payments with the device PIN, pattern, or password instead of biometry
- Add functions to launch the authorization and end session request as well as the handling of the response inline
- Add default implementation of
onTokenInvalid
callback which automatically tries to refresh the token and shows the login form in case of error - Refactor
isPoiInRange
check so that it no longer checks if the position is within the POI's polygon, but if beeline to the POI is within 500m
- Ensure that
additionalQueryParams
is added to all PWA URLs
- Fix body models in generated API requests
- Introduce tracing identifier for all API requests and communication with PWA
- Refactor
SharedPreferences
handling inAuthorizationManager
- Fix crash in POIKit database converter
- Generate Pay API
2020-4
, which includes removal of enums to prevent the clients from crashing when new values are added
- Add payment method vendor request
- Add cofuPaymentMethods field to GasStation entity
- Introduce timeouts for PWA communication
- Intercept PWA logs and pass all logs to client
- Add handlers to set user properties, log analytic events and get configurations
- Add function to enable biometry within 5 minutes after authorization
- Add missing parameter to JS communication
- Remove token validity check and send the received token to the PWA right away to prevent a possible
onTokenInvalid
loop
- Pass
reason
andoldToken
in theonTokenInvalid
callback
NOTE: Remember to adjust the implementation of your
tokenInvalid
function.
- Implement check for chrome installation and always use it if installed and not deactivated
- Add convenience method for fueling app
- Add methods to handle PIN and biometry actions
- Implement end session request and add end session endpoint to
OIDConfiguration
to clear user session on logout
- Improve communication with PWA
- Remove Bintray integration because it will be discontinued
- Add Maven Central and JitPack as alternative repositories (see the installation section in README)
- Remove fetching of manifest and location speed check in
isPoiInRange
- Return exception instead of last access token in
refreshToken
in case of error
- Add convenience method for most common URLs
- Generate new GeoJSON service with new filter possibilities, e.g. onlinePaymentMethod
- Checks for available apps in a given location is now done on device
- Rework deep linking setup by configuring manifest placeholders
- Add handler for deep linking redirect scheme
- Add zoom level to refresh POIs method
- Remove fixed POI search box size and add padding to visible region instead
- Add incremental padding util method
- Remove ZoomException
- Add generated User API
- Remove passing of initial access token from the PACECloudSDK.setup
- Implement back handler for PWA communication
- Update generated POI API
- Add generated Pay API
- Add generated Fueling API
- Add generated GeoJSON API
- Pass the activity context instead of the application context to the onCustomSchemeError AppCallback
- Adjust communication with the web apps
- Add possibility to attach additional query params to all requests
- Extend documentation for custom drawer and add an example to the app
- Introduce new setup method for PACECloudSDK
- Remove old cloud SDK and use the generated apps endpoints for the requests
- Extend the documentation with authorization via Activity Result API
- Return app object in onOpen callback
- Use manifest description instead of shortName for the first line of the app drawer
- Fix bug where location LiveData was emitted before location was updated
- Add user info endpoint
- Add method to get cached access token
- Add generated POI API models and requests
- Add Pay service API
- Fix fetching of web app manifest's URL
- Make automatic closing of the AppActivity optional
- Implement
verifyLocation
check
- Fix outdated location state LiveData values
- Fix deep linking
- Set version and build number based on commit tag
- Remove device ID from request headers
- Remove device ID and API key from user agent
- Remove fetching apps by app ID
- Initial PACE Cloud SDK replacing the old Cloud SDK