Pendo Mobile SDKs operate in a dynamic environment. Many times, end-users don't have network connectivity when the app launches or the app might lose the network connection in the middle of a 'session'.
To ensure intact delivery of usage analytics regardless of the network condition, the SDKs continue to collect analytics regardless of the connectivity status:
- As long as a network connection is available, the SDK sends the usage analytics data in bulk to avoid load on the mobile device's network.
- If the network connection is unavailable, the SDK keeps collecting analytics and saves them on the device. To make sure that the app doesn't consume too much space, there is a default limit of 10MB for these saved analytics. This space is used as first-in-first-out if the entire space is used.
- The 10MB space on the device can be adjusted per app by a support ticket - use this for apps that are supposed to be offline for longer time periods.
Once the Internet connection is restored, the SDK is notified and then sends all saved analytics to the Pendo server.
Note: Pendo SDK doesn't start collecting analytics or show guides until a successful call to setup() and startSession(), meaning if the end-user does not have a connection when the app is started, the SDK continues to call setup() and startSession() automatically but doesn't capture analytics.
What about guides?
- If the connection was not present at the time of startSession() call, no guides are shown to the user.
- If the network connectivity existed during startSession() call, and all guide images were downloaded before the network connectivity was lost, guides are presented to the users until the next session starts (after 30 minutes in the background or upon a relaunch of the app the SDK re-initiates against the Pendo backend to re-fetch the guides).