Using Huawei App Messaging in Android
Tags: android, java, huawei, appgallery
Published: 2022-02-10 15:01:46

Huawei AppGallery Connect's App Messaging service allows you to send targeted, useful in app messages to your users. 
The look and content of messages are completely customisable, and there is a wide range of triggers and filters that can be used to decide who will receive a message and when.
Lets take a look today at how we can set this up to work within an Android project.

As always we will start with a fresh project but of course you can just as easily use this guide to build the service into an app you already have!

## Enabling the Service

Sign in to AppGallery Connect, click **My projects**, click your project, go to **Grow > App Messaging**, and click Use now. For more information, please refer to [App Messaging](https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/agc-appmessage-getstarted-android-0000001072532718).
If you do not have an Android project, create one first.
After completing these steps, you can start creating an in-app message.

Click **New** in the upper right corner.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2b3jpegx24drmi3yqp2s.png)

Set **Name** and **Description** 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/liz3d1i7rlfs5owrqpjq.png)

Set the style and content and click **Next**.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ds0pf7wcbh29hd47cehe.png)
 
Select a message type from the Layout drop-down list, and set its style and content. Currently, the Modal, Image, and Banner message types are supported.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hci52rf3ajioxo7r5iq6.png)
 
Set target users and click Next.

In App, select the name of the app package for which you need to publish the in-app message.

You can click New condition to add a condition for matching target users, which include app version, OS version, language, country/region, audience, and more. Among the types, User attributes are defined under HUAWEI Analytics > Management > User attributes, and Prediction is defined by creating prediction tasks under My projects > Grow > Prediction.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n6652um0hiv7ezkb03wc.png)
 
Set the message sending time
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ewwyinui587x0ufryhlj.png)
Message display is triggered by specific events. App Messaging supports two types of [trigger events](https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/agc-appmessage-create-android-0000001072054882): preset events and HUAWEI Analytics events. 
(Optional) Set conversion events. Before setting a conversion event, you need to toggle it on first, which can be done as follows:
Go to HUAWEI Analytics > Management > Events and toggle Mark as conversion event and Event switch on for the specified event. In addition to the events the SDK collects, you can also create a preset or custom event for event tracking and analysis.

Finally, Click Save or Publish.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9shx8mh58b1n0huswazc.png)
 
## Integrating the Service SDK

Add Maven repository configuration to the build.gradle file of your project.

{% gist https://gist.github.com/devwithzachary/2294b4f01a7fb798275e51299941c4b4 %}

Open the app-level build.gradle file and configure the App Messaging SDK

{% gist https://gist.github.com/devwithzachary/a21be6ba190cdfc9c7aff0768c5ec02e %}

In AppGallery Connect, click My projects, and find your project from the list. Go to Project settings > General information, download the agconnect-services.json file, and save the file to the app directory of your Android project.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k5j7otjhnz72cynmunl7.png)

## Displaying an In-App Message 

If you choose to display a message using the default message layout, the development process is totally coding-free. 
By integrating the SDK as above you are all good to go, your creating message will be displayed as per its filters and triggers.
You can also call APIs provided by the service SDK to customize your in-app message.

### Customising the Message Layout

First, you need to customize a message display class. To do so, implement AGConnectAppMessagingDisplay and override the displayMessage method.

{% gist https://gist.github.com/devwithzachary/ce9c2d1a8b97b2c5371c88c163ec8843 %}

Define an AlertDialog in displayMessage and copy the layout file to the code. The sample code is as follows:

{% gist https://gist.github.com/devwithzachary/fb0820aa9efcc66f8a8d251b4618a136 %}

Call addCustomView to implement the custom layout.

{% gist https://gist.github.com/devwithzachary/9456a59802e06adea49793e50d0f8b50 %}

## Test in app message

Obtain the Anonymous Application Identifier (AAID) of your test device, which is used to identify app instances running on mobile devices during app installation. Compared with device-level hardware IDs that cannot be reset, the privacy of AAID is much higher. We can obtain the AAID through coding.

{% gist https://gist.github.com/devwithzachary/1eb670240b8fdb18e22a7caecaa96a86 %}

Sign in to AppGallery Connect, go to Grow > App Messaging > Messages, find the message that you need to test, and click Test in the Operation column.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/325qlmn942e432sww401.png)
 
Click Add test user and enter the AAID in the test box.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mvz9quochnmc029q3sin.png)

Click Save. Check whether the test message can be properly displayed and operated. 

For details, please refer to the development guide of [App Messaging](https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/agc-appmessage-getstarted-android-0000001072532718).