Skip to content

Releases: sailthru/sailthru-mobile-android-sdk

v2.12.0

12 Oct 00:11
Compare
Choose a tag to compare

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

22 Sep 22:36
Compare
Choose a tag to compare

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

17 Sep 05:57
Compare
Choose a tag to compare

Bugfixes

v2.10.1

04 Sep 00:04
Compare
Choose a tag to compare

Bugfix

Fixed an issue with BuildConfig.class getting added to the Library when it shouldn't.

v2.10.0

31 Aug 03:47
Compare
Choose a tag to compare

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

27 Jul 02:04
Compare
Choose a tag to compare

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

06 Jul 02:17
Compare
Choose a tag to compare

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

04 Jun 23:24
Compare
Choose a tag to compare

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

21 May 03:05
Compare
Choose a tag to compare

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

05 May 04:17
Compare
Choose a tag to compare

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