Releases: bazaarvoice/bv-android-sdk
BVSDK 6.14.2 (Bug Fix)
Bug Fix
Add proper logic to test functionality for 6.14.1 changes. Please see commit for details.
BVSDK 6.14.0 (Ads, PIN removed)
Removed PIN, PIN Notifications, and Advertising
- Removed PIN module
- Removed PIN Notifications module
- Removed Advertising module
- Removed PIN API key from
BVConfig.Builder
andBVSDK.Builder
.
This are all technically breaking changes, but no one is using them, nor do they do function, so it should
not affect anyone.
BVSDK 6.13.0 (Conversations Authentication Interfaces)
Conversations
New Authentication Interfaces
Added a new AuthenticationProvider
interface that should be implemented, and provided to each submission
request. e.g.
val submitReq = ReviewSubmissionReq.Builder(Action.Submit, "testProd")
.authenticationProvider(authProvider)
.build()
client.prepareCall(submitReq).loadAsync({
(resp) -> {
// all good, change Action to Submit to actually send
},
(convSubmitException) -> {
val bvErrors = convSubmitException.getErrors()
val bvFieldErrors = convSubmitException.getFieldErrors()
for (fieldError in bvFieldErrors) {
val submissionErrorCode = fieldError.getSubmissionErrorCode()
val relevantFormField = fieldError.getFormField() // gets the form field info
}
}
})
- If you are configured for BV Hosted Authentication then you should use
BVHostedAuthenticationProvider
. - If you are configured for Site Authentication then you should use
SiteAuthenticationProvider
.
For more info on how to use/create these providers, and how to check which one you are configured for,
refer to the Conversations > Content Submission
page in the docs.
BVSDK 6.12.0 (Conversations routing and error parsing)
Conversations
New success/failure routing, and new Action type
Guide
Previously fetching form data and parsing form errors was difficult. Not all paths of Action
routed to the same callback, and most error paths did not have the required data to parse programmatically. All of the previous APIs for doing these things remains in the 6.x SDK for now, but has been marked as deprecated in favor of these new APIs.
Get Form Data
val submitReq = ReviewSubmissionReq.Builder(Action.Form, "testProd") // NEW ACTION TYPE
.build()
client.prepareCall(submitReq).loadAsync({
(resp) -> {
val hasErrors = resp.getHasErrors() // not required to check anymore, always false in success
val formFields = resp.getFormFields() // null-safe list of available form options
for (formField in formFields) {
val isRequired = formField.isRequired() // indicates you must send this field
}
},
(convSubmitException) -> {
val bvErrors = convSubmitException.getErrors() // null-safe list of generic errors
val bvFormErrors = convSubmitException.getFieldErrors() // null-safe list of form errors
}
})
Test Submission
val submitReq = ReviewSubmissionReq.Builder(Action.Preview, "testProd")
.build()
client.prepareCall(submitReq).loadAsync({
(resp) -> {
// all good, change Action to Submit to actually send
},
(convSubmitException) -> {
val bvErrors = convSubmitException.getErrors()
val bvFieldErrors = convSubmitException.getFieldErrors()
for (fieldError in bvFieldErrors) {
val submissionErrorCode = fieldError.getSubmissionErrorCode()
val relevantFormField = fieldError.getFormField() // gets the form field info
}
}
})
Submit
Same as Test Submission, except use Action.Submit
and it actually sends.
Details
- Added
Action.Form
for submission to route to success without required form fields.Action.Preview
andAction.Submit
will always route to failure if all required form fields are not provided - Added
ConversationsDisplayCallback
- Added
ConversationsSubmissionCallback
- Added
ConversationsException
which has#getErrors()
- Added
ConversationsSubmissionException
which has#getFieldErrors()
- Added
LoadCallDisplay#loadDisplaySync()
- Deprecated
LoadCallDisplay#loadSync()
in favor ofLoadCallDisplay#loadDisplaySync()
- Added
LoadCallDisplay#loadAsync(conversationsDisplayCallback)
- Deprecated
LoadCallDisplay#loadAsync(conversationsCallback)
in favor ofLoadCallDisplay#loadAsync(conversationsDisplayCallback)
- Added
LoadCallSubmission#loadSubmissionSync()
- Deprecated
LoadCallSubmission#loadSync()
in favor ofLoadCallSubmission#loadSubmissionSync()
- Added
LoadCallSubmission#loadAsync(conversationsSubmissionCallback)
- Deprecated
LoadCallSubmission#loadAsync(conversationsCallback)
in favor ofLoadCallSubmission#loadAsync(conversationsSubmissionCallback)
Other Stuff
- Update
BazaarRuntimeException
to not cause StackOverflowException - Update JSON parse failure message
- Update
BVErrors
exist message - Added
BVConversationsClientTest
to test all routes - Updated Robolectric version for testing
- Added testing shadow for network security
BVSDK 6.11.0 (Conversations error code parsing)
Conversations
- Added
ErrorCode
enum to parse the code strings from theErrors
JSON field - Added
Error#getErrorCode()
method for getting the enum - Added unit tests for invalid error code parsing, valid error code parsing, and generic error list parsing
- Added
SubmissionErrorCode
enum to parse the code strings from theFieldErrors
JSON field for submission - Added
FieldError#getErrorCode()
method for getting the enum - Added unit tests for invalid field error code parsing, valid field error code parsing, and generic field error
list parsing
BVSDK 6.10.0 (Conversations badges and custom params)
Conversations
- Add
Author#getSecondaryRatingList()
- Add
BaseReview#getSecondaryRatingList()
- Add
IncludeContentBase#getBadgeList()
- Add
IncludeContentBase#getContextDataValueList()
- Fix
BaseReviewBuilder#addContextDataValueString(String dataValueName, boolean value)
to be
namedBaseReviewBuilder#addContextDataValueBoolean(String dataValueName, boolean value)
- Remove empty
ReviewSubmissionRequest#newBuilder()
method - Add
ConversationsSubmissionRequest.Builder#addCustomSubmissionParameter(String key, String value)
- Add internal FormPair class to store user custom form parameters
- Add
ConversationsDisplayRequest.Builder#ConversationsDisplayRequest.Builder#addCustomDisplayParameter(String key, String value)
- Deprecated
ConversationsDisplayRequest.Builder#addAdditionalField(String key, String value)
in favor ofaddCustomDisplayParameter
- Added
FormInputType
enum to introduce a strongly typed version ofString type = FormField#getType()
.
The possible values were taken from the conversations docs on input types. This will allow for easier parsing of which form fields have many options. e.g.
final FormInputType formInputType = formField.getFormInputType();
switch(formInputType) {
case FormInputType.SELECT: {
List<FormFieldOption> options = formField.getFormFieldOptions();
// present options to user
break;
}
}
BVSDK 6.9.1 (Conversations BulkRatingsRequest fix)
Conversations
- Added tests for all of the endpoints to verify they are what we expect them to be
- Updated
BulkRatingsRequest
to send with endpointstatistics.json
like it should and was before, instead ofreviews.json
Demo API App
- Added okhttp3 logging-interceptor
- Updated TextView to have maxLines of 5 so it won't take up the entire screen on the DemoBulkRatingsActivity screen
Common
- Updated okhttp3 to version 3.8.0
BVSDK 6.9.0 (Iovation Authenticity)
Conversations
- Added
BVConversationsClient.Builder#fingerprintProvider(fpProvider)
as an optional builder parameter
NEW Authenticity Iovation
- Added
IovationFingerprint
as a class to pass to thefingerprintProvider(fpProvider)
method
BVSDK 6.8.1 (Conversation display extra params)
Conversations
- Fixed expected behavior of
ConversationsDisplayRequest.Builder#addAdditionalField(key, val)
to support
one-to-many relationships of key-value pairs.
BVSDK 6.8.0 (Conversations Multi Config)
Conversations
- Added multi-config support to the
BVConversationsClient
. To use it, use the newBVConversationsClient.Builder
to construct an instance, and use theBVConversationsClient.Builder#bvConfig(bvConfig)
method to provide a
different config than the default provided by theBVSDK
singleton. More info available on the docs
for Conversations. - Deprecated the default
BVConversationsClient
constructor. - Add multiple value support to review display filtering
BVPixel (Analytics)
- Added an additional API to optionally send an analytics event with a different
clientId
than the default
provided to theBVPixel
singleton instance. More info available on the docs
for BVPixel.