Today we are going to demonstrate how to create a simple event handler to track subscriber statistics on your various messaging channels. This gives you the ability to easily track the number of subscribers for each of your channels to help you manage channel load and gauge user interest in specific topics. Used in combination with API usage tracking, you will have a great sense of what your users are doing within your app.
To start, we will create a new application and call it Messaging_Statistics.
Next, create a table with the necessary columns (described below). Go to the Data section and create a table with the name Subscribers:
Next, we will add two columns to the table – ChannelName (with the type string) and CountSubscribers (with the type integer, or INT). To do this, go to the Schema tab of our table:
Now that the table is ready, we need to create listeners for events, such as adding a new subscriber to any channel. We will do this on the Event Handlers tab of the Business Logic (Cloud Code) section:
Once we’ve created the handler, download the Java code:
For more detail about how to run this code, we recommend reading the documentation: Developing Backendless Server Code with Java.
Add the following code:
@Override public void afterSubscribe( RunnerContext context, String channel, SubscriptionOptions options, ExecutionResult<String> result ) throws Exception { Backendless.Data.of( "Subscribers" ).find(); Optional<Map> channelEntity = Backendless.Persistence.of( "Subscribers" ).find().stream() .filter( map -> map.get( "ChannelName" ).equals( channel ) ).findFirst(); if( channelEntity.isPresent() ) { int count = (int) channelEntity.get().get( "CountSubscribers" ) + 1; channelEntity.get().put( "ChannelName", channel ); channelEntity.get().put( "CountSubscribers", count ); Backendless.Persistence.of( "Subscribers" ).save( channelEntity.get() ); } else { Backendless.Data.of( "Subscribers" ).save( new HashMap<String, Object>() {{ put( "ChannelName", channel ); put( "CountSubscribers", 1 ); }} ); } }
Let’s see if everything works the way we expect it to. To test, let’s subscribe to the channel by following the instructions. Next, let’s make some requests and see what happens.
Everything works! Thanks for reading and enjoy using the Backendless platform!