I am using AWS
resources for my android project, I am planning to add push notification service for my project with AWS SNS
.there are few questions bothering me much. I did not find any questions regarding these, except one or two but with unclear explanations.
1.Does AWS
support FCM
? SNS
work with GCM
. But Google recommends to use FCM instead of GCM
. I did not find AWS
supporting FCM
.
2.Do AWS
store messages (or data) into their databases even after sending push notifications?
3.I tried putting FCM api key in SNS application platform, it is showing invalid parameters why?
FCM is backwards compatible with GCM. The steps for setting up FCM on AWS are identical to the GCM set up procedure and (at least for the moment) FCM works transparently with GCM and SNS with respect to server-side configuration.
However, if you are sending data
payloads to the Android device they will not be processed unless you implement a client side service that extends FirebaseMessagingService
. The default JSON message generator in the AWS console sends data
messages, which will be ignored by your app unless the aforementioned service is implemented. To get around this for initial testing you can provide a custom notification
payload which will be received by your device (as long as your app is not in the foreground)
There are GCM-FCM migration instructions provided by Google however the changes you need to make are predominantly on the App side.
The steps you need to follow to test GCM/FCM on your app with SNS are:
FirebaseInstanceIDService
and override the onTokenRefresh
method to see this within your Android App. Once you have done this, uninstall and reinstall your app and your token should be printed to the Debug console in Android Studio on first boot.The message that is generated by SNS will be of the form:
{
"GCM": "{ \"data\": { \"message\": \"test message\" } }"
}
As we mentioned earlier, data
payloads will be ignored if no service to receive them has been implemented. We would like to test without writing too much code, so instead we should send a notification
payload. To do this, simply change the JSON message to read:
{
"GCM": "{ \"notification\": { \"text\": \"test message\" } }"
}
Once you have done this, make sure your app is not running on the device, and hit the Publish Message button. You should now see a notification pop up on your device.
You can of course do all this programmatically through the Amazon SNS API, however all the examples seem to use the data
payload so you need to keep that in mind and generate a payload appropriate to your use case.