Reland: iOS Background Platform Channels (#29665) #30697
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This relands the iOS Background Platform Channels with a fix.
commits:
fixes flutter/flutter#91635
see also: b/209604261
The internal bug mentions "MissingPluginException"s being thrown after this PR had landed. That means that the message handler hasn't been sent by the time the message is sent from Flutter. I suspect that is because they are setting the message handlers during setup after the Dart isolate has actually been launched. That means messages can start being sent immediately from Flutter on the UI thread and the handler hasn't been set yet. By virtue of previously handling all platform messages on the platform thread that would allow people to set message handlers later in the event where the engine is run, which while wasn't intended usage, was something we supported. This supports that usage with background platform channels.
It is also possible they just have a race in their code where they are setting the message handler at an arbitrary time after the engine is run. That's probably unlikely since they would see sometimes MissingPluginExceptions without this change.
I was unable to verify for myself with the google app unfortunately because of b/213948589.
Pre-launch Checklist
writing and running engine tests.
///
).If you need help, consider asking for advice on the #hackers-new channel on Discord.