2016-09-22 2 views
2

Я создаю приложение с произвольным количеством «микросообщений» на нем. В настоящее время пользователь может принадлежать только одному, поэтому, когда они сначала регистрируются, они вводят секретный код, который связывает их с соответствующим сообществом.Несколько проектов Firebase в одном приложении

Разве разумно отделить эти «микросообщества» (которые принадлежат будущим клиентам, играющим за место в приложении), в отдельные проекты Firebase или хранить все данные вместе?

ответ

3

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

Предлагаю вам сохранить это «сообщества» в качестве элементов в базе данных со всей их текущей информацией. Например:

{ 
    "Communities":{ 
      "CommunityKey1":{ 
       "communityName": 
       "createdDate": 
       .... 
      } 
      "CommunityKey2":{ 
       "communityName": 
       "createdDate": 
       .... 
      } 
      "CommunityKey3":{ 
       "communityName": 
       "createdDate": 
       .... 
      } 
      .... 
     } 
} 

И когда вы добавляете пользователей в свою базу данных, просто добавьте их в соответствующем поле «currentCommunity» или что-то подобное, где вы храните связанный communityID для этого пользователя. Затем, когда вы хотите, чтобы отфильтровать пользователей для одного сообщества просто использовать:

FirebaseDatabase.getInstance().getReference().child("users").child("currentCommunity"); 

Вы можете фильтровать еще больше, используя .equalTo("CommunityID") в конце этого запроса. Я не эксперт в Firebase, но я делаю приложение с аналогичной фильтрацией пользователей (используя группы вместо сообществ, и они могут принадлежать более чем одному), и лучший способ сделать это - использовать эту модель ,

Надеюсь, что это вам поможет! Удачи!

+0

Большое спасибо! Я тоже думал об этом. –

2

Я созерцал и пытался решить одно и то же. До сих пор я считаю, что лучший способ структурировать что-то вроде ваших микросообществ с возможным аспектом «оплаты» - это иметь ассоциацию входа/пользователя/профиля/членства в одном проекте. Затем его членский раздел содержит информацию о подключении другого проекта Firebase. Затем каждое сообщество представляет собой отдельный проект, у которого есть своя собственная аналитика использования, пространство, использование полосы пропускания и т. Д. ... Да, вы можете получить доступ к нескольким проектам firebase в своем приложении. https://firebase.google.com/docs/configure/

Таким образом, следующий вопрос будет, могу ли я динамически/cli клонировать проект firebase и начинать его исходные данные, когда кто-то создает новое «сообщество». https://firebase.google.com/docs/cli/

Good Luck :)

0

Firebase теперь поддерживает доступ к нескольким проектам в одном приложении. Не нужно идти по маршруту микро-сообщества. Вот как это сделать: https://firebase.google.com/docs/configure/

Я использую его в своем проекте на Android, поэтому, если у вас возникли проблемы с настройкой и внедрением его в Android, не стесняйтесь оставить комментарий!

EDIT

При настройке Firebase с приложением вы дефолтом к одной учетной записи базы данных. Если вы хотите использовать второй (или более), продолжайте чтение.

В вашей деятельности или фрагменте вы должны инициализировать экземпляр FirebaseOptions со всей информацией об учетной записи, инициализировать FirebaseApp с именем тега, который представляет вторую учетную запись, а затем получить экземпляр вашего FirebaseApp и, наконец, получить экземпляр DatabaseReference вашей второй учетной записи, чтобы вы могли использовать ее по своему усмотрению.Вот блок кода я использую: (ПРИМЕЧАНИЕ: информация, вводимую в качестве параметров для вас FirebaseOptions экземпляра связана с ВТОРОЙ учетной записью базы данных):

private void initSecondFirebaseAcct() 
{ 
    FirebaseOptions options = new FirebaseOptions.Builder() 
      .setApplicationId("<your application id>") 
      .setApiKey("<your api key>") 
      .setDatabaseUrl("<your DB url that ends in 'firebaseio.com/' ") 
      .build(); 

    try 
    { 
     FirebaseApp.initializeApp(this, options, "<database tag>"); 
    } 
    catch (Exception e) 
    { 
     Log.d("Firebase error", "App already exists"); 
    } 

    mMySecondApp = FirebaseApp.getInstance("<database tag>"); 
    mSecondDBRef = FirebaseDatabase.getInstance(mMySecondApp).getReference(); 
} 

Надежда, что помогает!

+0

Возможно ли иметь общую аутентификацию пользователей среди проектов? – Ayyappa

+0

@David, я не могу представить, как настроить несколько проектов в одном приложении IOS. Не могли бы вы дать мне подсказку или ответ? https://stackoverflow.com/questions/44866220 – bibscy

+0

@bibscy Я отредактировал свой ответ, который может вам помочь. Но я сделал это только в Android, а не iOS, так что это может быть не то же самое. Надеюсь, ты это выяснишь! –

Смежные вопросы