# Gotify Custom Android

<img align="right" src="app.gif" width="250" />

Gotify Custom Android is a customized version of the Gotify Android client that connects to [gotify/server](https://github.com/gotify/server) and shows push notifications on new messages.

## Features

* show push notifications on new messages
* view and delete messages
* filter notifications by priority (custom feature)

## Installation

Build the APK using the instructions below or download from the releases.

This is a custom build with package name `com.github.gotifycustom` to avoid conflicts with the original Gotify app.

### Disable battery optimization

By default Android kills long running apps as they drain the battery. With enabled battery optimization, Gotify Custom will be killed and you wont receive any notifications.

Here is one way to disable battery optimization for Gotify Custom.

* Open "Settings"
* Search for "Battery Optimization"
* Find "Gotify Custom" and disable battery optimization

See also https://dontkillmyapp.com for phone manufacturer specific instructions to disable battery optimizations.

### Minimize the Gotify Custom foreground notification

*Only possible for Android version >= 8*

The foreground notification showing the connection status can be manually minimized to be less intrusive:

* Open Settings -> Apps -> Gotify Custom
* Click Notifications
* Click on `Gotify Custom foreground notification`
* Toggle the "Minimize" option / Select a different "Behavior" or "Importance" (depends on your Android version)
* Restart Gotify Custom

## Message Priorities

| Notification | Gotify Priority|
|- |-|
| - | 0 |
| Icon in notification bar | 1 - 3 |
| Icon in notification bar + Sound | 4 - 7 |
| Icon in notification bar + Sound + Vibration | 8 - 10 |

## Building

Use Java 17 and execute the following command to build the apk.

```bash
$ ./gradlew build
```

The APK will be in `app/build/outputs/apk/` with package name `com.github.gotifycustom`.

## Update client

* Run `./gradlew generateSwaggerCode`
* Delete `client/settings.gradle` (client is a gradle sub project and must not have a settings.gradle)
* Delete `repositories` block from `client/build.gradle`
* Delete `implementation "com.sun.xml.ws:jaxws-rt:x.x.x“` from `client/build.gradle`
* Insert missing bracket in `retryingIntercept` method of class `src/main/java/com/github/gotify/client/auth/OAuth`
* Commit changes

## Versioning
We use [SemVer](http://semver.org/) for versioning.

## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details
 
