in aws-analytics-pinpoint/src/main/java/com/amplifyframework/analytics/pinpoint/AWSPinpointAnalyticsPlugin.java [333:414]
public void configure(
JSONObject pluginConfiguration,
@NonNull Context context
) throws AnalyticsException {
if (pluginConfiguration == null) {
throw new AnalyticsException(
"Missing configuration for " + getPluginKey(),
"Check amplifyconfiguration.json to make sure that there is a section for " +
getPluginKey() + " under the analytics category."
);
}
AWSPinpointAnalyticsPluginConfiguration.Builder configurationBuilder =
AWSPinpointAnalyticsPluginConfiguration.builder();
AWSCredentialsProvider credentialsProvider;
if (credentialsProviderOverride != null) {
credentialsProvider = credentialsProviderOverride;
} else {
try {
credentialsProvider =
(AWSMobileClient) Amplify.Auth.getPlugin(AUTH_DEPENDENCY_PLUGIN_KEY).getEscapeHatch();
} catch (IllegalStateException exception) {
throw new AnalyticsException(
"AWSPinpointAnalyticsPlugin depends on AWSCognitoAuthPlugin but it is currently missing",
exception,
"Before configuring Amplify, be sure to add AWSCognitoAuthPlugin same as you added " +
"AWSPinpointAnalyticsPlugin."
);
}
}
// Read all the data from the configuration object to be used for record event
try {
configurationBuilder
.withAppId(pluginConfiguration.getJSONObject("pinpointAnalytics")
.getString(PinpointConfigurationKey.APP_ID.getConfigurationKey()));
configurationBuilder
.withRegion(pluginConfiguration.getJSONObject("pinpointAnalytics")
.getString(PinpointConfigurationKey.REGION.getConfigurationKey()));
if (pluginConfiguration.has(PinpointConfigurationKey.AUTO_FLUSH_INTERVAL.getConfigurationKey())) {
configurationBuilder
.withAutoFlushEventsInterval(pluginConfiguration
.getLong(PinpointConfigurationKey.AUTO_FLUSH_INTERVAL.getConfigurationKey()));
}
if (pluginConfiguration.has(PinpointConfigurationKey.TRACK_APP_LIFECYCLE_EVENTS
.getConfigurationKey())) {
configurationBuilder
.withTrackAppLifecycleEvents(pluginConfiguration
.getBoolean(PinpointConfigurationKey.TRACK_APP_LIFECYCLE_EVENTS
.getConfigurationKey()));
}
} catch (JSONException exception) {
throw new AnalyticsException(
"Unable to read appId or region from the amplify configuration json.",
exception,
"Make sure amplifyconfiguration.json is a valid json object in expected format. " +
"Please take a look at the documentation for expected format of amplifyconfiguration.json."
);
}
AWSPinpointAnalyticsPluginConfiguration pinpointAnalyticsPluginConfiguration = configurationBuilder.build();
PinpointManager pinpointManager = PinpointManagerFactory.create(
context,
pinpointAnalyticsPluginConfiguration,
credentialsProvider
);
this.analyticsClient = pinpointManager.getAnalyticsClient();
this.targetingClient = pinpointManager.getTargetingClient();
// Initiate the logic to automatically submit events periodically
autoEventSubmitter = new AutoEventSubmitter(analyticsClient,
pinpointAnalyticsPluginConfiguration.getAutoFlushEventsInterval());
autoEventSubmitter.start();
// Instantiate the logic to automatically track app session
autoSessionTracker = new AutoSessionTracker(this.analyticsClient, pinpointManager.getSessionClient());
autoSessionTracker.startSessionTracking(application);
}