Quick Start¶
Get started with Pulse MQTT in minutes.
Basic Setup¶
1. Initialize¶
2. Implement Bridge¶
val bridge = object : PulseMqttKitBridge {
override fun getLogger() = AndroidLogger()
override fun getAppGson() = Gson()
override fun getCustomCoroutineScope() = MainScope()
override fun getHealthMonitoringConfig() = HealthMonitoringConfig(
monitoringFreqSeconds = 30,
type = HealthMonitoringType.WORK_MANAGER
)
override fun getNetworkConfig() = NetworkMonitoringConfig(enabled = true)
}
3. Register Listener¶
pulseMqttKit.addListener(object : MqttUpdatesListener {
override fun onCommandSuccess(command: MqttCommand, result: CommandResult.Success) {
// Handle success
}
override fun onCommandFailure(command: MqttCommand, result: CommandResult.Failure) {
// Handle failure
}
override fun onMqttMessageReceived(topic: String?, payload: String?, topicMessage: TopicMessage<*>?) {
// Handle incoming messages
}
})
Connect to Broker¶
val connectCommand = ConnectCommand(
connectionOptions = ConnectionOptions(
serverUri = "tcp://broker.example.com:1883",
clientId = "my-client",
username = "user",
password = "pass"
),
retryPolicy = RetryPolicy.exponential(maxRetries = 3)
)
pulseMqttKit.submitCommand(connectCommand)
Subscribe to Topics¶
val subscribeCommand = SubscribeCommand(
topicConfigs = hashMapOf(
"sensor/data" to TopicTypeConfig(
messageType = SensorData::class.java,
qosLevel = QOSLevel.QOS_1
)
),
retryPolicy = RetryPolicy.exponential(maxRetries = 3)
)
pulseMqttKit.submitCommand(subscribeCommand)
Publish Messages¶
val message = ZMqttMessage(
topic = "device/status",
payload = """{"status": "online"}""",
qos = QOSLevel.QOS_1,
retained = false
)
val publishCommand = PublishCommand(
message = message,
retryPolicy = RetryPolicy.exponential(maxRetries = 3)
)
pulseMqttKit.submitCommand(publishCommand)
Disconnect¶
val disconnectCommand = DisconnectCommand(quiesceTimeout = 5000)
pulseMqttKit.submitCommand(disconnectCommand)
Complete Example¶
class MyApplication : Application() {
private val pulseMqttKit = PulseMqttKit()
override fun onCreate() {
super.onCreate()
setupMqtt()
}
private fun setupMqtt() {
// Initialize
pulseMqttKit.initialize(this, createBridge())
pulseMqttKit.addListener(createListener())
// Connect
pulseMqttKit.submitCommand(
ConnectCommand(
connectionOptions = ConnectionOptions(
serverUri = "tcp://broker.example.com:1883",
clientId = "android-client"
)
)
)
// Subscribe
pulseMqttKit.submitCommand(
SubscribeCommand(
topicConfigs = hashMapOf(
"sensor/data" to TopicTypeConfig(
messageType = SensorData::class.java,
qosLevel = QOSLevel.QOS_1
)
)
)
)
}
}