8class MqttSessionExample {
15 MqttSessionExample() {
17 _setupMqttSessionListener();
23 void _initializeSdk() {
37 _sdk?.setServer(
"https://custom.navigine.com");
42 _locationManager = _sdk?.getLocationManager();
47 _navigationManager = _sdk?.getNavigationManager(_locationManager!);
52 _mqttSession = _sdk?.getMqttSession(_navigationManager!);
55 if (_mqttSession !=
null) {
56 print(
"MqttSession successfully initialized");
59 print(
"Error initializing SDK: $e");
66 void _setupMqttSessionListener() {
70 print(
"MQTT session connected successfully");
74 onError: (Error error) {
75 print(
"MQTT session error: ${error.message}");
80 print(
"Message published successfully");
89 Future<void> demonstrateMqttSessionMethods() async {
90 if (_mqttSession ==
null) {
91 print(
"MqttSession not initialized");
95 if (_mqttSessionListener ==
null)
return;
99 _mqttSession!.addListener(_mqttSessionListener!);
105 _mqttSession!.setSubTopic(
"location1");
114 _mqttSession!.connect(
"mqtt.example.com", 1883,
"username",
"password");
118 await Future.delayed(Duration(seconds: 2));
123 String customTopic =
"custom/device/status";
124 String customMessage =
'{"status": "online", "timestamp": ${DateTime.now().millisecondsSinceEpoch}}';
125 _mqttSession!.publish(customTopic, customMessage);
132 Future<void> demonstrateMqttSessionConfigurations() async {
133 if (_mqttSession ==
null) {
134 print(
"MqttSession not initialized");
138 print(
"=== MQTT Session Configurations ===");
143 _mqttSession!.setSubTopic(
"location1");
147 _mqttSession!.connect(
"mqtt.example.com", 1883,
"user",
"pass");
151 await Future.delayed(Duration(seconds: 1));
156 _mqttSession!.disconnect();
162 _mqttSession!.setSubTopic(
"building-a");
166 _mqttSession!.connect(
"mqtt-secure.example.com", 8883,
"user",
"pass");
170 await Future.delayed(Duration(seconds: 1));
175 _mqttSession!.setSubTopic(
"floor_2");
179 _mqttSession!.connect(
"mqtt.example.com", 1883,
"user",
"pass");
186 Future<void> demonstrateListenerManagement() async {
187 if (_mqttSession ==
null) {
188 print(
"MqttSession not initialized");
192 print(
"=== Listener Management ===");
197 print(
"Listener 1: Connected");
199 onError: (Error error) {
200 print(
"Listener 1: Error - ${error.message}");
203 print(
"Listener 1: Message published");
209 print(
"Listener 2: Connected");
211 onError: (Error error) {
212 print(
"Listener 2: Error - ${error.message}");
215 print(
"Listener 2: Message published");
221 _mqttSession!.addListener(listener1);
226 _mqttSession!.addListener(listener2);
231 _mqttSession!.setSubTopic(
"location1");
234 _mqttSession!.connect(
"mqtt.example.com", 1883,
"user",
"pass");
238 await Future.delayed(Duration(seconds: 2));
242 _mqttSession!.publish(
"custom/events",
'{"event": "user_action"}');
243 _mqttSession!.publish(
"custom/logs",
"Application started");
247 await Future.delayed(Duration(seconds: 1));
251 _mqttSession!.removeListener(listener1);
256 _mqttSession!.removeListener(listener2);
264 if (_mqttSession !=
null) {
267 if (_mqttSessionListener !=
null) {
268 _mqttSession!.removeListener(_mqttSessionListener!);
274 _mqttSession!.disconnect();
282 Future<void> runExample() async {
283 print(
"=== MqttSession Example ===");
285 await demonstrateMqttSessionMethods();
286 await demonstrateMqttSessionConfigurations();
287 await demonstrateListenerManagement();
290 await Future.delayed(Duration(seconds: 3));
293 print(
"=== Example completed ===");