Releases: sailthru/sailthru-mobile-android-sdk
v2.12.0
Auto-Analytics
The Carnival.logEvent()
call now takes a source parameter for when forwarding events from other analytics frameworks to Carnival. This allows you to target based on events you already track.
Carnival.logEvent("source", "myEvent");
A selection of pre-written integrations has been provided, allowing you to just include one file, replace your event logging calls and then turn on or off the frameworks you want to use by commenting them out in the source file provided.
v2.11.0
Array Attributes
Adds the ability to set an array of data types. You can now set arrays of Strings, Dates, Integers, and Floats.
ArrayList<String> list = new ArrayList<>();
list.add("ElementOne");
list.add("ElementTwo");
Carnival.setAttribute("arrayAtt", list);
v2.10.2
v2.10.1
v2.10.0
Enable/Disable In-App Notifications
In-App notifications can be delayed or controlled by calling Carnival.setInAppNotificationsEnabled(boolean enable)
. This can be used to delay in-app notifications appearing while going through on-boarding procedures or other times when you wouldn't want in-app notifications appearing
v2.9.0
Stream Features
Message Impressions
We now support three types of message impressions, which you can register with a simple method call. To find out how, read our docs article on Advanced Customization.
Note: You don't have to implement these impressions if you are not using a custom stream.
Mark Messages as Read
When building your custom stream, you can now mark your messages as read at a time that makes sense in your app. Read more here.
Delete Messages
Users can now delete messages. You can also programmatically delete messages in your own stream implementations. Read more here.
Parcelable Messages
Carnival Messages now implement the Parcelable interface, allowing them to be serialized in Android Intent bundles.
outState.putParcelableArrayList(BUNDLE_MESSAGES, mAdapter.getMessages());
...
ArrayList<Message> messages = savedInstanceState.getParcelableArrayList(BUNDLE_MESSAGES);
mAdapter = new MyAdapter(messages);
User ID
To interact with other systems and track users across apps, you can now set a user ID. This deprecates the unique identifier methods. Read more here.
v2.8.0
Exposed Messages
Exposed Message model - now you can use raw message data to create your own streams. You can request these asynchronously using Carnival.getMessages()
Carnival.getMessages(new Carnival.MessagesHandler() {
@Override
public void onSuccess(ArrayList<Message> messages) {
}
@Override
public void onFailure(Error error) {
}
});
Message Detail
To display a Message's detail view, a MessageActivity
can be launched, passing in the Message's ID.
Intent i = new Intent(this, MessageActivity.class);
i.putExtra(Carnival.EXTRA_MESSAGE_ID, message.getMessageID());
startActivity(i);
In-App Notification Control
When In-App Notifications are received you can now optionally stop them being shown using Carnival.setOnInAppNotificationDisplayListener()
, replacing it with your own display.
Carnival.setOnInAppNotificationDisplayListener(new Carnival.OnInAppNotificationDisplayListener() {
@Override
public boolean shouldPresentInAppNotification(Message message) {
return true;
}
});
v2.7.0
Custom Events
Custom events have been added to the Carnival SDK, allowing arbitrary events to be tracked on the Carnival Dashboard.
Notification Formatting
The default notification now uses the text expanded layout to handle large amounts of text without truncating.
v2.6.0
General Fixes
- Fixed in-app notification formatting errors
- Namespaced all library resources to avoid potential asset conflicts
- Fixed custom attribute updates triggering device registrations
- Message deep linking fixes and improvements
Message Detail
New Message Detail behaviour:
- Opening an in-app message or push message now works independently of the Message Stream, making the display for the stream optional.
- The URL of Link Messages can now be shared anywhere.
- Links Messages now open within the detail view, only leaving the app when you leave that link's domain.
- Webview state is maintained upon rotation, retaining the user's position within the content.
v2.5.0
Manifest Permission Changes
Due to a new security feature of Android 5.0 regarding the declaration of permissions, there has been a change to the declarations required in the application's manifest when integrating the Carnival SDK. When updating to v2.5.0 these will need to be added as follows, replacing {applicationPackage}
with your application's package name:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="{applicationPackage}"> <uses-permission android:name="{applicationPackage}.permission.C2D_MESSAGE" /> <permission android:name="{applicationPackage}.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <application> <receiver android:name="com.carnival.sdk.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="{applicationPackage}" /> </intent-filter> </receiver> </application> </manifest>
Carnival Docs: Integrating the Carnival SDK - Manifest Permissions