Права
Приложение без прав может только показывать своё окно: поздороваться, показать уведомление, открыть сцену для этого человека. Всё, что касается встречи, — это права. Вы перечисляете их в манифесте; перед установкой человек видит их простыми словами и нажимает Разрешить и добавить.
Список
| Право | Что видит человек | Что открывает |
|---|---|---|
participants.read | Видеть, кто во встрече и кто говорит | context.participants, app.participants(), события participant.joined, participant.left, speaking |
app.broadcast | Обмениваться данными со своими копиями у других участников | app.broadcast(), событие broadcast |
chat.read | Читать чат встречи | событие chat.message |
chat.send | Писать в чат от вашего имени с пометкой приложения | app.chat.send() — сообщение уходит от человека и начинается с [Название приложения] |
captions.read | Читать живые субтитры | событие captions, пока во встрече идут живые субтитры |
badges.write | Показывать значки на плитках участников | app.badges.set(), app.badges.clear() |
stage.start | Открывать общую сцену для всех (только когда вы ведущий) | app.stage.open({ everyone: true }) |
storage | Хранить для вас до 64 КБ своих данных | app.storage.get/set/delete |
Доступно всегда, без прав: ReMeet.ready(), app.notify(), app.stage.open() для себя, app.stage.close(), событие theme.
Камера и микрофон
Если камера или микрофон нужны самой странице (например, диктофон или игра на позы), добавьте media:
"media": ["camera", "microphone"]Человек увидит «Использовать камеру внутри приложения (браузер спросит ещё раз)». Когда он разрешит, рамка получит доступ, а браузер задаст свой вопрос при первом использовании. Без media вызов getUserMedia() внутри рамки не сработает. Аудио и видео самой встречи приложение не получает никогда.
Проверка во время работы
const app = await ReMeet.ready();
if (app.can('chat.send')) {
showShareButton();
}
app.permissions; // ['participants.read', 'app.broadcast', …] — что разрешил этот человекВызов без права завершается ошибкой с кодом 403:
try {
await app.chat.send('Результаты готовы');
} catch (error) {
if (error.code === 403) app.notify('Разрешите приложению писать в чат, чтобы делиться результатами');
}События, для которых нужно право, без него просто не приходят.
Хороший тон
- Просите минимум. Каждая лишняя строка в окне установки стоит установок.
- Не делайте главную функцию зависимой от права, без которого можно обойтись: проверьте
app.can()и предложите путь попроще. - Если обновление добавляет право, у тех, кто поставил приложение раньше, его нет, пока они не добавят приложение снова, — см. обновление приложения.