Open lolucosmin opened 1 week ago
Hi @lolucosmin, could you post your code where you configure Amplify? This exception indicates that the Analytics Plugin isn't being added, you should have something like:
Amplify.addPlugin(AWSCognitoAuthPlugin())
Amplify.addPlugin(AWSS3StoragePlugin())
Amplify.addPlugin(AWSPinpointAnalyticsPlugin()) // ensure this is here
Amplify.configure(...)
Hi @lolucosmin, could you post your code where you configure Amplify? This exception indicates that the Analytics Plugin isn't being added, you should have something like:
Amplify.addPlugin(AWSCognitoAuthPlugin()) Amplify.addPlugin(AWSS3StoragePlugin()) Amplify.addPlugin(AWSPinpointAnalyticsPlugin()) // ensure this is here Amplify.configure(...)
Sure @mattcreaser :
//init Amplify AWSApiPlugin apiPlugin = AWSApiPlugin.builder().build(); apiPlugin.configure(AmplifyConfig.Companion.getInstance().getApiConfiguration(), AppApplication.Companion.getInstance());
RxAmplify.addPlugin(apiPlugin);
RxAmplify.addPlugin(new AWSCognitoAuthPlugin());
RxAmplify.addPlugin(new AWSS3StoragePlugin());
RxAmplify.addPlugin(new AWSPinpointAnalyticsPlugin());
AmplifyConfiguration configuration = AmplifyConfiguration.builder(AmplifyConfig.Companion.getInstance().getAWSConfiguration())
.devMenuEnabled(BuildConfig.DEBUG)
.build();
RxAmplify.configure(configuration, AppApplication.Companion.getInstance());
if (BuildConfig.DEBUG) {
RxAmplify.Logging.enable();
}
Also I have hub:
Disposable analitycsHubDisposable = RxAmplify.Hub.on(HubChannel.ANALYTICS) .map(HubEvent::getName) .subscribe(name -> { if (name.equals(InitializationStatus.SUCCEEDED.name())) { isAnalyticsInitialized = true; LogUtils.i("RxAmplify.ANALYTICS Initialization: " + InitializationStatus.SUCCEEDED.name());
} else if (name.equals(InitializationStatus.FAILED.name())) {
isAnalyticsInitialized = false;
LogUtils.i("RxAmplify.ANALYTICS Initialization: " + InitializationStatus.FAILED.name());
}
});
this.compositeDisposable.add(authHubDisposable);
this.compositeDisposable.add(storageHubDisposable);
this.compositeDisposable.add(analitycsHubDisposable);
And in hub I get the success event. Weird is why is working with Amplify.Analytics.recordEvent(event)
Thanks for the additional info @lolucosmin, it seems you have uncovered a surprising bug. This line is a clear bug that means Analytics will never work when using RxAmplify
.
I will submit a fix for this issue and we will try to get it released as quickly as we can.
Note: you should also be able to work around this crash by calling RxAmplify.addPlugin(...)
instead of Amplify.addPlugin(...)
. It appears that is the intended way to register plugins when using Rx
, but it still should not crash and the current implementation prevents mixing usage for the Analytics
category, but not for other categories.
RxAmplify.addPlugin(...)
I use this if you check my code so still is crashing.
Ah my mistake, you're right. It doesn't matter which you use. This will be fixed soon.
The fix for this issue has been merged and will be included in our next release.
Before opening, please confirm:
Language and Async Model
RxJava
Amplify Categories
Analytics
Gradle script dependencies
Environment information
Please include any relevant guides or documentation you're referencing
Amplify V2
Describe the bug
Hi, I am migrating the project to Amplify 2. I followed the steps in the documentation to initialize then to add plugins and everything was fine.
I created hubs for each plugin and for all of them I have InitializationStatus.SUCCEEDED. I use RxAmplify in my code and was fine until I tried to record a event with RxAmplify.Analytics.recordEvent(event). When I run that command i get this error:
java.lang.IllegalStateException: Tried to get a plugin but that plugin was not present. Check if the plugin was added originally or perhaps was already removed. at com.amplifyframework.core.category.Category.getPluginIfConfiguredOrThrow(Category.java:257) at com.amplifyframework.core.category.Category.getSelectedPlugin(Category.java:252) at com.amplifyframework.analytics.AnalyticsCategory.enable(AnalyticsCategory.java:72) at com.bfan.sso.logic.services.analitycs.AnalyticsTracker.createEvent(AnalyticsTracker.java:33) at com.bfan.sso.gui.base.fragment.BaseFragment.lambda$onViewCreated$0(BaseFragment.java:88)
As you can see from a base fragment I track the content name. After a while I decide to use Amplify.Analytics.recordEvent(event) and is works fine.
Issue: RxAmplify.Analytics.recordEvent(event) has a problem. Mention: I use everywhere in the app RxAmplify
Reproduction steps (if applicable)
No response
Code Snippet
Log output
amplifyconfiguration.json
No response
GraphQL Schema
Additional information and screenshots
No response