The MQTT Android Service is an MQTT client library written in Kotlin. It has been created to provide reliable open-source implementations of open and standard messaging protocols aimed at new, existing, and emerging applications for Machine-to-Machine (M2M) and Internet of Things (IoT). MQTT reflects the inherent physical and cost constraints of device connectivity. Its objectives include effective levels of decoupling between devices and applications, designed to keep markets open and encourage the rapid growth of scalable Web and Enterprise middleware and applications.
MQTT 3.1 | ✔️ | Automatic Reconnect | ✔️ | |
MQTT 3.1.1 | ✔️ | Offline Buffering | ✔️ | |
LWT | ✔️ | WebSocket Support | ✔️ | |
SSL / TLS | ✔️ | Standard TCP Support | ✔️ | |
Message Persistence | ✔️ |
More details are here https://jitpack.io/#hannesa2/paho.mqtt.android
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.github.hannesa2:paho.mqtt.android:$latestVersion'
}
The main advantages
- it doesn't use
android.permission.SCHEDULE_EXACT_ALARM
which drain the battery - it uses
androidx.work:work-runtime-ktx
to receive messages during device sleep
When you use a version 3.x on Android >= O you should use it as foreground service
val client = MqttAndroidClient(context, uri, clientId).apply {
setForegroundService(foregroundNotification, 3)
}
Copyright 2024
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.