diff --git a/android/app/build.gradle b/android/app/build.gradle
index fbc3a66..772bc9e 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -79,6 +79,7 @@ flutter {
dependencies {
implementation 'com.google.firebase:firebase-analytics:17.2.2'
+ implementation 'com.google.firebase:firebase-messaging:20.2.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 6b6c8dc..31520d2 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -43,16 +43,20 @@
-
-
-
-
-
+
() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if (task.isSuccessful()) {
+ Context context = getActivity();
+ SharedPreferences.Editor editor = context.getSharedPreferences("FlutterSharedPreferences", Context.MODE_PRIVATE).edit();
+ String token = task.getResult().getToken();
+ editor.putString("flutter.fcm-token", token);
+ editor.commit();
+ }
+ }
+ });
+ }
+
}
diff --git a/lib/home_assistant.class.dart b/lib/home_assistant.class.dart
index 3946c87..c591a50 100644
--- a/lib/home_assistant.class.dart
+++ b/lib/home_assistant.class.dart
@@ -22,8 +22,6 @@ class HomeAssistant {
Map services;
bool autoUi = false;
- String fcmToken;
-
Map _rawLovelaceData;
var _rawStates;
var _rawUserInfo;
diff --git a/lib/main.dart b/lib/main.dart
index d515454..47ea6f3 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -16,10 +16,10 @@ import 'package:http/http.dart' as http;
import 'package:charts_flutter/flutter.dart' as charts;
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:flutter_custom_tabs/flutter_custom_tabs.dart';
-import 'package:firebase_messaging/firebase_messaging.dart';
+//import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:device_info/device_info.dart';
-import 'package:flutter_local_notifications/flutter_local_notifications.dart';
+//import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:in_app_purchase/in_app_purchase.dart';
import 'plugins/dynamic_multi_column_layout.dart';
import 'plugins/spoiler_card.dart';
@@ -157,8 +157,8 @@ part 'cards/badges.dart';
part 'managers/app_settings.dart';
EventBus eventBus = new EventBus();
-final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
-FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();
+//final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
+//FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();
const String appName = 'HA Client';
const String appVersion = String.fromEnvironment('versionName', defaultValue: '0.0.0');
const whatsNewUrl = 'http://ha-client.app/service/whats_new_1.1.0.md';
diff --git a/lib/managers/app_settings.dart b/lib/managers/app_settings.dart
index 46cce8a..9e7d0e3 100644
--- a/lib/managers/app_settings.dart
+++ b/lib/managers/app_settings.dart
@@ -20,6 +20,7 @@ class AppSettings {
String tempToken;
String oauthUrl;
String webhookId;
+ String fcmToken;
double haVersion;
bool scrollBadges;
int appIntegrationVersion;
@@ -40,6 +41,7 @@ class AppSettings {
if (full) {
Logger.d('Loading settings...');
SharedPreferences prefs = await SharedPreferences.getInstance();
+ fcmToken = prefs.getString('fcm-token');
_domain = prefs.getString('hassio-domain');
_port = prefs.getString('hassio-port');
webhookId = prefs.getString('app-webhook-id');
diff --git a/lib/managers/mobile_app_integration_manager.class.dart b/lib/managers/mobile_app_integration_manager.class.dart
index e8aaed9..45dd716 100644
--- a/lib/managers/mobile_app_integration_manager.class.dart
+++ b/lib/managers/mobile_app_integration_manager.class.dart
@@ -12,7 +12,7 @@ class MobileAppIntegrationManager {
"os_version": DeviceInfoManager().osVersion,
"app_data": {
"push_token": "",
- "push_url": "https://us-central1-ha-client-c73c4.cloudfunctions.net/pushNotifyV2"
+ "push_url": "https://us-central1-ha-client-c73c4.cloudfunctions.net/pushNotifyV3"
}
};
@@ -26,7 +26,7 @@ class MobileAppIntegrationManager {
static Future checkAppRegistration() {
Completer completer = Completer();
_appRegistrationData["device_name"] = AppSettings().mobileAppDeviceName ?? getDefaultDeviceName();
- (_appRegistrationData["app_data"] as Map)["push_token"] = "${HomeAssistant().fcmToken}";
+ (_appRegistrationData["app_data"] as Map)["push_token"] = "${AppSettings().fcmToken}";
if (AppSettings().webhookId == null) {
Logger.d("Mobile app was not registered yet. Registering...");
var registrationData = Map.from(_appRegistrationData);
diff --git a/lib/pages/main/main.page.dart b/lib/pages/main/main.page.dart
index 377d516..1498615 100644
--- a/lib/pages/main/main.page.dart
+++ b/lib/pages/main/main.page.dart
@@ -33,35 +33,8 @@ class _MainPageState extends State with WidgetsBindingObserver, Ticker
super.initState();
WidgetsBinding.instance.addObserver(this);
- _firebaseMessaging.configure(
- onLaunch: (data) {
- Logger.d("Notification [onLaunch]: $data");
- return Future.value();
- },
- onMessage: (data) {
- Logger.d("Notification [onMessage]: $data");
- return _showNotification(title: data["notification"]["title"], text: data["notification"]["body"]);
- },
- onResume: (data) {
- Logger.d("Notification [onResume]: $data");
- return Future.value();
- }
- );
-
_bottomInfoBarController = BottomInfoBarController();
- _firebaseMessaging.requestNotificationPermissions(const IosNotificationSettings(sound: true, badge: true, alert: true));
-
- // initialise the plugin. app_icon needs to be a added as a drawable resource to the Android head project
- var initializationSettingsAndroid =
- new AndroidInitializationSettings('mini_icon');
- var initializationSettingsIOS = new IOSInitializationSettings(
- onDidReceiveLocalNotification: null);
- var initializationSettings = new InitializationSettings(
- initializationSettingsAndroid, initializationSettingsIOS);
- flutterLocalNotificationsPlugin.initialize(initializationSettings,
- onSelectNotification: onSelectNotification);
-
_settingsSubscription = eventBus.on().listen((event) {
Logger.d("Settings change event: reconnect=${event.reconnect}");
if (event.reconnect) {
@@ -73,31 +46,13 @@ class _MainPageState extends State with WidgetsBindingObserver, Ticker
_fullLoad();
}
- Future onSelectNotification(String payload) async {
- if (payload != null) {
- Logger.d('Notification clicked: ' + payload);
- }
- }
-
- Future _showNotification({String title, String text}) async {
- var androidPlatformChannelSpecifics = new AndroidNotificationDetails(
- 'ha_notify', 'Home Assistant notifications', 'Notifications from Home Assistant notify service',
- importance: Importance.Max, priority: Priority.High);
- var iOSPlatformChannelSpecifics = new IOSNotificationDetails();
- var platformChannelSpecifics = new NotificationDetails(
- androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
- await flutterLocalNotificationsPlugin.show(
- 0,
- title ?? appName,
- text,
- platformChannelSpecifics
- );
- }
-
void _fullLoad() {
_bottomInfoBarController.showInfoBottomBar(progress: true,);
+ Logger.d('[loading] fullLoad');
_subscribe().then((_) {
+ Logger.d('[loading] subscribed');
ConnectionManager().init(loadSettings: true, forceReconnect: true).then((__){
+ Logger.d('[loading] COnnection manager initialized');
SharedPreferences.getInstance().then((prefs) {
HomeAssistant().currentDashboardPath = prefs.getString('lovelace_dashboard_url') ?? HomeAssistant.DEFAULT_DASHBOARD;
_fetchData(useCache: true);
@@ -155,9 +110,7 @@ class _MainPageState extends State with WidgetsBindingObserver, Ticker
}
}
- Future _subscribe() {
- Completer completer = Completer();
-
+ Future _subscribe() async {
if (_stateSubscription == null) {
_stateSubscription = eventBus.on().listen((event) {
if (event.needToRebuildUI) {
@@ -238,11 +191,10 @@ class _MainPageState extends State with WidgetsBindingObserver, Ticker
});
}
- _firebaseMessaging.getToken().then((String token) {
+ /*_firebaseMessaging.getToken().then((String token) {
HomeAssistant().fcmToken = token;
completer.complete();
- });
- return completer.future;
+ });*/
}
void _showOAuth() {
diff --git a/pubspec.yaml b/pubspec.yaml
index cbed309..1f62a8b 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -23,10 +23,8 @@ dependencies:
flutter_custom_tabs: ^0.6.0
flutter_webview_plugin: ^0.3.10+1
webview_flutter: ^0.3.19+7
- firebase_messaging: ^6.0.15
flutter_secure_storage: ^3.3.3
device_info: ^0.4.1+4
- flutter_local_notifications: ^1.1.6
geolocator: ^5.3.1
workmanager: ^0.2.2
battery: ^1.0.0