Готовые чаты
Обзор
Реализация чата с учетом тонкостей очень сложна. Мы предлагаем воспользоваться чатом, встроенным в оверлей.
Вызов окна чата
+2-3 RequestОткрыть главный чат:
- JavaScript
- Unity
gp.channels.openChat();
GP_Channels.OpenChat();
Открыть любой чат по ID канала:
- JavaScript
- Unity
gp.channels.openChat({ id: 123 });
GP_Channels.OpenChat(channel_ID: 123);
Открыть чат, отфильтровав сообщения по тегам:
- JavaScript
- Unity
gp.channels.openChat({ tags: ['trade'] });
gp.channels.openChat({ tags: ['location', 'underworld'] });
GP_Channels.OpenChat(tags: "trade");
GP_Channels.OpenChat(tags: "location, underworld");
Сообщения в чате будут отправляться включая эти теги автоматически.
Опции открытия чата:
- JavaScript
- Unity
gp.channels.openChat({
// id канала
id: 123,
// теги сообщений,
// сообщения будут показаны только те, у которых есть оба тега: location и underworld
tags: ['location', 'underworld']
});
GP_Channels.OpenChat(
// id канала
channel_ID: 123,
// message tags,
// only messages with both tags: location and underworld will be shown
tags: "location, underworld",
// Коллбэк на открытие
OnOpen,
// Коллбэк на закрытие
OnClose,
// Коллбэк на ошибку открытия
OnOpenError
);
Игрок автоматически вступает в канал при открытии. Убедитесь, что в канал можно присоединяться всем и он не запаролен.
События для отслеживания открытия и закрытия окна:
- JavaScript
- Unity
// Открыли чат
gp.channels.on('openChat', () => {});
// Закрыли чат
gp.channels.on('closeChat', () => {});
// Не удалось открыть чат
gp.channels.on('error:openChat', (err) => {
// ошибки могут быть связаны с доступом или получением чата
});
GP_Channels.OpenChat(OnOpen, OnClose, OnOpenError);
private void OnOpen() => Debug.Log("ON OPEN CHAT");
private void OnClose() => Debug.Log("ON CLOSE CHAT");
private void OnOpenError() => Debug.Log("ON OPEN CHAT: ERROR");
Узнать возможно ли показать главный чат:
- JavaScript
- Unity
if (gp.channels.isMainChatEnabled) {
// Чат включен, можно показывать кнопку чата
}
if (GP_Channels.IsMainChatEnabled()) {
// Чат включен, можно показывать кнопку чата
}
Узнать ID главного чата:
- JavaScript
- Unity
gp.channels.mainChatId;
int id = GP_Channels.MainChatId();
Debug.Log(id);
Возможные ошибки приведены в таблице ниже:
базовые ошибки | сценарные ошибки |
---|---|
player_not_found | empty_channel_id |
project_not_found | channel_not_found |
origin_not_allowed | access_denied |
player_banned | |
internal_error |
Выбор основного чата
- Перейдите в панель управления в раздел Каналы
- Выберите главный чат, либо создайте новый сразу в выборе чата. Создастся базовый чат со всеми настройками для быстрого старта.
- Включите главный чат.
Открыть персональный чат
+2-3 RequestВы можете дать возможность игрокам общаться в личных сообщениях друг с другом.
- JavaScript
- Unity
gp.channels.openPersonalChat({
// id игрока
playerId: 5499172001,
// теги сообщений,
// сообщения будут показаны только те, у которых есть оба тега: location и underworld
tags: ['location', 'underworld']
});
GP_Channels.OpenPersonalChat(
// id игрока
player_ID: 5499172001,
// теги сообщений,
// сообщения будут показаны только те, у которых есть оба тега: location и underworld
tags: "location, underworld"
);
Открыть фид игрока
+2-3 RequestВы можете дать возможность игрокам смотреть ленту игрока и оставлять в ней сообщения.
- JavaScript
- Unity
gp.channels.openFeed({
// id игрока
playerId: 5499172001,
// теги сообщений,
// сообщения будут показаны только те, у которых есть оба тега: location и underworld
tags: ['location', 'underworld']
});
GP_Channels.OpenFeed(
// id игрока
player_ID: 5499172001,
// теги сообщений,
// сообщения будут показаны только те, у которых есть оба тега: location и underworld
tags: "location, underworld"
);
Узнать о новом сообщении
FREEЧтобы игрок постоянно не проверял чат или личные сообщения, можно подписаться на сообщения в чате.
При отправке сообщения всем игрокам в канале приходит уведомление о новом сообщении:
- JavaScript
- Unity
gp.channels.on('event:message', (message) => {
// ID канала
message.channelId;
// ID сообщения
message.id;
// ID автора сообщения
message.authorId;
// Поля автора (аватар, имя, кастомные поля)
message.player;
// Текст сообщения
message.text;
// Теги сообщения
message.tags;
// Дата отправки сообщения
message.createdAt;
// Назначение сообщения: 'CHANNEL' | 'PERSONAL' | 'FEED'
message.target;
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnMessage += OnMessage;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnMessage -= OnMessage;
}
private void OnMessage(GP_Data data)
{
var messageData = data.Get<Message_Data>();
Debug.Log("ON MESSAGE EVENT: CHANNEL ID: " + messageData.channelId);
Debug.Log("ON MESSAGE EVENT: AUTHOR ID: " + messageData.authorId);
Debug.Log("ON MESSAGE EVENT: ID: " + messageData.id);
Debug.Log("ON MESSAGE EVENT: TEXT: " + messageData.text);
for (int i = 0; i < messageData.tags.Length; i++)
{
Debug.Log("ON MESSAGE EVENT: TAGS: " + messageData.tags[i]);
}
Debug.Log("ON MESSAGE EVENT: CREATED AT: " + messageData.createdAt);
Debug.Log("ON MESSAGE EVENT: PLAYER: AVATAR: " + messageData.player.avatar);
Debug.Log("ON MESSAGE EVENT: PLAYER: CREDITIALS: " + messageData.player.credentials);
Debug.Log("ON MESSAGE EVENT: PLAYER: ID: " + messageData.player.id);
Debug.Log("ON MESSAGE EVENT: PLAYER: NAME: " + messageData.player.name);
Debug.Log("ON MESSAGE EVENT: PLAYER: PLATFORM TYPE: " + messageData.player.platformType);
Debug.Log("ON MESSAGE EVENT: PLAYER: PROJECT ID: " + messageData.player.projectId);
Debug.Log("ON MESSAGE EVENT: PLAYER: SCORE: " + messageData.player.score);
}
Вы можете обратить внимание на message.target
:
CHANNEL
: в чате появилось новое сообщениеPERSONAL
: игроку написали в личные сообщенияFEED
: игроку написали в фид
Оставайтесь на связи
С другими разделами документации вы можете ознакомиться здесь. Для начала работы вы можете ознакомиться с нашими туториалами.
Сообщество GamePush в Telegram
: @gs_community.
Для ваших обращений e-mail
: [email protected]
Желаем вам успехов!