ryanheise / audio_service

Flutter plugin to play audio in the background while the screen is off.
796 stars 475 forks source link

Audio Service interrupting firestore stream when starting #477

Closed henoktadesse closed 3 years ago

henoktadesse commented 4 years ago

Which API doesn't behave as documented, and how does it misbehave? Firestore streams stop receiving data as soon as audio service starts.

Minimal reproduction project I created a new project, a copy of the example code with Firestore added. I only configured it for iOS since the error was only occurring on iOS in my main project. link - audio-test

To Reproduce (i.e. user steps, not code) Steps to reproduce the behavior:

  1. open Firestore stream page -> working(receiving data)
  2. Click Play or start audio service
  3. open Firestore stream page again -> not working/stuck at waiting/receiving no data

Error messages

none

Expected behavior Firestore receiving data while AudioService is running

Screenshots none

Runtime Environment

Flutter SDK version

[✓] Flutter (Channel beta, 1.22.0-12.1.pre, on Mac OS X 10.15.6 19G2021, locale
    en-ET)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 12.0)
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.0)
[✓] VS Code (version 1.49.2)
[✓] Connected device (3 available)

Additional context none.

henoktadesse commented 4 years ago

I opened an issue here https://github.com/ryanheise/audio_service/issues/476#issue-709738567, it was automatically closed because I removed some of the optional sections such as screenshots, I updated the issue but didn't make much of a difference so I had to repost it here again.

ryanheise commented 4 years ago

Hi @henoktadesse The bot detected the first section of the template was missing and it does not recheck after edits (I have found another bot that does that, but it is missing certain other features I need unfortunately).

But regarding this issue, it is almost certainly a bug in the firestore plugin. If I were to guess, I would say that that plugin was implemented as a singleton on the platform side, stored in a global variable. So the plugin just doesn't know how to be instantiated twice.

