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.
- Kotlin
- Java
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)
}
@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);
}
See Theme.LoopMediaGroup
for the list of all attributes that can be overridden.
Notifications & Direct Links
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
- Kotlin
- Java
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.
- Kotlin
- Java
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.
- Kotlin
- Java
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.
- Kotlin
- Java
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>
The Powered by GetintheLoop
badge MUST be enabled if you are showing offers provided by GetintheLoop.