firebase / flutterfire

πŸ”₯ A collection of Firebase plugins for Flutter apps.
https://firebase.google.com/docs/flutter/setup
BSD 3-Clause "New" or "Revised" License
8.68k stars 3.97k forks source link

πŸ› [firebase_messaging] onBackgroundMessage is starting the main flutter application instead of an isolate #9510

Closed raphire08 closed 2 years ago

raphire08 commented 2 years ago

Bug report

Describe the bug We have initialized the FirebaseMessaging.onBackgroundMessage(backgroundMessageCompute); before our runApp() function where backgroundMessageCompute is a high lever function which runs inside the isolate.

Whenever the application is terminated and data only push notification is sent, iOS is starting up the entire application in the background which is causing side effects. On app launch we have data calls and other stuff which should not run. Only the isolate should independently.

Steps to reproduce

Steps to reproduce the behavior:

  1. Set up the FirebaseMessaging.onBackgroundMessage(backgroundMessageCompute);
  2. Send data only push notification
  3. In xcode device console new process will be started for the application and complete application will start running in the background whenever any notification is sent.

Expected behavior

Only the top level function should be executed, the entire application should not start.

Sample project

Providing a minimal example project which demonstrates the bug in isolation from your main App greatly enhances the chance of a timely fix. Please link to the public repository URL.


Additional context

In the info.plist we have added following two parameters for background message to work

<key>GoogleUtilitiesAppDelegateProxyEnabled</key>
    <false/>
<key>FirebaseAppDelegateProxyEnabled</key>
    <false/>

Flutter doctor

Run flutter doctor and paste the output below:

Click To Expand ``` Flutter (Channel stable, 2.10.5, on macOS 12.4 21F79 darwin-x64, locale en-IN) β€’ Flutter version 2.10.5 at /Volumes/Work/flutter_sdk/flutter_2.10 β€’ Upstream repository https://github.com/flutter/flutter.git β€’ Framework revision 5464c5bac7 (5 months ago), 2022-04-18 09:55:37 -0700 β€’ Engine revision 57d3bac3dd β€’ Dart version 2.16.2 β€’ DevTools version 2.9.2 [βœ“] Android toolchain - develop for Android devices (Android SDK version 33.0.0-rc4) β€’ Android SDK at /Users/sumeet/Library/Android/sdk β€’ Platform android-31, build-tools 33.0.0-rc4 β€’ Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java β€’ Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840) β€’ All Android licenses accepted. [βœ“] Xcode - develop for iOS and macOS (Xcode 13.4.1) β€’ Xcode at /Applications/Xcode.app/Contents/Developer β€’ CocoaPods version 1.11.2 [βœ“] Chrome - develop for the web β€’ Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome [βœ“] Android Studio (version 2021.2) β€’ Android Studio at /Applications/Android Studio.app/Contents β€’ Flutter plugin can be installed from: πŸ”¨ https://plugins.jetbrains.com/plugin/9212-flutter β€’ Dart plugin can be installed from: πŸ”¨ https://plugins.jetbrains.com/plugin/6351-dart β€’ Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840) [βœ“] VS Code (version 1.70.2) β€’ VS Code at /Applications/Visual Studio Code.app/Contents β€’ Flutter extension version 3.46.0 [βœ“] VS Code (version 1.52.1) β€’ VS Code at /Volumes/Work/software/Visual Studio Code.app/Contents β€’ Flutter extension version 3.46.0 [βœ“] Connected device (2 available) β€’ Sumeet’s iPhone (mobile) β€’ 00008020-001578D6013B002E β€’ ios β€’ iOS 15.5 19F77 β€’ Chrome (web) β€’ chrome β€’ web-javascript β€’ Google Chrome 105.0.5195.102 [βœ“] HTTP Host Availability β€’ All required HTTP hosts are available β€’ No issues found! ```

Flutter dependencies

Run flutter pub deps -- --style=compact and paste the output below:

