App Content Personalization
Android
You must implement the SMTWidgetListener in the MainActivity and set the listener inside the onCreate method.
The SmartechEventManager is used to provide widget callbacks to the JavaScript layer.
import android.os.Bundle;
import com.facebook.react.ReactActivity;
import com.netcore.android.Smartech;
import com.netcore.android.contentpz.SMTWidgetListener;
import com.netcore.android.contentpz.model.SMTWidget;
import com.smartechbasereactnative.SmartechEventManager;
import java.lang.ref.WeakReference;
import java.util.HashMap;
public class MainActivity extends ReactActivity implements
SMTWidgetListener {
private SmartechEventManager eventManager =
SmartechEventManager.getInstance();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set the widget listener directly in onCreate
Smartech.getInstance(new
WeakReference<>(this)).setWidgetListener(this, this);
}
@Override
public void onWidgetsLoaded(HashMap<String, SMTWidget> data) {
// Emit widget data to React Native via SmartechEventManager
eventManager.emitEvent("SmartechWidgetDataReceived", data);
}
@Override
protected void onDestroy() {
super.onDestroy();
// Remove the listener to avoid memory leaks
Smartech.getInstance(new
WeakReference<>(this)).removeWidgetListener(this);
}
}
import com.netcore.android.Smartech
import com.netcore.android.contentpz.SMTWidgetListener
import com.netcore.android.contentpz.model.SMTWidget
import com.smartechbasereactnative.SmartechEventManager
import java.lang.ref.WeakReference
class MainActivity : ReactActivity(), SMTWidgetListener {
private val eventManager = SmartechEventManager.getInstance()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Smartech.getInstance(WeakReference(this)).setWidgetListener(this,
this)
}
override fun onWidgetsLoaded(data: HashMap<String, SMTWidget?>) {
eventManager.emitEvent("SmartechWidgetDataReceived", data);
}
override fun onDestroy() {
super.onDestroy()
// Remove the listener to avoid memory leaks
Smartech.getInstance(WeakReference(this)).removeWidgetListener(this)
}
}
Javascript
Add the below listener to receive the callback in JSlayer.
SmartechBaseReact.addListener(SmartechBaseReact.SmartechWidgetDataReceived,
(widgetData: any) => {
// Extract widgets from the received data
});
1. Get Widget By Name
Use this method to fetch a single widget by its name. The result will be returned via the SmartechWidgetDataReceived listener.
SmartechBaseReact.getWidgetByName('widget1');
2. Get Widgets By Multiple Names
Use this to fetch multiple widgets by passing an array of widget names. The widgets will be returned to the listener.
let widgets: string[] = ['widget1', 'widget2', 'widget3'];
SmartechBaseReact.getWidgetByNames(widgets);
3. Get All Widgets
Use this to retrieve all widgets eligible for display. The SDK will return the data via the onWidgetsLoaded() callback.
SmartechBaseReact.getAllWidgets();
4. Get All Widget Names
This method lists all widget names available for the current user. This is useful for debugging or dynamic rendering scenarios.
SmartechBaseReact.getAllWidgetNames((err: any, res: any) => {
});
Track Widget Events
The SDK automatically tracks delivery events when widgets are rendered. However, you need to explicitly log viewed and clicked events to ensure proper analytics.
Track View Event
This event is called when the widget becomes visible to the user
SmartechBaseReact.trackWidgetAsViewed(objWidget);
Track Click Event
This event is called when the user interacts or clicks the widget:
SmartechBaseReact.trackWidgetAsClicked(objWidget);
Updated 1 day ago