https://github.com/ably/push-example-android
A minimal example/test application demonstrating use of Android push functionality
https://github.com/ably/push-example-android
Last synced: about 1 year ago
JSON representation
A minimal example/test application demonstrating use of Android push functionality
- Host: GitHub
- URL: https://github.com/ably/push-example-android
- Owner: ably
- Created: 2018-12-08T00:35:34.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2022-04-19T14:46:29.000Z (about 4 years ago)
- Last Synced: 2025-02-09T03:06:35.355Z (over 1 year ago)
- Language: Kotlin
- Size: 180 KB
- Stars: 1
- Watchers: 27
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Ably Android push example
This is a simple interactive app that exercises the use of the Ably push client API in an Android app.
### Dependencies
This uses the ably-java library, and is configured to use a pre-release of the 1.1 library including push support.
This will be updated to a stable 1.1 release once one is available.
### Interactive actions
Several operations can be triggered interactively via the menu. The operations are:
- **Activate push**: this triggers activation of the push system, so the device can be the target of push notifications.
- **Subscribe to channel**: this subscribes to a realtime channel. The channel name is randomly generated on startup.
Messages received on the channel are logged to the activity and logcat.
- **Publish to channel**: this publishes a single message to the realtime channel.
- **Subscribe to push channel**: this subscribes the device to a channel for push messages.
Push messages received on the channel are logged to the activity and logcat.
- **Unsubscribe to push channel**: this unsubscribes from the push channel.
- **Publish data to push channel**: this publishes a message to the realtime channel containing data in `message.extras.push.data`.
- **Publish notification to push channel**: this publishes a message to the realtime channel containing data in `message.extras.push.notification`.
- **Publish notification to push channel from background**: this publishes a message to the realtime channel containing data in `message.extras.push.notification`
after exiting the activity. The resulting message is expected to be delivered as a UI notification.
- **Publish data to push device**: this publishes a message direct to the device as a push target containing data in `payload.data`.
- **Publish notification to push device**: this publishes a message direct to the device as a push target containing data in `payload.notification`.
- **Publish notification to push device from background**: this publishes a message direct to the device as a push target containing data in `payload.notification`
after exiting the activity. The resulting message is expected to be delivered as a UI notification.
- **Get local device state**: this reads the current persisted `LocalDevice` state
- **Reset local device state**: this resets the persisted `LocalDevice` state
- **Get activation state**: this reads the current persisted activation state machine state
- **Reset activation state**: this resets the persisted activation state machine state
### End-to-end tests
There is a menu action to run end-to-end push tests which performs the following, in sequence:
- `pushDirectDataTest()`: publish data directly to the device, and verify receipt;
- `pushDirectNotificationTest()`: publish a notification directly to the device, and verify receipt;
- `pushPublishDataTest()`: publish data to the channel, and verify receipt as a push message;
- `pushPublishNotificaionTest()`: publish a notification to the channel, and verify receipt as a push notification;
Output is to the activity and logcat.
### Using this app yourself
You can clone and modify this app and use it to build your own push-enabled app, but in order for that to work you will need to:
- change the package id;
- re-namespace the code to reflect the package namespace;
- obtain a Firebase account, and register your app's package id with Firebase;
- download `google-services.json` and add that to the app directory
- obtain an Ably API key and configure; see the `BuildConfig` fields in `app/build.gradle`
- configure the app's Firebase server key as the `fcmKey` in the Ably app