Skip to content

Advanced

Theming

A custom theme can be created that can overrides any theme attribute. The theme must either have a parent of Theme.LoopMediaGroup or implement every theme attribute defined in that theme.

When initially configuring the SDK pass your theme id into the Configuration object so that all SDK fragments and activities will use the custom theme instead of the default theme.

@Override
public void onCreate() {
    super.onCreate();
    // Configure LMG SDK

    Configuration configuration = new Configuration.Builder()
                .setTheme(R.style.AppTheme_HiJane)
                .setLoggerLevel(LoggerLevel.Verbose)
                .build();

    LoopMediaGroup.init(integrationKey, this, configuration);
}
override fun onCreate() {
    super.onCreate()
    // Configure LMG SDK

    val configuration = Configuration.Builder()
                .setTheme(R.style.AppTheme_HiJane)
                .setLoggerLevel(LoggerLevel.Verbose)
                .build();

    LoopMediaGroup.init(integrationKey, this, configuration)
}

See Theme.LoopMediaGroup for the list of all attributes that can be overridden.

Offers

Sent notification or direct link must have offer id or offer slug available. Optionally a locationId can be used to focus on a specific location.

Displaying offer details

import com.loopmediagroup.ui.offerdetails.OfferDetailsActivity;
startActivity(OfferDetailsActivity.createIntent(this, "offerId"));
import com.loopmediagroup.ui.offerdetails.OfferDetailsActivity
startActivity(OfferDetailsActivity.createIntent(this, "offerId"))

Displaying offer details with focus on a specific location.

import com.loopmediagroup.ui.offerdetails.OfferDetailsActivity;
import com.loopmediagroup.domain.data.Location;
startActivity(OfferDetailsActivity.createIntent(this, "offerId", location));
import com.loopmediagroup.ui.offerdetails.OfferDetailsActivity
import com.loopmediagroup.domain.data.Location
startActivity(OfferDetailsActivity.createIntent(this, "offerId", location))

Where location is an object instance of Location class

Business or Location

Sent notification or direct link must have business id, business slug, location slug available.

Displaying Business details

Business Details will display all locations and offers for a business based on the current SDK content filters. Use this view when there are potentially many locations with different offers available for the current user settings.

import com.loopmediagroup.ui.businessdetails.BusinessDetailsActivity
startActivity(BusinessDetailsActivity.createIntent(this, "businessId"));
import com.loopmediagroup.ui.businessdetails.BusinessDetailsActivity
startActivity(BusinessDetailsActivity.createIntent(this, "businessId"))

Displaying Location details

Location Details shows the details and offers for a single business location.

import com.loopmediagroup.ui.locationdetails.LocationDetailsActivity
startActivity(LocationDetailsActivity.createIntent(this, "businessId", "locationId"));
import com.loopmediagroup.ui.locationdetails.LocationDetailsActivity
startActivity(LocationDetailsActivity.createIntent(this, "businessId", "locationId"))

Icons

In order to change icons in the SDK, images resources must be provided with the same resource ids as the built-in icon.

Language Localization

In order to add support for additional language translations or override existing english strings, a string resource file must be defined in main\res\values-{language}\strings.xml and all sdk string keys must be defined.

SDK Configuration Options

SDK has some configurations that are optional for the integration:

  • Ability to save offers when user is identified
  • Ability to share offers and businesses
  • Ability to show Powered by GetintheLoop badge on redemption details
  • Ability to show visual effects like confetti
  • Ability to show feedback and support links on businesses and offers details.
  • Ability to set the email adress for feedback and support
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Default to false -->
    <bool name="lmg_showBookmarkAction">true/false</bool>
    <bool name="lmg_showShareAction">true/false</bool>

    <!-- Default to true -->
    <bool name="lmg_showPoweredByGetintheLoopBadge">true/false</bool>
    <bool name="lmg_visualEffectsEnabled">true/false</bool>
    <bool name="lmg_supportLinksEnabled">true/false</bool>

    <!-- Default to support@loopmediagroup.com -->
    <string name="lmg_supportEmailAddress">support@email.com</string>
</resources>

Powered by GetintheLoop badge should be enabled if you are showing offers provided by GetintheLoop