Flutter: синхронизация автономного локального хранилища с онлайн, например. база огня

Это обычный / разумный вариант использования? Приложение позволяет пользователю сохранять избранное локально, чтобы пользователю не приходилось регистрироваться.

Затем пользователь желает поделиться своими избранными.

Поэтому данные избранного необходимо синхронизировать с локального на удаленный. Обычное локальное хранилище для flutter - sqflite, а firebase / store - удаленное. Однако это кажется громоздким, поскольку преобразование sql в nosql необходимо.

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


person user2342708    schedule 06.03.2019    source источник
comment
Да, заставить пользователя создать учетную запись проще, но вы, без сомнения, потеряете значительную часть пользователей на этом этапе воронки. Может, им понравилось бы ваше приложение, кто знает? Жалко, что они не вернутся. :)   -  person Sergio Tulentsev    schedule 06.03.2019


Ответы (2)


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

Когда они что-то добавляют в избранное, просто покажите им диалоговое окно с сообщением: «Если у вас нет учетной записи, ваши избранные хранятся только на устройстве. Если вы хотите, чтобы избранное было доступно повсюду, создайте учетную запись», затем покажите параметры для «Создать учетную запись» или "Нет, спасибо"

Создать учетную запись: переход на страницу создания учетной записи.

Нет, спасибо. Добавляет устройство в список избранного и позволяет пользователю продолжать делать то, что делает ваше приложение.

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

Еще один способ подумать об этом - сделать регистрацию настолько простой, что они не будут возражать, а также гарантировать, что оно того стоит. Не будет использоваться для спама или продажи информации. Возьмем, к примеру, какое приложение, даже если вам нужен номер мобильного телефона для отправки сообщений, он просто используется как уникальный идентификатор и не имеет ничего общего с номером устройства.

Спросите их номер телефона, адрес электронной почты или любой другой адрес электронной почты, вы, скорее всего, получите поддельную информацию.

А что говорит ваша аналитика? Получаете ли вы запросы от пользователей о том, что они потеряли всю свою информацию на другом устройстве? Сколько людей используют ваш любимый функционал?

person Filled Stacks    schedule 06.03.2019
comment
Спасибо, полезные комментарии. Не уверен, что вы говорите о модели Whatsapp - спросите их номер телефона, адрес электронной почты или любой другой адрес электронной почты, вы, скорее всего, получите поддельную информацию. Что вы порекомендуете? - person user2342708; 07.03.2019
comment
Больше ничего не рекомендую, это либо номер телефона, либо адрес электронной почты. Но я не думаю, что есть пользователи, которые ожидали бы, что их данные будут перемещаться между устройствами, если у них нет учетной записи, поэтому вам не о чем беспокоиться. У пользователей есть шаблоны, мы создаем приложения, которые удовлетворяют этим шаблонам. Просто ведите локальный список избранного и каждый раз напоминайте им, что он не будет храниться на вашем сервере. - person Filled Stacks; 07.03.2019
comment
Хорошо, но вторая часть моего вопроса: сохранить локально в sqflite, а затем преобразовать его в nosql в firebase? Есть ли более прямой путь? - person user2342708; 07.03.2019
comment
Я не вижу точно громоздкого преобразования sqflite в nosql. Я не знаю, где это будет происходить на постоянной основе, что означает, что вы пишете код для этого на каждом этапе. Это должно происходить автоматически в вашем коде, так как вы будете иметь дело со службой постоянства, которая преобразует ваши модели в то, что вам нужно. Вы, как разработчик, будете иметь дело только с транзакциями и MutableData, используя модели, определенные вашим приложением. Не могли бы вы добавить громоздкий код или псевдокод, чтобы объяснить или продемонстрировать, что вы имеете в виду. Я могу упустить вашу точку зрения. - person Filled Stacks; 07.03.2019

Возможно, я пришел на вечеринку немного поздно, но вот мои 2 цента.

Преобразование Sql в NoSql не является громоздким. На самом деле для этого есть разумный вариант использования. У меня те же требования к приложению, которое я собираюсь создать.

В любом случае, для хранения данных в RDMDB или NoSQLDB вам потребуются данные model, чтобы обеспечить согласованность в вашем приложении. Если пользователь использовал приложение в автономном режиме, а позже он решил подключиться к Интернету, вы можете разрешить ему создать Remote Account, а затем проверить, есть ли у него local избранное. Если они это сделают, вы ДОЛЖНЫ спросить их, хотят ли они импортировать их в remote хранилище. Если они захотят это сделать, вам придется read их избранное из local хранилища и сохранить их в List<Model>, а затем map() обратно в online хранилище.

NoSqlDB может принимать данные типа json, поэтому ваш model должен включать преобразование fromMap() и toJson() для этой цели (и других).

Когда я решу это сделать, я поделюсь своим кодом (если я не забуду вернуться сюда).

person RealSollyM    schedule 03.02.2021