From 8439b587591775c028bd067cae280b6334649dd5 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Thu, 23 Feb 2023 17:22:54 +0300 Subject: [PATCH] Added Huawei Checks --- lib/app_state/app_state.dart | 2 +- lib/classes/notifications.dart | 23 ++++++++++++----------- lib/classes/utils.dart | 23 ++++++++++++++++++++++- lib/ui/login/login_screen.dart | 16 +++++++++------- pubspec.yaml | 6 +++++- 5 files changed, 49 insertions(+), 21 deletions(-) diff --git a/lib/app_state/app_state.dart b/lib/app_state/app_state.dart index 2395bc1..cbdcdd9 100644 --- a/lib/app_state/app_state.dart +++ b/lib/app_state/app_state.dart @@ -88,7 +88,7 @@ class AppState { String get getHuaweiPushToken => _huaweiPushToken; - final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 31, versionID: 4.3, mobileType: Platform.isAndroid ? "android" : "ios"); + final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 31, versionID: 4.4, mobileType: Platform.isAndroid ? "android" : "ios"); void setPostParamsInitConfig() { isAuthenticated = false; diff --git a/lib/classes/notifications.dart b/lib/classes/notifications.dart index f714662..fe50455 100644 --- a/lib/classes/notifications.dart +++ b/lib/classes/notifications.dart @@ -4,7 +4,7 @@ import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; -import 'package:huawei_hmsavailability/huawei_hmsavailability.dart'; +// import 'package:huawei_hmsavailability/huawei_hmsavailability.dart'; import 'package:huawei_push/huawei_push.dart' as huawei_push; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; @@ -19,7 +19,7 @@ class AppNotifications { factory AppNotifications() => _instance; - late HmsApiAvailability hmsApiAvailability; + // late HmsApiAvailability hmsApiAvailability; String _huaweiToken = ''; @@ -40,9 +40,9 @@ class AppNotifications { } void init(String? firebaseToken) async { - if (Platform.isAndroid) { - hmsApiAvailability = HmsApiAvailability(); - } + // if (Platform.isAndroid) { + // hmsApiAvailability = HmsApiAvailability(); + // } await requestPermissions(); AppState().setDeviceToken = firebaseToken; @@ -68,9 +68,10 @@ class AppNotifications { }); if (Platform.isAndroid) { - await hmsApiAvailability.isHMSAvailable().then((value) async { - if (value == 0) { - huawei_push.Push.enableLogger(); + // await hmsApiAvailability.isHMSAvailable().then((value) async { + if (await Utils.isAppInstalledFromHuawei() && !(await Utils.isGoogleServicesAvailable()) ) { + + huawei_push.Push.enableLogger(); var result = await huawei_push.Push.setAutoInitEnabled(true); huawei_push.Push.onNotificationOpenedApp.listen((message) { @@ -81,9 +82,9 @@ class AppNotifications { // newMessage(toFirebaseRemoteMessage(message)); }, onError: (e) => print(e.toString())); } - }).catchError((err) { - print(err); - }); + // }).catchError((err) { + // print(err); + // }); } } diff --git a/lib/classes/utils.dart b/lib/classes/utils.dart index 076e8ab..0b3f8df 100644 --- a/lib/classes/utils.dart +++ b/lib/classes/utils.dart @@ -7,6 +7,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:fluttertoast/fluttertoast.dart'; +import 'package:google_api_availability/google_api_availability.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -20,6 +21,7 @@ import 'package:mohem_flutter_app/widgets/loading_dialog.dart'; import 'package:nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/platform_tags.dart'; import 'package:shared_preferences/shared_preferences.dart'; +import 'package:store_checker/store_checker.dart'; // ignore_for_file: avoid_annotating_with_dynamic @@ -226,7 +228,6 @@ class Utils { return BoxDecoration( color: background, border: Border.all( - width: 1, // color: background // <--- border width here ), @@ -391,4 +392,24 @@ class Utils { print(err); }); } + + //HUAWEI DECISION MAKING + + static Future isAppInstalledFromHuawei() async { + Source installationSource = await StoreChecker.getSource; + + if (installationSource == Source.IS_INSTALLED_FROM_HUAWEI_APP_GALLERY) { + return true; + } + return false; + } + + static Future isGoogleServicesAvailable() async { + GooglePlayServicesAvailability availability = await GoogleApiAvailability.instance.checkGooglePlayServicesAvailability(); + String status = availability.toString().split('.').last; + if (status == "success") { + return true; + } + return false; + } } diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index 1eab45c..a9b7bf2 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -5,11 +5,10 @@ import 'package:easy_localization/src/public_ext.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_crashlytics/firebase_crashlytics.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:huawei_hmsavailability/huawei_hmsavailability.dart'; +// import 'package:huawei_hmsavailability/huawei_hmsavailability.dart'; import 'package:mohem_flutter_app/api/login_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; @@ -59,12 +58,12 @@ class _LoginScreenState extends State { bool isOnExternalStorage = false; bool isDevelopmentModeEnable = false; - late HmsApiAvailability hmsApiAvailability; + // late HmsApiAvailability hmsApiAvailability; @override void initState() { super.initState(); - hmsApiAvailability = HmsApiAvailability(); + // hmsApiAvailability = HmsApiAvailability(); // checkFirebaseToken(); // if (kReleaseMode) { // checkDeviceSafety(); @@ -92,6 +91,9 @@ class _LoginScreenState extends State { super.dispose(); } + + + String? firebaseToken; GetMobileLoginInfoListModel? loginInfo; @@ -100,8 +102,8 @@ class _LoginScreenState extends State { Utils.showLoading(context); if (Platform.isAndroid) { try { - await hmsApiAvailability.isHMSAvailable().then((value) async { - if (value == 0) { + // await hmsApiAvailability.isHMSAvailable().then((value) async { + if (await Utils.isAppInstalledFromHuawei() && !(await Utils.isGoogleServicesAvailable()) ) { AppState().setIsHuawei = true; AppNotifications().initHuaweiPush(checkLoginInfo); } else { @@ -112,7 +114,7 @@ class _LoginScreenState extends State { checkLoginInfo(); await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true); } - }); + // }); } catch (ex) {} } else { await Firebase.initializeApp(); diff --git a/pubspec.yaml b/pubspec.yaml index 138fb63..0445b36 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -102,7 +102,7 @@ dependencies: flutter_layout_grid: ^2.0.1 #Huawei Dependencies - huawei_hmsavailability: ^6.6.0+300 +# huawei_hmsavailability: ^6.6.0+300 huawei_location: 6.0.0+302 huawei_push: ^6.7.0+300 firebase_crashlytics: ^2.9.0 @@ -110,6 +110,10 @@ dependencies: #Items for sale Image Carousel Slider carousel_slider: ^4.2.1 + #Huawei Specified + store_checker: ^1.1.0 + google_api_availability: ^3.0.1 + dependency_overrides: firebase_core_platform_interface: 4.5.1