I used to have a section at the bottom of the audio_service README on how to report a bug to another plugin if it misbehaves like this and removed it after those plugins appeared to have time to adapt (it's been almost 2 years since the Flutter background execution API was introduced). Ironically, it appears that the remaining plugins that still haven't been fixed are the first-class ones (i.e. developed by Google). These sorts of bugs are usually very easy to fix, but unfortunately I don't have time to fix every plugin that doesn't work in the background, so it will take someone to report the bug and someone to then submit a pull request (since otherwise it probably won't get fixed.)

At the very least, I should add a section back into the README on how to report such a bug.

henoktadesse commented 4 years ago

@ryanheise thank you for the quick response, before upgrading firebase and audio_service it used to work without any issues. If the old Firestore plugin was working with audio_service, might the incompatibility be from the new updates to Firestore or audio_service? and is there any workaround to this?

ryanheise commented 4 years ago

Looking at the code, sure enough it uses a singleton:

https://github.com/FirebaseExtended/flutterfire/blob/master/packages/cloud_firestore/cloud_firestore/ios/Classes/FLTFirebaseFirestorePlugin.m

+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {
  FLTFirebaseFirestoreReaderWriter *firestoreReaderWriter = [FLTFirebaseFirestoreReaderWriter new];
  FlutterMethodChannel *channel =
      [FlutterMethodChannel methodChannelWithName:kFLTFirebaseFirestoreChannelName
                                  binaryMessenger:[registrar messenger]
                                            codec:[FlutterStandardMethodCodec
                                                      codecWithReaderWriter:firestoreReaderWriter]];

  FLTFirebaseFirestorePlugin *instance = [FLTFirebaseFirestorePlugin sharedInstance];
  instance.channel = channel;
  [registrar addMethodCallDelegate:instance channel:channel];
#if TARGET_OS_OSX
// TODO(Salakar): Publish does not exist on MacOS version of FlutterPluginRegistrar.
#else
  [registrar publish:instance];
#endif
}

This method is called each time a new instance of the plugin is created (i.e. per flutter engine). As you can see, it gets a singleton instance of the state and stores the "latest" channel in it overwriting what was previously there:

  instance.channel = channel;

At this point, the plugin forgets how to communicate to the main flutter engine / isolate and only knows how to talk to the new one (in this case, the background isolate provided by audio_service).

So a workaround is to start listening to firestore messages in the background isolate, but of course once the audio service stops, firestore will not know how to talk to the main isolate again.

It is best to at least submit a bug report to that plugin, and you may copy and paste my explanation above and your reproduction project.

henoktadesse commented 4 years ago

I will submit a bug report and link your explanation. Let's hope they fix it, about 90% of our project's functionality is affected because of this.

ryanheise commented 4 years ago

In the short term as a workaround, you can create a fork of that plugin and modify that one line of code to check if the channel value was already set and if so don't overwrite it. That way, it will at least continue delivering messages to the main isolate (although if the background isolate attempted to listen to messages it would still fail, which could be fine in your case.)

A correct solution would be for the plugin to maintain a list of instances so that it could communicate with all of them.

kbanta11 commented 3 years ago

I think this is also affecting Android as well, as I've been running into the following error that seems similar to this iOS one:

E/flutter (18111): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: PlatformException(firebase_firestore, length=23; index=23, {}, null)
E/flutter (18111): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:582:7)
E/flutter (18111): #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:159:18)
E/flutter (18111): <asynchronous suspension>
E/flutter (18111): #2      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:332:12)
E/flutter (18111): #3      MethodChannelQuery.snapshots.<anonymous closure> (package:cloud_firestore_platform_interface/src/method_channel/method_channel_query.dart:139:54)
E/flutter (18111): #4      _runGuarded (dart:async/stream_controller.dart:847:24)
E/flutter (18111): #5      _BroadcastStreamController._subscribe (dart:async/broadcast_stream_controller.dart:213:7)
E/flutter (18111): #6      _ControllerStream._createSubscription (dart:async/stream_controller.dart:860:19)
E/flutter (18111): #7      _StreamImpl.listen (dart:async/stream_impl.dart:493:9)
E/flutter (18111): #8      new _ForwardingStreamSubscription (dart:async/stream_pipe.dart:118:10)
E/flutter (18111): #9      _ForwardingStream._createSubscription (dart:async/stream_pipe.dart:88:16)
E/flutter (18111): #10     _ForwardingStream.listen (dart:async/stream_pipe.dart:83:12)
E/flutter (18111): #11     new _ForwardingStreamSubscription (dart:async/stream_pipe.dart:118:10)
E/flutter (18111): #12     _ForwardingStream._createSubscription (dart:async/stream_pipe.dart:88:16)
E/flutter (18111): #13     _ForwardingStream.listen (dart:async/stream_pipe.dart:83:12)
E/flutter (18111): #14     new _ForwardingStreamSubscription (dart:async/stream_pipe.dart:118:10)
E/flutter (18111): #15     _ForwardingStream._createSubscription (dart:async/stream_pipe.dart:88:16)
E/flutter (18111): #16     _ForwardingStream.listen (dart:async/stream_pipe.dart:83:12)
E/flutter (18111): #17     _StreamBuilderBaseState._subscribe (package:flutter/src/widgets/async.dart:139:37)
E/flutter (18111): #18     _StreamBuilderBaseState.didUpdateWidget (package:flutter/src/widgets/async.dart:124:7)
E/flutter (18111): #19     StatefulElement.update (package:flutter/src/widgets/framework.dart:4815:58)
E/flutter (18111): #20     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #21     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #22     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (18111): #23     Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #24     StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
E/flutter (18111): #25     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #26     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #27     Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #28     StatelessElement.update (package:flutter/src/widgets/framework.dart:4708:5)
E/flutter (18111): #29     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #30     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #31     Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #32     ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
E/flutter (18111): #33     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #34     RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5647:32)
E/flutter (18111): #35     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6246:17)
E/flutter (18111): #36     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #37     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6125:14)
E/flutter (18111): #38     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #39     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #40     Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #41     StatelessElement.update (package:flutter/src/widgets/framework.dart:4708:5)
E/flutter (18111): #42     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #43     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6125:14)
E/flutter (18111): #44     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #45     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #46     Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #47     StatelessElement.update (package:flutter/src/widgets/framework.dart:4708:5)
E/flutter (18111): #48     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #49     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #50     Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #51     ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
E/flutter (18111): #52     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #53     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #54     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (18111): #55     Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #56     StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
E/flutter (18111): #57     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #58     RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5647:32)
E/flutter (18111): #59     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6246:17)
E/flutter (18111): #60     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #61     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #62     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (18111): #63     Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #64     StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
E/flutter (18111): #65     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #66     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #67     Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #68     StatelessElement.update (package:flutter/src/widgets/framework.dart:4708:5)
E/flutter (18111): #69     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #70     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #71     Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #72     ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
E/flutter (18111): #73     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #74     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #75     Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #76     ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
E/flutter (18111): #77     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #78     RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5647:32)
E/flutter (18111): #79     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6246:17)
E/flutter (18111): #80     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #81     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #82     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (18111): #83     Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #84     StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
E/flutter (18111): #85     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #86     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #87     Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #88     ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
E/flutter (18111): #89     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #90     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #91     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (18111): #92     Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #93     StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
E/flutter (18111): #94     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #95     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6125:14)
E/flutter (18111): #96     Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #97     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #98     Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #99     StatelessElement.update (package:flutter/src/widgets/framework.dart:4708:5)
E/flutter (18111): #100    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #101    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6125:14)
E/flutter (18111): #102    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #103    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #104    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (18111): #105    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #106    StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
E/flutter (18111): #107    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #108    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #109    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (18111): #110    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #111    StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
E/flutter (18111): #112    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #113    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #114    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #115    ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
E/flutter (18111): #116    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #117    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #118    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #119    ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
E/flutter (18111): #120    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #121    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #122    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (18111): #123    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #124    StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
E/flutter (18111): #125    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #126    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #127    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #128    StatelessElement.update (package:flutter/src/widgets/framework.dart:4708:5)
E/flutter (18111): #129    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #130    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #131    _InheritedProviderScopeElement.performRebuild (package:provider/src/inherited_provider.dart:426:11)
E/flutter (18111): #132    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #133    ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
E/flutter (18111): #134    _InheritedProviderScopeElement.update (package:provider/src/inherited_provider.dart:446:11)
E/flutter (18111): #135    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #136    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #137    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #138    StatelessElement.update (package:flutter/src/widgets/framework.dart:4708:5)
E/flutter (18111): #139    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
E/flutter (18111): #140    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (18111): #141    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (18111): #142    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2730:33)
E/flutter (18111): #143    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:913:20)
E/flutter (18111): #144    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:302:5)
E/flutter (18111): #145    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1117:15)
E/flutter (18111): #146    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1055:9)
E/flutter (18111): #147    SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:971:5)
E/flutter (18111): #148    _rootRun (dart:async/zone.dart:1190:13)
E/flutter (18111): #149    _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter (18111): #150    _CustomZone.runGuarded (dart:async/zone.dart:997:7)
E/flutter (18111): #151    _invoke (dart:ui/hooks.dart:251:10)
E/flutter (18111): #152    _drawFrame (dart:ui/hooks.dart:209:3)
ryanheise commented 3 years ago

@kbanta11 I'll need more details to investigate that. Do you have a minimal reproduction project?

henoktadesse commented 3 years ago

For anyone who is having the same issue, check out this quick fix https://github.com/FirebaseExtended/flutterfire/issues/3671#issuecomment-746990151 it's working so far.

ryanheise commented 3 years ago

There is also an open PR here which in theory should address this https://github.com/FirebaseExtended/flutterfire/pull/4209

But as @Chess-er mentioned in https://github.com/FirebaseExtended/flutterfire/issues/3671#issuecomment-738788712 it doesn't fix this particular use case somehow (I have not tried, as I am more focused on #415 which removes the need for isolates in audio_service, although it would still be good if the flutterfire bug were fixed.)

Anyone who wants a proper fix should probably consider letting the author of that PR know that it doesn't completely solve the issue and provide details of what goes wrong.

ened commented 3 years ago

hi @henoktadesse it would be great if you can give the PR a try:

dependency_overrides:
  cloud_firestore:
    git:
      url: https://github.com/ened/flutterfire.git
      ref: fix/4108-cloud-firestore
      path: packages/cloud_firestore/cloud_firestore
  cloud_firestore_platform_interface:
    git:
      url: https://github.com/ened/flutterfire.git
      ref: fix/4108-cloud-firestore
      path: packages/cloud_firestore/cloud_firestore_platform_interface

I tried to revive the example in https://gitlab.com/henoktadesse/audiotest2 but probably lack access to your firestore backend to retrieve actual data. Thank you

henoktadesse commented 3 years ago

@ened I gave it a try this morning and it is working, but I am accessing Firestore only from the main isolate so I can't say for those who are using from another isolates. Thanks :)

d9media commented 3 years ago

I can confirm the issue. I didn't expect AudioService to be the culprit, because Firebase wasn't throwing any error.

@ened 's PR was indeed working for me.

leidig54 commented 3 years ago

hi @henoktadesse it would be great if you can give the PR a try:

dependency_overrides:
  cloud_firestore:
    git:
      url: https://github.com/ened/flutterfire.git
      ref: fix/4108-cloud-firestore
      path: packages/cloud_firestore/cloud_firestore
  cloud_firestore_platform_interface:
    git:
      url: https://github.com/ened/flutterfire.git
      ref: fix/4108-cloud-firestore
      path: packages/cloud_firestore/cloud_firestore_platform_interface

I tried to revive the example in https://gitlab.com/henoktadesse/audiotest2 but probably lack access to your firestore backend to retrieve actual data. Thank you

Hi @ened. I'm unable to use your PR due to package dependency conflicts with the rest of the firebase plugins. This is my current setup:

  cloud_firestore: ^0.16.0
  firebase_analytics: ^6.0.0
  firebase_auth: ^0.20.0+1
  firebase_in_app_messaging: ^0.3.0+1
  firebase_core: ^0.7.0
  firebase_crashlytics: ^0.4.0+1
  firebase_messaging: ^8.0.0-dev.14
  firebase_performance: ^0.5.0+1

Please could you share your/a compatible pubspec.yaml? I'll need to downgrade mine to match. Thank you :)

ened commented 3 years ago

@leidig54:

try this one

dependencies:
  cloud_firestore: ^0.15.0
  firebase_analytics: ^6.3.0
  firebase_auth: ^0.18.2
  firebase_core: ^0.6.0
  firebase_crashlytics: ^0.3.0
  firebase_dynamic_links: ^0.6.3
  firebase_messaging: ^8.0.0-dev.12
  firebase_remote_config: ^0.5.0

dependency_overrides:
  firebase_core: 0.6.0
  firebase_auth:
    git:
      url: https://github.com/ened/flutterfire.git
      ref: 3fa91544d8b385d487818155fff4cbb4351973aa # fix/4416-firebase-auth
      path: packages/firebase_auth/firebase_auth
  firebase_auth_platform_interface:
    git:
      url: https://github.com/ened/flutterfire.git
      ref: 3fa91544d8b385d487818155fff4cbb4351973aa # fix/4416-firebase-auth
      path: packages/firebase_auth/firebase_auth_platform_interface

You see we also use a fork for firebase_auth. The cloud_firestore change is already in the main cloud_firestore branch.

ened commented 3 years ago

@leidig54 also, the cloud_firestore PR is merged already

andy-t-wang commented 3 years ago

Hey @ened do you think you could do it for the storage library as well?

ened commented 3 years ago

@andy-t-wang only once https://github.com/FirebaseExtended/flutterfire/pull/4643 is fixed. What problems do you have with storage? Also, we should probably close this ticket and discuss over in the Firebase project.

ryanheise commented 3 years ago

Closing now that https://github.com/FirebaseExtended/flutterfire/pull/4209 has been merged.

For anyone who is running into isolate issues with other plugins, you may also try the one-isolate branch of audio_service. Plugins that don't behave well in multiple isolates should hopefully have no issue with this branch.

github-actions[bot] commented 2 years ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs, or use StackOverflow if you need help with audio_service.