Click To Expand ``` Dart SDK 2.16.2 Flutter SDK 2.10.5 fdgv2 1.20.14+14 dependencies: - amplify_api 0.6.2 [amplify_api_android amplify_api_ios amplify_core amplify_flutter aws_common collection flutter meta plugin_platform_interface] - amplify_auth_cognito 0.6.2 [amplify_auth_cognito_android amplify_auth_cognito_ios amplify_core aws_common collection flutter meta plugin_platform_interface] - amplify_flutter 0.6.2 [amplify_core amplify_datastore_plugin_interface amplify_flutter_android amplify_flutter_ios aws_common collection flutter meta plugin_platform_interface] - async 2.8.2 [collection meta] - auto_size_text 3.0.0 [flutter] - camera 0.9.8+1 [camera_android camera_avfoundation camera_platform_interface camera_web flutter flutter_plugin_android_lifecycle quiver] - characters 1.2.0 - charts_flutter 0.12.0 [charts_common collection flutter intl logging meta] - collection 1.15.0 - connectivity_plus 2.3.6 [flutter connectivity_plus_platform_interface connectivity_plus_linux connectivity_plus_macos connectivity_plus_web connectivity_plus_windows] - cupertino_icons 1.0.5 - device_info_plus 4.0.0 [flutter device_info_plus_platform_interface device_info_plus_macos device_info_plus_linux device_info_plus_web device_info_plus_windows] - dotted_border 2.0.0+2 [flutter path_drawing] - easy_mask 2.0.1 [flutter] - email_validator 2.0.1 - f_logs 2.0.1 [flutter sembast path_provider intl xxtea meta path stack_trace] - fdg_formula_engine_test 0.0.0 [path intl expression_language] - firebase_core 1.20.0 [firebase_core_platform_interface firebase_core_web flutter meta] - firebase_crashlytics 2.8.5 [firebase_core firebase_core_platform_interface firebase_crashlytics_platform_interface flutter stack_trace] - firebase_messaging 12.0.1 [firebase_core firebase_core_platform_interface firebase_messaging_platform_interface firebase_messaging_web flutter meta] - flutter 0.0.0 [characters collection material_color_utilities meta typed_data vector_math sky_engine] - flutter_image_compress 1.1.0 [flutter] - flutter_inapp_notifications 0.0.3 [flutter] - flutter_keyboard_visibility 5.3.0 [meta flutter_keyboard_visibility_platform_interface flutter_keyboard_visibility_web flutter] - flutter_local_notifications 9.5.3+1 [clock flutter flutter_local_notifications_linux flutter_local_notifications_platform_interface timezone] - flutter_slidable 0.6.0 [flutter] - flutter_smartlook 3.0.10 [flutter] - flutter_svg 1.0.3 [flutter meta path_drawing vector_math xml] - flutter_switch 0.3.2 [flutter] - geolocator 8.2.1 [flutter geolocator_platform_interface geolocator_android geolocator_apple geolocator_web geolocator_windows] - google_fonts 3.0.1 [flutter http path_provider crypto] - google_mlkit_text_recognition 0.4.0 [flutter google_mlkit_commons] - hypertrack_plugin 0.4.2 [flutter plugin_platform_interface] - image_cropper 2.0.3 [flutter image_cropper_platform_interface image_cropper_for_web] - image_picker 0.8.5+3 [flutter image_picker_android image_picker_for_web image_picker_ios image_picker_platform_interface] - in_app_notification 1.1.2 [flutter] - intl 0.17.0 [clock path] - isolate_handler 1.0.1 [flutter flutter_isolate] - json_annotation 4.6.0 [meta] - jwt_decoder 2.0.1 - keyboard_actions 3.4.7 [flutter] - linked_scroll_controller 0.2.0 [flutter] - local_auth 2.1.0 [flutter intl local_auth_android local_auth_ios local_auth_platform_interface local_auth_windows] - numeric_keyboard 1.1.0 [flutter] - objectbox 1.6.0 [collection flat_buffers ffi meta path] - objectbox_flutter_libs 1.6.0 [objectbox path_provider] - package_info_plus 1.4.2 [flutter package_info_plus_platform_interface package_info_plus_linux package_info_plus_macos package_info_plus_windows package_info_plus_web] - path 1.8.0 - path_provider 2.0.11 [flutter path_provider_android path_provider_ios path_provider_linux path_provider_macos path_provider_platform_interface path_provider_windows] - path_provider_android 2.0.14 [flutter path_provider_platform_interface] - path_provider_ios 2.0.11 [flutter path_provider_platform_interface] - pendo_sdk 2.16.0 [flutter] - permission_handler 9.2.0 [flutter meta permission_handler_android permission_handler_apple permission_handler_windows permission_handler_platform_interface] - petitparser 4.4.0 [meta] - rxdart 0.27.5 - scanbot_sdk 2.9.0 [logging json_annotation flutter] - shared_preferences 2.0.15 [flutter shared_preferences_android shared_preferences_ios shared_preferences_linux shared_preferences_macos shared_preferences_platform_interface shared_preferences_web shared_preferences_windows] - sprintf 6.0.2 - string_validator 0.3.0 - syncfusion_flutter_datepicker 19.4.56 [flutter intl syncfusion_flutter_core] - url_launcher 6.1.5 [flutter url_launcher_android url_launcher_ios url_launcher_linux url_launcher_macos url_launcher_platform_interface url_launcher_web url_launcher_windows] - uuid 3.0.6 [crypto] - visibility_detector 0.3.2 [flutter] dev dependencies: - build_runner 2.2.0 [args async analyzer build build_config build_daemon build_resolvers build_runner_core code_builder collection crypto dart_style frontend_server_client glob graphs http_multi_server io js logging meta mime package_config path pool pub_semver pubspec_parse shelf shelf_web_socket stack_trace stream_transform timing watcher web_socket_channel yaml] - flutter_lints 1.0.4 [lints] - flutter_test 0.0.0 [flutter test_api path fake_async clock stack_trace vector_math async boolean_selector characters charcode collection matcher material_color_utilities meta source_span stream_channel string_scanner term_glyph typed_data] - json_serializable 6.3.1 [analyzer async build build_config collection json_annotation meta path pub_semver pubspec_parse source_gen source_helper] - mockito 5.2.0 [analyzer build code_builder collection dart_style matcher meta path source_gen test_api] - objectbox_generator 1.6.0 [objectbox analyzer build collection dart_style glob path source_gen pubspec_parse yaml] - test 1.19.5 [analyzer async boolean_selector collection coverage http_multi_server io js node_preamble package_config path pool shelf shelf_packages_handler shelf_static shelf_web_socket source_span stack_trace stream_channel typed_data web_socket_channel webkit_inspection_protocol yaml test_api test_core] transitive dependencies: - _fe_analyzer_shared 31.0.0 [meta] - amplify_api_android 0.6.2 [flutter] - amplify_api_ios 0.6.2 [amplify_core flutter] - amplify_auth_cognito_android 0.6.2 [flutter] - amplify_auth_cognito_ios 0.6.2 [amplify_core flutter] - amplify_core 0.6.2 [aws_common collection flutter intl json_annotation meta plugin_platform_interface uuid] - amplify_datastore_plugin_interface 0.6.2 [amplify_core collection flutter meta] - amplify_flutter_android 0.6.2 [flutter] - amplify_flutter_ios 0.6.2 [amplify_core flutter] - analyzer 2.8.0 [_fe_analyzer_shared cli_util collection convert crypto glob meta package_config path pub_semver source_span watcher yaml] - args 2.3.1 - aws_common 0.1.1 [async collection http meta stream_transform uuid] - boolean_selector 2.1.0 [source_span string_scanner] - build 2.3.0 [analyzer async convert crypto glob logging meta path] - build_config 1.1.0 [checked_yaml json_annotation path pubspec_parse yaml] - build_daemon 3.1.0 [built_collection built_value http_multi_server logging path pool shelf shelf_web_socket stream_transform watcher web_socket_channel] - build_resolvers 2.0.6 [analyzer async build crypto graphs logging path package_config pool pub_semver stream_transform yaml] - build_runner_core 7.2.3 [async build build_config build_resolvers collection convert crypto glob graphs json_annotation logging meta path package_config pool timing watcher yaml] - built_collection 5.1.1 - built_value 8.4.0 [built_collection collection fixnum meta] - camera_android 0.9.8+3 [camera_platform_interface flutter flutter_plugin_android_lifecycle stream_transform] - camera_avfoundation 0.9.8+2 [camera_platform_interface flutter stream_transform] - camera_platform_interface 2.2.0 [cross_file flutter plugin_platform_interface stream_transform] - camera_web 0.2.1+6 [camera_platform_interface flutter flutter_web_plugins stream_transform] - charcode 1.3.1 - charts_common 0.12.0 [collection intl logging meta vector_math] - checked_yaml 2.0.1 [json_annotation source_span yaml] - cli_util 0.3.5 [meta path] - clock 1.1.0 - code_builder 4.1.0 [built_collection built_value collection matcher meta] - connectivity_plus_linux 1.3.1 [flutter connectivity_plus_platform_interface meta nm] - connectivity_plus_macos 1.2.4 [connectivity_plus_platform_interface flutter] - connectivity_plus_platform_interface 1.2.1 [flutter meta plugin_platform_interface] - connectivity_plus_web 1.2.3 [connectivity_plus_platform_interface flutter_web_plugins flutter] - connectivity_plus_windows 1.2.2 [connectivity_plus_platform_interface flutter] - convert 3.0.2 [typed_data] - coverage 1.0.3 [args logging package_config path source_maps stack_trace vm_service] - cross_file 0.3.3+1 [js meta] - crypto 3.0.2 [typed_data] - dart_style 2.2.1 [analyzer args path pub_semver source_span] - dbus 0.7.3 [args ffi meta xml] - device_info_plus_linux 2.1.1 [device_info_plus_platform_interface file flutter meta] - device_info_plus_macos 2.2.3 [device_info_plus_platform_interface flutter] - device_info_plus_platform_interface 2.3.0+1 [flutter meta plugin_platform_interface] - device_info_plus_web 2.1.0 [device_info_plus_platform_interface flutter_web_plugins flutter] - device_info_plus_windows 2.1.1 [device_info_plus_platform_interface ffi flutter win32] - expression_language 1.0.0 [petitparser rational] - fake_async 1.2.0 [clock collection] - ffi 1.2.1 - file 6.1.2 [meta path] - firebase_core_platform_interface 4.5.0 [collection flutter flutter_test meta plugin_platform_interface] - firebase_core_web 1.7.1 [firebase_core_platform_interface flutter flutter_web_plugins js meta] - firebase_crashlytics_platform_interface 3.2.11 [collection firebase_core flutter meta plugin_platform_interface] - firebase_messaging_platform_interface 4.1.0 [firebase_core flutter meta plugin_platform_interface] - firebase_messaging_web 3.1.0 [firebase_core firebase_core_web firebase_messaging_platform_interface flutter flutter_web_plugins js meta] - fixnum 1.0.1 - flat_buffers 2.0.5 - flutter_isolate 2.0.2 [flutter uuid] - flutter_keyboard_visibility_platform_interface 2.0.0 [flutter meta plugin_platform_interface] - flutter_keyboard_visibility_web 2.0.0 [flutter_keyboard_visibility_platform_interface flutter_web_plugins flutter] - flutter_local_notifications_linux 0.4.2 [flutter flutter_local_notifications_platform_interface dbus path xdg_directories] - flutter_local_notifications_platform_interface 5.0.0 [flutter plugin_platform_interface] - flutter_plugin_android_lifecycle 2.0.7 [flutter] - flutter_web_plugins 0.0.0 [flutter js characters collection material_color_utilities meta typed_data vector_math] - frontend_server_client 2.1.3 [async path] - geolocator_android 3.1.8 [flutter geolocator_platform_interface] - geolocator_apple 2.2.1 [flutter geolocator_platform_interface] - geolocator_platform_interface 4.0.6 [flutter plugin_platform_interface vector_math meta] - geolocator_web 2.1.6 [flutter flutter_web_plugins geolocator_platform_interface] - geolocator_windows 0.1.1 [flutter geolocator_platform_interface] - glob 2.1.0 [async collection file path string_scanner] - google_mlkit_commons 0.2.0 [flutter] - graphs 2.1.0 [collection] - http 0.13.4 [async http_parser meta path] - http_multi_server 3.2.1 [async] - http_parser 4.0.1 [collection source_span string_scanner typed_data] - image_cropper_for_web 0.0.4 [flutter flutter_web_plugins image_cropper_platform_interface js] - image_cropper_platform_interface 2.0.0 [flutter plugin_platform_interface http] - image_picker_android 0.8.5+1 [flutter flutter_plugin_android_lifecycle image_picker_platform_interface] - image_picker_for_web 2.1.8 [flutter flutter_web_plugins image_picker_platform_interface] - image_picker_ios 0.8.5+6 [flutter image_picker_platform_interface] - image_picker_platform_interface 2.5.0 [cross_file flutter http plugin_platform_interface] - io 1.0.3 [meta path string_scanner] - js 0.6.3 - lints 1.0.1 - local_auth_android 1.0.6 [flutter flutter_plugin_android_lifecycle intl local_auth_platform_interface] - local_auth_ios 1.0.7 [flutter intl local_auth_platform_interface] - local_auth_platform_interface 1.0.4 [flutter intl plugin_platform_interface] - local_auth_windows 1.0.1 [flutter local_auth_platform_interface] - logging 1.0.2 - matcher 0.12.11 [stack_trace] - material_color_utilities 0.1.3 - meta 1.7.0 - mime 1.0.2 - nm 0.5.0 [dbus] - node_preamble 2.0.1 - package_config 2.1.0 [path] - package_info_plus_linux 1.0.5 [package_info_plus_platform_interface flutter path] - package_info_plus_macos 1.3.0 [flutter] - package_info_plus_platform_interface 1.0.2 [flutter meta plugin_platform_interface] - package_info_plus_web 1.0.5 [flutter flutter_web_plugins http meta package_info_plus_platform_interface] - package_info_plus_windows 1.0.5 [package_info_plus_platform_interface ffi flutter win32] - path_drawing 1.0.0 [vector_math meta path_parsing flutter] - path_parsing 1.0.0 [vector_math meta] - path_provider_linux 2.1.7 [ffi flutter path path_provider_platform_interface xdg_directories] - path_provider_macos 2.0.6 [flutter path_provider_platform_interface] - path_provider_platform_interface 2.0.4 [flutter platform plugin_platform_interface] - path_provider_windows 2.0.7 [ffi flutter path path_provider_platform_interface win32] - permission_handler_android 9.0.2+1 [flutter permission_handler_platform_interface] - permission_handler_apple 9.0.4 [flutter permission_handler_platform_interface] - permission_handler_platform_interface 3.7.0 [flutter meta plugin_platform_interface] - permission_handler_windows 0.1.0 [flutter permission_handler_platform_interface] - platform 3.1.0 - plugin_platform_interface 2.1.2 [meta] - pool 1.5.1 [async stack_trace] - process 4.2.4 [file path platform] - pub_semver 2.1.1 [collection meta] - pubspec_parse 1.2.0 [checked_yaml collection json_annotation pub_semver yaml] - quiver 3.1.0 [matcher] - rational 1.2.1 - sembast 3.2.0+1 [meta path synchronized] - shared_preferences_android 2.0.12 [flutter shared_preferences_platform_interface] - shared_preferences_ios 2.1.1 [flutter shared_preferences_platform_interface] - shared_preferences_linux 2.1.1 [file flutter path path_provider_linux path_provider_platform_interface shared_preferences_platform_interface] - shared_preferences_macos 2.0.4 [flutter shared_preferences_platform_interface] - shared_preferences_platform_interface 2.0.0 [flutter] - shared_preferences_web 2.0.4 [flutter flutter_web_plugins shared_preferences_platform_interface] - shared_preferences_windows 2.1.1 [file flutter path path_provider_platform_interface path_provider_windows shared_preferences_platform_interface] - shelf 1.3.1 [async collection http_parser path stack_trace stream_channel] - shelf_packages_handler 3.0.1 [path shelf shelf_static] - shelf_static 1.1.1 [convert http_parser mime path shelf] - shelf_web_socket 1.0.2 [shelf stream_channel web_socket_channel] - sky_engine 0.0.99 - source_gen 1.2.2 [analyzer async build dart_style glob meta path source_span yaml] - source_helper 1.3.2 [analyzer collection source_gen] - source_map_stack_trace 2.1.0 [path stack_trace source_maps] - source_maps 0.10.10 [source_span] - source_span 1.8.1 [collection path term_glyph] - stack_trace 1.10.0 [path] - stream_channel 2.1.0 [async] - stream_transform 2.0.0 - string_scanner 1.1.0 [charcode source_span] - syncfusion_flutter_core 19.4.56 [vector_math flutter] - synchronized 3.0.0+2 - term_glyph 1.2.0 - test_api 0.4.8 [async boolean_selector collection meta source_span stack_trace stream_channel string_scanner term_glyph matcher] - test_core 0.4.9 [analyzer async args boolean_selector collection coverage frontend_server_client glob io meta package_config path pool source_map_stack_trace source_maps source_span stack_trace stream_channel vm_service yaml matcher test_api] - timezone 0.8.0 [path] - timing 1.0.0 [json_annotation] - typed_data 1.3.0 [collection] - url_launcher_android 6.0.18 [flutter url_launcher_platform_interface] - url_launcher_ios 6.0.17 [flutter url_launcher_platform_interface] - url_launcher_linux 3.0.1 [flutter url_launcher_platform_interface] - url_launcher_macos 3.0.1 [flutter url_launcher_platform_interface] - url_launcher_platform_interface 2.1.0 [flutter plugin_platform_interface] - url_launcher_web 2.0.13 [flutter flutter_web_plugins url_launcher_platform_interface] - url_launcher_windows 3.0.1 [flutter url_launcher_platform_interface] - vector_math 2.1.1 - vm_service 7.5.0 - watcher 1.0.1 [async path] - web_socket_channel 2.2.0 [async crypto stream_channel] - webkit_inspection_protocol 1.1.0 [logging] - win32 2.5.2 [ffi] - xdg_directories 0.2.0+1 [meta path process] - xml 5.3.1 [collection meta petitparser] - xxtea 2.1.0 - yaml 3.1.1 [collection source_span string_sca ```

darshankawar commented 2 years ago

Thanks for the report @raphire08 . I believe your case is same as described here https://github.com/firebase/flutterfire/issues/7407, so I suggest you to follow-up in it for further updates.

Closing this as a duplicate. If you disagree, write in comments and I'll reopen it.