- Support Message Center Push Notifications for Android 13
- Fix conversation deserialization issue with conversation reset & throttle once per SDK version
- Register lifecycle callback on the main thread
- Remove all references of AndroidID
- Add troubleshooting mode for Android 12+ with a Apptentive certificate
- Support long texts for alert dialog buttons
- Add safeguard parameter for interaction frequency of Rating Dialog.
- Fix a couple of possible ANR issues.
- Update License & README files.
- Fix a couple of issues related to Android 12.
- Fix Navigate to Link interaction for API 30+.
- Remove all references to AdvertiserId.
- Add the ability to randomly target a percentage of customers.
- Prevent Clipboard Notifications for Release builds in Android 12.
- Replace JCenter with Maven Central.
- Fixes a race condition where information about the SDK and app was failing to be recorded.
- Google Play Core library ProGuard fixes.
- Accessibility improvements.
- Google Play In-App Review support.
- Android 11 support.
- Improve Accessibility in Surveys for TalkBack users.
- Fix potential NPE when presenting a survey without terms and conditions.
- Add a configuration property to display terms and conditions.
- Added support for AndroidX.
- Fixed crash while configuration changes.
- Fixed Fragment crash while using
androidx.navigation:navigation-fragment-ktx
dependency.
- Fixed Fragment crash while using
androidx.appcompat:appcompat:1.1.+
dependency.
- Fixed R8 obfuscator crash.
- Made Android ID collection optional on pre-Oreo targets.
- Fixed "Who" card in the Message Center.
- Fixed loading conversation data when the build if obfuscated with R8.
- Provided an API for custom device storage encryption/decryption.
- Improved default encryption handling.
- Made encrypted storage configurable on the client.
- Updated SDK dependencies to Android-P
- Fixed rare Message Center crash due to concurrency issues.
- Improved encryption stability.
- Allow users to make sequential
login
calls for the same user name.
- Fixed encrypted message store for logged-in users.
- Fixed the bug which prevented users from logging-in back after a logout.
- Fixed SDK state restoration logic.
- Fixed 422 http errors.
- Fixed corrupted payloads if encryption key could not be resolved from the KeyStore.
- Improved SDK security with encryption and KeyStore.
- Added
OnPreInteractionListener
to intercept interactions flow.
- Added support for Apptimize experiments.
- Fixed implicit WRITE_EXTERNAL_STORAGE permission for Android O.
- Fixed 'attr/textColorError' not found error for Android P.
- Added support for mParticle user id.
- Improved lifecycle management.
- Properly handle different app support library versions.
- Don't export ApptentiveAttachmentFileProvider.
- Added support for notification-based interactions.
- Better logging for interaction criteria evaluation.
- Better troubleshooting support.
- Fix message polling issue.
- Fix UI-related crashes for logged-out conversation.
- Fix sending device diffs.
- Overall stability improvements.
- Fix a rare NullPointerException that occurs when Apptentive SDK activities are started without proper SDK initialization.
- Accessibility improvements for TalkBack.
- Fix a NullPointerException that occurs when the Apptentive SDK is included in an Instant App, and the host app's Activity is not available when exiting the Apptentive UI.
- Fixed callback passing issue.
- All long-running Apptentive API calls are now called asynchronously. See Migrating to 5.0.0 for migration instructions.
- Fixed a bug where network operations might start when the app is started, but in the background.
- Fixed an issue where the SDK might attempt to fetch messages when it shouldn't.
- Fix a NullPointerException that occurs when the Apptentive SDK is included in an Instant App, and the host app's Activity is not available when exiting the Apptentive UI.
- Fix a NullPointerException crash while announcing accessibility events.
- Fix a crash that was caused by a method being removed in the Android Support Library.
- Fix a bug where the SDK can't be installed in multiple apps due to a hard-coded Provider authority string.
- Improved accessibility of Surveys and Message center for the visually impaired
- Made use of vector drawables to cut down on AAR and APK size
- Added the ability to enable troubleshooting mode in the SDK, and easily email logs to Apptentive support
- Fix global configuration fetching
- Fix Love Dialog to stack buttons if their labels are too long
- Fixes Message Center UI bugs.
- Improved proguard configuration to allow certain Apptentive classes to be shrunk. This removes about 1200 methods.
- Fixes a bug that prevented interactions from being downloaded when the app is in release mode.
- Added the ability to log customers in to different private conversations. Customers who are logged in will be able to see a private conversation that is distinct from the converations of other customers using the same app on the same device. When they log out, their data is protected with strong encryption. Logging back in unlocks their data again, and Apptentive resumes providing services to the customer.
- Added an internal method
Apptentive.dismissAllInteraction()
for closing Apptentive UI.
- Rebuilt Message Center to use modern
RecyclerView
for better performance and stability. - Improved accessibility of our UI, including TalkBack support and fixing hit target sizes.
- Improved version targeting
- Fixed a bug where the Profile Card in Message Center wouldn't let a user focus the email field.
- Fixed a bug where the Survey "thank you" message text was the wrong color.
- Added new APIs for handling Apptentive push notifications. You can now get a
PendingIntent
from Apptentive if we sent the push. ThePendingIntent
can be used to launch Message Center directly from your Notification object. Old APIs are deprecated. - Send debug status to the server so you can target only debug or non-debug builds with your interactions.
- Fixed a bug where apps with names or versions ending in an underscore weren't tracked properly.
- Fixed a bug that sometimes prevented the Message Center composing area from gaining focus, even when tapped.
- Removed unneeded multidex config.
- Add proguard rule to prevent obfuscating
android.support.v4.app.FragmentManagerImpl
, which we load via reflection in a workaround for a bug in the support library. - Prevent NPE when animation runs after object is nulled.
- Fix a bug that sometimes prevented the Message Center Composing view from gaining focus on user touch.
- Added a new "NPS" question type for surveys.
- Fixed Message Center composing bar exception thrown when the animation was in play after the fragment was detached.
- Fixed Message Center exception caused by requesting focus on a nulled EditText.
- Moved database calls off the UI thread.
- Defer message polling task until Message Center is opened, UnreadMessagesListener is registered, or a Push is received.
- Add internal method to set the application theme programmatically from which the Apptentive UI will inherit styles.
- statusBarColor attribute was causing run-time exception on pre-21 devices.
- We've added a new answer type to multiple choice surveys. You can now specify an "Other" answer type for multiple choice questions. When a user selects this answer, a text input field will display. Any text entered in that field will be included in the survey response.
- Thumbnail in Recents Screen was not using host app's theme when the top Activity was an Apptentive Activity.
- Improve foreground / background detection.
- Fix borderless button styling before API level 23.
- Fix our UI to work better when the host app uses a translucent status bar.
- Fix window panning issue that can result in the keyboard coering part of a survey.
- We've made it much easier to integrate the Apptentive Android SDK into your app. Now, just add a single line to your
build.gradle
, and one to yourApplication
class. If you are migrating from a prior version, make sure to follow our simple Migration Guide. - Our SDK's UI will now inherit all styles from your app, as long as you are using an AppCompat or Material theme. If you want to further customize our UI, or you aren't using an AppCompat or Material theme, you can override our styles. Check out our UI Customization Guide.
- Our Surveys have been completely redesigned to use Material design. Your existing surveys will continue to work as before, but will look much better.
- You can now launch our UI without passing in an Activity. This is useful for recording Events and showing Interactions from a Service or BroadcastReceiver. Interactions launched in this way will launch in a new task, while those launched with an Activity Context will launch on top of the Activity stack as before.
- Other improvements include reducing sdk memory footprint and more accurate application lifecycle management.
- All Apptentive resources now have an "apptentive_" prefix
- Apptentive's Log class is renamed to "ApptentiveLog" to avoid confusion
- If apps upgrading from pre-2.0.0 still has now obsolete NetworkStateReceiver defined in their manifest, an immediate run-time assertion error will help app developers detect early.
- Fixed Message Center bug where non-english messages were either garbled or failed to send to server
- Fixed a bug where multiple SqlLite Connections were made when Parse push is integrated
- Message Center now allows consumers to attach up to four images to each outgoing message. You can also attach files to your replies, and they will be downloaded and displayed to consumers when they open Message Center.
- You've always had the ability to send custom data in the Person, Deveice, Message, and Event objects. However, you can now send custom data that is a Number or Boolean, and use that custom data in your Interaction targeting logic.
- Fixed a [potentially conflicting resource name. Issue 105
- Fixed a bug affecting display of Surveys.
- Message Center: We've completely rebuilt Message Center from the ground up. Our new Message Center uses Material Design throughout, and features streamlined and optimized behavior to help you get feedback from your customers, or start conversations. Message Center is now much more configurable from the server, so you can make changes to text and behavior after you release your app.
- Apptentive Push: We can now send push notifications to your GCM enabled device without going through a third party push provider. See the integrations section, and check out the documentation.
- Added Polish translations.
- Fixed a bug where the Feedback Dialog as launched through the Message Center would not be submittable if feedback had already been submitted, Message Center was disabled, and Email was required.
- Updated our Push Notification API to work with Parse 1.8.3 and Urban Airship 6.0.1. If you were using either of these push notification providers in a prior version, please see our Migration Guide.
- Fixed a bug where HTTP response inputstreams weren't being closed.
- Fixed a bug that prevented the Feedback Thank You dialog from displaying under some circumstances.
- Fixed a bug where HTTP response inputstreams weren't being closed.
This release includes support for Notes, which allows you to send messages to your customers and gives them the option to take surveys, navigate directly to content within your app, and more. Notes is currently in beta with select customers. If you are interested in trying out Notes, please contact us.
- Added the ability to display Notes Interactions.
- Added support for invoking nested Interactions, such as launching a Survey from a Note, and opening a Deep Link from a Note.
- Updated to use the latest versions of Android build tools and Android Gradle plugin.
- Fixed a bug that allowed internal analytics to send multiple launch events per displayed Interaction.
- Update to latest versions of Gradle (2.2), Android Gradle Plugin (0.14.4), Android build tools (21.1.1), and Target SDK Version (21).
- You can now set Apptentive's minimum log level by setting a flag in the manifest.
- Fixed a bug that prevented feedback from being submitted when email is required, but already supplied.
- Minor improvements to prepare for updated Trigger.io module.
- Dim background when dialogs are shown.
- Request gzip compression from server to save bandwidth.
- Added translations for Arabic, Greek, Brazilian Portuguese, Korean, and Turkish.
- Update to Gradle 2.1 and Android Plugin 0.13.+
- Add gradle configuration for uploading AAR and Javadoc to central maven repo. You can now integrate Apptentive using Maven!
- Refactored message polling and payload sending for simplicity.
- Deprecated NetworkStateReceiver.
- Added method for checking to see if an Interaction will show for a given Event.
- Fix enable Message Center setting.
- Use proper extension when uploading Attachment files.
- Don't check for messages while Message Center is disabled.
- If no network connection is present, network worker threads will go back to sleep instead of exit.
- Refactored repo to be more Gradle friendly. See these instructions if you are upgrading from a previous release.
- Added Gradle support.
- Added legacy IntelliJ project files for those who do not yet use Gradle.
- Simplified the sample apps.
- Added ability to send CustomData and EventData with Events.
- Added Parse push notification support.
- Added ability to set initial user name through API.
- Fixed Eclipse project files.
- Fixed JsonDiffer to handle zero value float diffing.
If you were using a previous version, see Migrating to 1.6.0
- Simplified Apptentive's native UI styling. Common things like buttons in our UI now use the same styles, so changes can easily be made to all similar elements at once.
- Added translations for French Canadian (fr-rCA).
- Added Apache Ant build scripts for the SDK, dev app, and tests.
- Added support to hide Apptentive branding for enterprise accounts.
- Fixed a rare crash that can occur when a user's database is stored on an SD card and that card is removed.
- Fixed a potential memory leak.
- Fixed default text in the Enjoyment Dialog portion of the Ratings Prompt.
- Removed some benign lint warnings.
- Removed unused resources.
- Fixed a bug that could result in a delay when sending data to the server.
- During development only, if you forget to specify an API key, we will display a dialog to let you know. Previously we only logged it.
We've refactored Surveys to use our Event Framework! You will now have the ability to show surveys at any Event in your code. This release also lets you show a Survey instead of asking for feedback if your customer says they don't love your app from the Ratings Prompt Interaction.
- Fixed a potential crash in the Feedback Dialog if submitted with blank feedback.
- ANDROID-323 Localized strings not properly populated with app name.
- Added support for Amason Web Services (AWS) Simple Notification Service (SNS) push notifications. If you use AWS SNS, you can now notify your customers when you reply to their conversation.
- Improved robustness of message polling.
- ANDROID-318 Surveys targeting custom person data don't return until the second time they are requested.
- Event Labels were being encoded incorrectly.
- Added new Engagement method. This method will trigger events, and show interactions to the user. Interactions can be configured on the server, and can be based on the count and time that events are shown.
- Moved the existing Rating feature to be an Interaction in this new system. Removed old methods.
- Lots of bug fixes and UI tweaks.
- Introduced background polling for messages. We will poll for new messages every 60 seconds whie the app is up, or every 8 seconds while our Message Center is in the foreground.
- Improved performance and robustness of SDK.
- Add setting to allow Message Center to be disabled by default, even before it has connected to the server.
- Added support for push notifications! If you are using a third party push notification provider, you can configure our server to send a push on your behalf when you reply to a customer. We currently support Urban Airship, but if you are using another provider, please let us know and we will add support.
- Added the ability to send Upgrade Messages to your users. Now you can notify users of new features targeted to specific builds or versions of your app, even if they have opted to auto-update your app in the app store.
- Added the ability to send hidden attachments to the server. You can now send texts, logs, images, and other files to the server to help provide better support. These files are visible to you in teh conversation view, but are not shown to the end user.
- ANDROID-239 PACKAGE_RESTARTED permission causes app to wake often
- ANDROID-238 Survey module doesn't respect "multiple_responses" flag
- Ability to pass Apptentive custom integration details. For instance, you can pass in the app's Urban Airship App ID, allowing us to send push notifications to your device.
- Add the ability to pass push notification intents into Apptentive code, and have Apptentive perform actions. Push integration currently supports Urban Airship, and can be configured in your app settings.
- ANDROID-224 Allow survey thank you dialog to contain links.
Slightly modified the behavior of the rating flow. The user can now close the rating flow by pressing the back button. This should create a less intrusive experience for the people using your app.
- ANDROID-201 Survey targeting doesn't work until after survey cache expires.
- ANDROID-223 Trim Survey text responses
- Fixed a bug where the rating flow could launch twice, especially on devices running KitKat.
- Add method to API. New way of opening Message Center allowing you to include custom data to be sent with the next message the user sends while the message center is open.
- Implemented an internal error trapping and reporting system. Exceptions in Apptentive code are now caught and logged to our server so we can maintain a reliable app experience and proactively fix hard to reproduce bugs.
- Fixed a potential crash in survey fetching code.
- Fix memory leak cause by hanging on to Activity context in database code.
- ANDROID-188 Rating logic doesn't respect 0 values with OR
- Send app's TargetSdkVersion with app_release, and OS's API Level with device.
- Use the server setting "Require Email" so that feedback can only be submitted if the user supplies a valid email.
- Get list of available Google account emails and provide them in an AutoCompleteTextView.
- Some minor tweaks to make the IntroDialog look great.
- Added new methods for adding and removing custom data set on the device and person objects. These methods can now be called anywhere in the app's lifecycle, and their values will be picked up the next time an activity starts.
- Added Swedish translation, updated translations for other languages.
- Restyled the screenshot confirmation dialog to match the other dialogs.
- Restyled Thank You dialog shown when surveys are completed, if so specified.
- ANDROID-178 ConcurrentModificationException in survey code
- ANDROID-181 Surveys can be sent twice
- ANDROID-173 Database locking issue
- ANDROID-155 Message Center can't scroll
- ANDROID-141 Simplified Chinese strings file contains Traditional Chinese
- ANDROID-142 Save the text entered in Message Center if the user closes it.
- ANDROID-145 Dev app can crash in tablet portrait mode.
- Support new enterprise survey features: tagged surveys, rate limiting, delivery capping, and time range constraining.
- New clean UI fro survey display.
- New clean UI for about page.
- Added ability to set the display name of this app from the web UI. The display name is used to surface a different name than the one specified in your package, and is handled transparently from the client's perspective.
- First release of a localized SDK. See README for supported languages.
- ANDROID-131 Survey clipping background.
- ANDROID-132 Radio Version is not being set in Device object
- ANDROID-134 Rating logic does not respect 0 values
- ANDROID-130 Lower part of message center is transparent.
- Replaced Feedback with new Message Center. Message Center allows two way communication between the app developer and customers, and the implementation is 100% native, and requires no active network. App users can send messages and attach screenshots, and receive a reply in-app. If they choose to specify an email address, they can also be contacted through email.
- Fix XML examples in README.
- ANDROID-82 Populate the feedback source field with "enjoyment_dialog" when launched from the ratings prompt
- ANDROID-114 Rating Dialog comes up twice.
- ANDROID-112 Bug in rating flow.
- ANDROID-113 Bug in rating flow.
- ANDROID-109 Google Play opens up on top of host application when rating app
- ANDROID-110 Ratings prompt doesn't respect zero value settings.
- App starts are now detected by looking for a 10 second gap where no App Activities are running. No major changes
- ANDROID-95 Come up with a new way to detect app starts and stops
- ANDROID-96 Crash on pre API 5 phones
- Added README.md
- Testing work
- ANDROID-95 Move to a queue and timer based solution instead of an event based one. Tear out the old stuff.
- ANDROID-96 Fix two bugs. Add an android for a resource that needed it, and allow pre API level 5 devices to work.
- ANDROID-97 Starting apps takes 30 seconds when server is slow and host app uses AsyncTask. Solution is to simply stop using AsyncTasks altogether.
- ANDROID-84 Remove checked in API keys from the Android repository
- ANDROID-85 Example app has API key in the resources file, but also requires updating the manifest
- ANDROID-89 Add callback after survey completion
- There was a problem with how we initialize our SDK that could lead to NPEs if the main Activity had been garbage collected, and interfered with unit testing individual child Activities. Fixed that.
- Fixed a problem with how we check for app uses. Now we keep track of each Activity instead of the Application as a whole.
- ANDROID-83: App crashes when no permissions are set for the app
- ANDROID-88: Android initialization needs rework
- Updated what counts as a "use". Before, we were incrementing uses on app launch, defined as a call to the main Activity's onCreate() method. That is not very useful, since hitting home screen backgrounds the app, but won't increment uses upon return. So instead, we figure out when the app is put into the background, and when it comes back.
- Updated app integration process. Instead of making a bunch of Apptentive API calls, you can now inherit from our ApptentiveActivity or ApptentiveListActivity. These classes allow you to save time integrating. You can also delegate your Activity's event handlers into Apptentive manually if you can't inherit from us.
- Redid the example apps. The previous "Demo" app was not really a demo, but a testing app. Renamed it accordingly. Also added two new "Example" apps: one using inheritance for integration, and the other using delegation.
- ANDROID-79: Add Changelog
- ANDROID-78: Externalize strings
- ANDROID-77: Send UUID with survey response - Android
- ANDROID-76: Check out using a res bundle for apptentive configuration.
- ANDROID-74: Responses to multichoice questions are being sent as an array
- ANDROID-66: When tapping on a multiple choice question, if the keyboard is up, hide it
- ANDROID-65: App config should be cached unless debugging
- ANDROID-63: Add check for min_selections
- ANDROID-61: If an API key isn't specified, return a better error message
- ANDROID-60: Survey answer options that are more than one line don't display well
- ANDROID-56: Send survey time to completion with responses
- ANDROID-55: Disable Ratings Flow when ratings_enabled preference is false
- ANDROID-35: Don't start rating flow when no data connection is present