Как обновить и поделиться токеном доступа из основного изолята и фонового изолята - PullRequest
1 голос
/ 23 мая 2019

Мое приложение флаттера использует токены обновления и доступа для проверки запросов к веб-API c #. Это работает отлично. Однако, как только я представил android_alarm_manager для некоторой фоновой синхронизации данных (с использованием изолятов), я обнаружил, что через некоторое время мои токены обновления стали недействительными (я сохраняю свои токены обновления в локальном хранилище).

Это связано с тем, что несколько изолятов одновременно запрашивают новый токен доступа (поскольку я не могу заблокировать метод из-за того, что изоляты не разделяют память). Теперь я не уверен, каков наилучший подход к синхронизации токенов.

Я думал, что у каждого изолята может быть свой токен обновления и доступа, но это не очень хорошая идея, поскольку мне придется хранить имя пользователя и пароль локально. У меня была еще одна идея - установить стратегию синхронизации между изолятами с использованием связи изолятов или локального хранилища, но это похоже на избыточное убийство.

Спасибо

1 Ответ

0 голосов
/ 16 июля 2019

Взгляните на образец геозоны Flutter:

Репо: https://github.com/bkonyi/FlutterGeofencing/tree/master/lib/src Артикул: https://medium.com/flutter/executing-dart-in-the-background-with-flutter-plugins-and-geofencing-2b3e40a1a124

Он использует SendPorts для связи через изоляторы, что звучит так, как вам нужно:

https://api.flutter.dev/flutter/dart-ui/IsolateNameServer-class.html

Затем вы можете обновить токен в любом изоляте и отправить его через SendPort всем изолятам для синхронизации.

...