From 6cf86e2e8461adb93113600f78c221f0d0c30644 Mon Sep 17 00:00:00 2001 From: "taha.alam" Date: Wed, 26 Feb 2025 11:26:45 +0300 Subject: [PATCH 1/9] WIP: deeplink added to android and ios --- android/app/src/main/AndroidManifest.xml | 15 ++++++++++++++ ios/Runner/Info.plist | 2 ++ ios/Runner/Runner.entitlements | 4 ++++ lib/main.dart | 26 +++++++++++++++++++++--- lib/uitl/LocalNotification.dart | 2 +- pubspec.yaml | 1 + 6 files changed, 46 insertions(+), 4 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index e216dae5..f25d366d 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -144,6 +144,9 @@ android:theme="@style/LaunchTheme" android:windowSoftInputMode="adjustResize" tools:node="merge"> + diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index a67c0647..91a4aedb 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -122,5 +122,7 @@ MBXAccessToken pk.eyJ1IjoicndhaWQiLCJhIjoiY2x5cGo4aHNjMGNsbTJyc2djempobGQxaSJ9.RCaC6WrUt4A4YnZNfxnONQ + FlutterDeepLinkingEnabled + diff --git a/ios/Runner/Runner.entitlements b/ios/Runner/Runner.entitlements index 44ce1b68..04bf8575 100644 --- a/ios/Runner/Runner.entitlements +++ b/ios/Runner/Runner.entitlements @@ -26,5 +26,9 @@ $(TeamIdentifierPrefix)* + com.apple.developer.associated-domains + + applinks:hmg.com + diff --git a/lib/main.dart b/lib/main.dart index cd2aab7a..642d485b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,7 @@ +import 'dart:async'; import 'dart:io'; +import 'package:app_links/app_links.dart'; import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/core/viewModels/PharmacyPagesViewModel.dart'; import 'package:diplomaticquarterapp/core/viewModels/dashboard_view_model.dart'; @@ -14,8 +16,6 @@ import 'package:diplomaticquarterapp/uitl/PlatformBridge.dart'; import 'package:diplomaticquarterapp/uitl/navigation_service.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:firebase_core/firebase_core.dart'; -import 'package:firebase_crashlytics/firebase_crashlytics.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:provider/provider.dart'; @@ -59,7 +59,7 @@ class MyHttpOverrides extends HttpOverrides { class _MyApp extends State { // late AppUpdateInfo _updateInfo; - + StreamSubscription? _linkSubscription; final GlobalKey navigatorKey = GlobalKey(); //0537503378 @@ -92,9 +92,29 @@ class _MyApp extends State { // if (Platform.isAndroid) checkForUpdate(); ThemeNotifier(defaultTheme()); + initDeepLinks(); super.initState(); } + void dispose() { + _linkSubscription?.cancel(); + + super.dispose(); + } + + Future initDeepLinks() async { + // Handle links + _linkSubscription = AppLinks().uriLinkStream.listen((uri) { + debugPrint('onAppLink: $uri'); + openAppLink(uri); + }); + } + + void openAppLink(Uri uri) { + print("the uri is $uri"); + // locator().navigatorKey.currentState?.pushNamed(uri.fragment); + } + @override Widget build(BuildContext context) { PlatformBridge.init(context); diff --git a/lib/uitl/LocalNotification.dart b/lib/uitl/LocalNotification.dart index 0cdef6ca..ead098fe 100644 --- a/lib/uitl/LocalNotification.dart +++ b/lib/uitl/LocalNotification.dart @@ -31,7 +31,7 @@ class LocalNotification { _initialize() async { try { var initializationSettingsAndroid = new AndroidInitializationSettings('app_icon'); - var initializationSettingsIOS = DarwinInitializationSettings(onDidReceiveLocalNotification: null); + var initializationSettingsIOS = DarwinInitializationSettings(); var initializationSettings = InitializationSettings(android: initializationSettingsAndroid, iOS: initializationSettingsIOS); await flutterLocalNotificationsPlugin.initialize( initializationSettings, diff --git a/pubspec.yaml b/pubspec.yaml index 5bad9780..f7ccd8f5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -187,6 +187,7 @@ dependencies: firebase_crashlytics: ^3.0.0 cloudflare_turnstile: ^2.0.1 + app_links: ^6.4.0 # vital_sign_camera: # path: ./packages/vital_sign_camera From e2efc3749c704060ddc36231fc51301a7cf792d9 Mon Sep 17 00:00:00 2001 From: "taha.alam" Date: Thu, 13 Mar 2025 16:00:20 +0300 Subject: [PATCH 2/9] WD:deeplink changes. --- android/app/src/main/AndroidManifest.xml | 4 +- lib/config/config.dart | 1 + lib/main.dart | 7 +- lib/pages/landing/widgets/services_view.dart | 4 +- lib/uitl/DeepLinkHandler.dart | 100 +++++++++++++++++++ 5 files changed, 109 insertions(+), 7 deletions(-) create mode 100644 lib/uitl/DeepLinkHandler.dart diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index f25d366d..98007740 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -146,7 +146,7 @@ tools:node="merge"> + android:value="true" /> diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index a67c0647..91a4aedb 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -122,5 +122,7 @@ MBXAccessToken pk.eyJ1IjoicndhaWQiLCJhIjoiY2x5cGo4aHNjMGNsbTJyc2djempobGQxaSJ9.RCaC6WrUt4A4YnZNfxnONQ + FlutterDeepLinkingEnabled + diff --git a/ios/Runner/Runner.entitlements b/ios/Runner/Runner.entitlements index 44ce1b68..04bf8575 100644 --- a/ios/Runner/Runner.entitlements +++ b/ios/Runner/Runner.entitlements @@ -26,5 +26,9 @@ $(TeamIdentifierPrefix)* + com.apple.developer.associated-domains + + applinks:hmg.com + diff --git a/lib/main.dart b/lib/main.dart index cd2aab7a..642d485b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,7 @@ +import 'dart:async'; import 'dart:io'; +import 'package:app_links/app_links.dart'; import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/core/viewModels/PharmacyPagesViewModel.dart'; import 'package:diplomaticquarterapp/core/viewModels/dashboard_view_model.dart'; @@ -14,8 +16,6 @@ import 'package:diplomaticquarterapp/uitl/PlatformBridge.dart'; import 'package:diplomaticquarterapp/uitl/navigation_service.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:firebase_core/firebase_core.dart'; -import 'package:firebase_crashlytics/firebase_crashlytics.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:provider/provider.dart'; @@ -59,7 +59,7 @@ class MyHttpOverrides extends HttpOverrides { class _MyApp extends State { // late AppUpdateInfo _updateInfo; - + StreamSubscription? _linkSubscription; final GlobalKey navigatorKey = GlobalKey(); //0537503378 @@ -92,9 +92,29 @@ class _MyApp extends State { // if (Platform.isAndroid) checkForUpdate(); ThemeNotifier(defaultTheme()); + initDeepLinks(); super.initState(); } + void dispose() { + _linkSubscription?.cancel(); + + super.dispose(); + } + + Future initDeepLinks() async { + // Handle links + _linkSubscription = AppLinks().uriLinkStream.listen((uri) { + debugPrint('onAppLink: $uri'); + openAppLink(uri); + }); + } + + void openAppLink(Uri uri) { + print("the uri is $uri"); + // locator().navigatorKey.currentState?.pushNamed(uri.fragment); + } + @override Widget build(BuildContext context) { PlatformBridge.init(context); diff --git a/pubspec.yaml b/pubspec.yaml index e6c2caca..36e8ea12 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -189,6 +189,7 @@ dependencies: firebase_crashlytics: ^3.0.0 cloudflare_turnstile: ^2.0.1 + app_links: ^6.4.0 device_info_plus: ^10.1.2 # vital_sign_camera: # path: ./packages/vital_sign_camera From bdcda02b263310385c51657adbec907b8482391b Mon Sep 17 00:00:00 2001 From: "taha.alam" Date: Thu, 13 Mar 2025 16:00:20 +0300 Subject: [PATCH 5/9] WD:deeplink changes. --- android/app/src/main/AndroidManifest.xml | 4 +- lib/config/config.dart | 1 + lib/main.dart | 7 +- lib/pages/landing/widgets/services_view.dart | 4 +- lib/uitl/DeepLinkHandler.dart | 100 +++++++++++++++++++ 5 files changed, 109 insertions(+), 7 deletions(-) create mode 100644 lib/uitl/DeepLinkHandler.dart diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index ecabe086..06405b9f 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -146,7 +146,7 @@ tools:node="merge"> + android:value="true" />