Если звучит так, будто вы пытаетесь реализовать свой собственный разветвленный обмен сообщениями FCM, отправляя одно и то же сообщение многим пользователям.Это похоже на то, что уже сделано в теме обмена сообщениями в FCM, и я бы определенно подумал об ее использовании на данный момент.
Но если вы хотите реализовать ее самостоятельно, подумайте, как оптимизировать ее для базовой системы.Поскольку вы храните токены в Firestore, количество прочитанных вами документов является ключевым фактором в стоимости.
Одним из способов уменьшения количества прочитанных документов может быть сохранение токенов для группы устройств в одном документе.Например, вы можете создать документ для каждой «темы» и добавить токены в этот документ по мере их записи в базу данных.Затем, когда вам нужно отправить сообщение на все устройства для какой-либо темы, вы просто читаете этот документ-тему и получаете все токены за один раз.Это становится особенно простым, если вы называете документ в честь темы, для которой он содержит токены, например, mytopic-tokens
.
Основная проблема этого подхода заключается в том, что размер документа не может превышать 1 МБ.Допустим, что токены имеют длину не более 256 байтов (они кажутся 152-162 символами ), вы можете хранить 4000 токенов в документе.Если у вас есть больше токенов, вам нужно будет создать несколько документов.Простая схема именования может иметь большое значение, например, mytopic-tokens-1
, mytopic-tokens-2
и т. Д. Вы можете получить все эти документы с помощью одного запроса диапазона в Firestore.