Настройка нескольких проектов FCM в одном приложении [дубликат]

for event, element in etree.iterparse(path_to_file, tag="BlogPost"):
    for child in element:
        print child.tag, child.text
    element.clear()

окончательное очищение остановит вас от использования слишком большого количества памяти.

[update:], чтобы получить «все между ... как строку», я думаю, вы хотите один из:

for event, element in etree.iterparse(path_to_file, tag="BlogPost"):
    print etree.tostring(element)
    element.close()

или

for event, element in etree.iterparse(path_to_file, tag="BlogPost"):
    print ''.join([etree.tostring(child) for child in element])
    element.close()

или, возможно, даже:

for event, element in etree.iterparse(path_to_file, tag="BlogPost"):
    print ''.join([child.text for child in element])
    element.close()
6
задан AL. 16 October 2016 в 03:31
поделиться

2 ответа

ОБНОВЛЕНИЕ: перейти к официальному и рекомендованному способу делать это вместо hacky и неофициальный подход для предотвращения / предотвращения неизвестных проблем. Из моего ответа здесь .

На самом деле в документации есть часть

:

Получение сообщений от нескольких отправителей

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

Чтобы сделать это возможным, убедитесь, что каждый отправитель генерирует свой собственный идентификатор отправителя . Информацию о том, как получить идентификатор отправителя FCM, см. В документации клиента для вашей платформы. При запросе регистрации клиентское приложение извлекает токен несколько раз, каждый раз с другим идентификатором отправителя в поле аудитории.

Наконец, поделитесь регистрационным маркером с соответствующими серверами приложений (чтобы завершить работу с клиентом регистрации / серверное рукопожатие), и они смогут отправлять сообщения в клиентское приложение, используя свои собственные ключи аутентификации.

Обратите внимание, что существует ограничение на 100 отправителей.

Я думаю, что запутанная, но важная часть здесь:

При запросе регистрации клиентское приложение извлекает токен несколько раз, каждый раз с другим идентификатором отправителя в поле аудитории.

< / blockquote>

Другими словами, вам нужно будет вызвать getToken() , передавая идентификатор отправителя, и просто "FCM" (например, getToken("2xxxxx3344", "FCM")) в качестве параметров. Вам нужно будет убедиться, что вы вызываете это для каждого отправителя (проекта), который вам нужен.

Также обратите внимание на getToken() документы:

Это блокирующая функция, поэтому не вызывайте ее в основном потоке.

Некоторые дополнительные преимущества:

  • Он не выполняет автоматическое повторное попытку, если он не работает как и по умолчанию.
  • Он возвращает исключение IOException, когда он терпит неудачу.
6
ответ дан Community 16 August 2018 в 11:35
поделиться
  • 1
    Итак, это делается с использованием единого регистрационного токена? Вы не разделяете код, в котором вы запрашиваете токен? – Zyoo 23 June 2016 в 03:30
  • 2
    Ага. Одиночная регистрация. Я просто использовал код из быстрого запуска, который я связал. – AL. 23 June 2016 в 03:31
  • 3
    Как вы отправляете уведомление? Я получил неудачный и неверный идентификатор отправителя ". – Zyoo 23 June 2016 в 03:40
  • 4
    Кажется, что я должен использовать FCM. Я постараюсь сделать это сейчас – Zyoo 23 June 2016 в 04:05
  • 5
    @ Ланселот. Добро пожаловать. Обратите внимание, что это всего лишь хакерский подход и что не рекомендуется изменять файл google-services.json. Ура! – AL. 21 October 2016 в 12:51

По состоянию на декабрь 2016 года существует очень простой, не хакерский способ сделать это, который все еще работает сейчас (июль 2018).

FirebaseOptions options = new FirebaseOptions.Builder()
       .setApplicationId("1:something:android:something_else") // Required for Analytics.
       .setApiKey("your apikey") // Required for Auth.
       .setDatabaseUrl("https://your-database.firebaseio.com/") // Required for RTDB.
       .build();
FirebaseApp.initializeApp(this /* Context */, options, "secondary");

Источник: Официальный блог Firebase

1
ответ дан Leonardo Acevedo 16 August 2018 в 11:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: