Notix InApp SDK
NOTIX is an audience re-engagement service based on push notifications that work for both desktop and mobile devices.
Contents
Setup
Start with SDK setup if you haven’t done it already.
Common settings
Handle callbacks
Implement
NotixCallbackHandler
interfaceKotlin:
class CallbackHandler : NotixCallbackHandler { override fun handle(context: Context, callback: NotixCallback) { when (callback) { is NotixCallback.Impression -> Log.i(APP_TAG, callback.toString()) is NotixCallback.Subscription -> Log.i(APP_TAG, callback.toString()) else -> Unit } } }
Java:
class CallbackHandler implements NotixCallbackHandler { @Override public void handle(@NonNull Context context, @NonNull NotixCallback callback) { /* ... */ } }
And register it by calling
Kotlin:
Notix.setCallbackHandler(CallbackHandler())
Java:
Notix.Companion.setCallbackHandler(new CallbackHandler());
Managing logs
You can manage logging done by SDK.
Kotlin:
Notix.setLogLevel(FULL) // can be FULL/IMPORTANT/NONE
Java:
Notix.Companion.setLogLevel(LogLevel.FULL); // can be FULL/IMPORTANT/NONE
Log level is set to IMPORTANT
by default.
Push notifications
For setup instructions see Push notifications setup
Audiences
You can manage user audiences
Kotlin:
NotixPush.addAudience("custom-audience")
NotixPush.deleteAudience("custom-audience")
Java:
NotixPush.Companion.addAudience("custom-audience");
NotixPush.Companion.deleteAudience("custom-audience");
Modify incoming push messages
You can modify the content of incoming push messages.
Implement
NotixNotificationModifier
interfaceKotlin:
class NotificationModifier : NotixNotificationModifier { override fun modify(context: Context, notificationOverrides: NotificationOverrides) = notificationOverrides }
Java:
class NotificationModifier implements NotixNotificationModifier { @Nullable @Override public NotificationOverrides modify(@NonNull Context context, @NonNull NotificationOverrides notificationOverrides) { return notificationOverrides; } }
And register it by calling:
Kotlin:
NotixPush.setNotificationModifier(NotificationModifier())
Java:
NotixPush.Companion.setNotificationModifier(new NotificationModifier());
Handle Target Events
Implement
NotixTargetEventHandler
interfaceKotlin:
class TargetEventHandler : NotixTargetEventHandler { override fun handle(context: Context, eventName: String?) { val activityClass = when (eventName) { "first" -> FirstActivity::class.java "second" -> SecondActivity::class.java else -> OtherActivity::class.java } context.startActivity(Intent(context, activityClass)) } }
Java:
class TargetEventHandler implements NotixTargetEventHandler { @Override public void handle(@NonNull Context context, @Nullable String eventName) { Log.i("TAG", eventName); } }
And register it by calling:
Kotlin:
NotixPush.setTargetEventHandler(TargetEventHandler())
Java:
NotixPush.Companion.setTargetEventHandler(new TargetEventHandler());
Interstitial
For setup instructions see Interstitial setup
InterstitialLoader
InterstitialLoader
s were introduced to make it easier for a developer to deal with threading, loading, caching, and error handling when loading interstitial ads.
You can get an Interstitial
from InterstitialLoader
using one of 3 methods:
* hasNext
/getNext
is the simplest method. These functions work only with cached items and are fast.
* awaitNext
is a suspend function, which accepts timeout
. If the loader has at least one entry in the queue, it will immediately return it. Otherwise it will continue trying to fetch an ad for another timeout
ms, and will return an Error
if that timeout
is exceeded (which is very unlikely).
* doOnNextAvailable
is the callback-way, which is Java-friendly. It works in the same way as awaitNext
.
AppOpen
For setup instructions see AppOpen setup
Ignore some application opens
The SDK monitors the lifecycle of all application activities to identify closures and reopens. However, it cannot inherently identify when the application launches external activities. For instance, opening a file picker effectively stops all application activities. Consequently, displaying an AppOpen ad upon returning from the file picker would not be advisable. To address this issue, the following method was introduced:
NotixAppOpen.ignoreNextApplicationOpen()`.
You should call this method whenever you wish to prevent an ad from being shown upon next app reopen.
Show AppOpen ads manually
At the show site get AppOpen
instance from the loader and pass it to NotixAppOpen.show
:
Kotlin:
App.appOpenLoader.doOnNextAvailable { result ->
result?.let { NotixAppOpen.show(it) }
}
Java:
App.appOpenLoader.doOnNextAvailable(result -> {
if (result != null) {
NotixAppOpen.Companion.show(result);
}
return Unit.INSTANCE;
});
doOnApplicationOpen
For enhanced flexibility in displaying AppOpen ads, including options like delays, error handling, and custom conditions, you can leverage the NotixAppOpen.doOnApplicationOpen()
helper method along with its available overloads. It is particularly useful when combined with the manual display of AppOpen ads, as detailed in the preceding section on manually displaying AppOpen ads