Sugestões de convite de jogador

Além de métodos de promoção comuns para aumentar sua base de jogadores, você pode implementar sugestões de convite diretamente dentro da sua experiência, incentivando os jogadores a convidar seus amigos e aumentar a jogabilidade de experiência cooperativa.

O sistema de solicitação de convite apresenta o seguinte:

  • Convidados dinâmicos — Sugira aos jogadores que convidem vários amigos de uma lista de seleção ou convide um amigo específico.
  • Dados de inicialização — Inclui dados de inicialização opcionais que podem ser lidos Class. Player:GetJoinData()quando o amigo convidado entrar. Exemplos de casos de uso incluem encaminhar amigos convidados para um local coordenado ou personalizar a experiência de ingresso para o convidado.
  • Texto personalizável — Personalize a mensagem de sugestão de convite e a mensagem de notificação . Por exemplo, um sugestão de convite para o jogador pode ser "Peça a seus amigos para participar da aventura!" e a mensagem de notificação para o(s) amigo(s) convidado(s) pode ser "{displayName} quer que você participe da aventura em {experienceName}!".
Alerta para convidar vários amigos
Aviso para convidar um amigo específico

Configurando opções de convite

Por padrão, um alerta de convite para o jogador mostra um menu com seus amigos e botões Convidar. Para personalizar a mensagem de sugestão, enviar a um amigo específico ou incluir dados de inicialização no convite, você precisará configurar um Class. ExperienceInviteOptions objeto com as propriedades desejadas.

PropriedadeTipoDescrição
Class. ExperienceInviteOptions. PromptMessage|PromptMessagestringTexto personalizado mostrado na sugestão de convite para o jogador que está enviando, por exemplo, "Convide seus amigos para participar da aventura!" para um sugestão de convite com vários amigos, ou "Convide esse amigo para participar da aventura!" para um sugestão de convite para um amigo específico. Observe que, se a mensagem de sugestão de convite personalizada for longa o suficiente para ultrapassar os limites da interface do usuário, ela não será exibida.
Class. ExperienceInviteOptions. InviteUser|InviteUsernúmeroRoblox Class. Player. UserId|UserId do amigo específico para convidar; se não for fornecido, será solicitado que o jogador escolha em uma lista de amigos.
Class. ExperienceInviteOptions. InviteMessageId|InviteMessageIdstringID do recurso que mapeia para um tipo de recurso Notificação. Este recurso é usado para armazenar/localizar uma string personalizada para a notificação de convite que os amigos recebem. Consulte Configurando opções de notificação para detalhes.
Class. ExperienceInviteOptions. LaunchData|LaunchDatastringUsado para definir um parâmetro Class. Player:GetJoinData() quando um amigo entra a partir da notificação de convite. Máximo de 200 caracteres. Consulte Incluindo dados de inicialização para um exemplo de uso.
LocalScript - Invite Multiple Friends

local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
local player = Players. LocalPlayer
-- Construct invite options with a custom prompt message
local inviteOptions = Instance.new("ExperienceInviteOptions")
inviteOptions. PromptMessage = "Ask your friends to join the adventure!"

Configurando opções de notificação

Por padrão, a notificação de convite que os amigos recebem contém o Class. Player. DisplayName|DisplayName do remetente, nome de usuário e o nome da experiência. Para personalizar a mensagem, você pode criar um recurso de notificação no sugestão do criador e incluir o ID do recurso como um parâmetro de Class. ExperienceInviteOptions.

  1. Navegue até o Painel de Criações.

  2. Semelhante aos emblemas, as strings de notificação estão vinculadas a uma experiência específica. Localize a miniatura dessa experiência e clique nela.

  3. Na coluna da esquerda, clique em Notificações.

  4. Na região central, clique no botão Criar uma string de notificação.

  5. Preencha um nome de identificador (visível apenas para você) e o texto de notificação personalizado. Observe que você deve incluir {experienceName} como espaço reservado para identificar o nome da experiência para amigos convidados e, opcionalmente, pode incluir o remetenteClass. Player. DisplayName|DisplayName por meio do espaço reservado {displayName}. Por exemplo:

    • {displayName} quer que você participe de sua aventura em {experienceName}!
    • {displayName} acaba de terminar a sexta fase da {experienceName}! Você consegue?
  6. Quando estiver pronto, clique no botão Criar string de notificação.

  7. Na página de notificações, clique no botão para a notificação e selecione Copiar ID do Ativo.

  8. ExperienceInviteOptions objeto da sugestão de convite, cole o ID do ativo como o valor da Class. ExperienceInviteOptions. InviteMessageId|InviteMessageIdpropriedade.

    LocalScript - Invite Multiple Friends

    local SocialService = game:GetService("SocialService")
    local Players = game:GetService("Players")
    local player = Players. LocalPlayer
    -- Construct invite options with friend's user ID
    local inviteOptions = Instance.new("ExperienceInviteOptions")
    inviteOptions. InviteMessageId = "ef0e0790-e2e8-4441-9a32-93f3a5783bf1"

Sugerir um convite

Para sugerir um convite, você deve primeiro determinar se o jogador pode enviar um convite, pois a capacidade pode variar dependendo da plataforma ou do jogador. Uma vez confirmado, você pode enviar a sugestão de convite para jogador.

  1. Chame Class. SocialService:CanSendGameInviteAsync(), dentro de uma pcall()pois é uma chamada de rede assíncrona que pode falhar ocasionalmente.
  2. Se a capacidade de convidar for confirmada, chame Class. SocialService:PromptGameInvite() com o objeto opcional de opções de convite como o segundo argumento.

Uma vez solicitado, o jogador verá uma sugestão na tela para convidar vários amigos ou o amigo específico definido no objeto de opções de convite. Quando o jogador clicar no botão Convidar para um ou mais amigos, esses amigos receberão uma notificação contendo o Class. Player. DisplayName|DisplayName e o nome de usuário do remetente e o nome da experiência. As notificações podem ser ainda mais personalizadas conforme descrito em Configuração de opções de notificação.

LocalScript - Invite Multiple Friends

local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
local player = Players. LocalPlayer
-- Function to check whether the player can send an invite
local function canSendGameInvite(sendingPlayer)
local success, canSend = pcall(function()
return SocialService:CanSendGameInviteAsync(sendingPlayer)
end)
return success and canSend
end
local canInvite = canSendGameInvite(player)
if canInvite then
local success, errorMessage = pcall(function()
SocialService:PromptGameInvite(player)
end)
end

Incluir dados de inicialização

Para melhorar ainda mais a cooperação na experiência ou incentivar convites de jogadores, você pode incluir dados de inicialização em uma sugestão de convite, útil para cenários como encaminhar amigos convidados para um local coordenado ou personalizar a experiência de entrada do convidado.

  1. Ao sugerir um convite, inclua um objeto Class. ExperienceInviteOptions com dados relevantes que serão usados quando o amigo entrar na experiência, por exemplo, o Class. Player. UserId do remetente, o ID de um emblema para conceder ao amigo ao entrar ou um local coordenado para o surgimento do amigo. Se você precisar compilar vários dados, codifique os dados usando Class. HttpService:JSONEncode()|JSONEncode().
LocalScript - Invite Multiple Friends

local HttpService = game:GetService("HttpService")
local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local data = {
senderUserID = player.UserId,
spawnLocation = {12, 48, 205.5}
}
local launchData = HttpService:JSONEncode(data)
-- Construct invite options with launch data
local inviteOptions = Instance.new("ExperienceInviteOptions")
inviteOptions.LaunchData = launchData
-- Function to check whether the player can send an invite
local function canSendGameInvite(sendingPlayer)
local success, canSend = pcall(function()
return SocialService:CanSendGameInviteAsync(sendingPlayer)
end)
return success and canSend
end
local canInvite = canSendGameInvite(player)
if canInvite then
local success, errorMessage = pcall(function()
SocialService:PromptGameInvite(player, inviteOptions)
end)
end
  1. Para novos amigos que entrarem por meio da notificação, verifique os dados de inicialização no lado do servidor por meio de Class. Player:GetJoinData(). Se você codificar vários dados em JSON para a sugestão de convite, lembre-se de decodificá-los com Class. HttpService:JSONDecode()|JSONDecode().

    Script - Using Invite Launch Data

    local HttpService = game:GetService("HttpService")
    local Players = game:GetService("Players")
    local ATTEMPT_LIMIT = 10
    local RETRY_DELAY = 1
    local function onPlayerAdded(player)
    local launchData
    for i = 1, ATTEMPT_LIMIT do
    task.wait(RETRY_DELAY)
    local joinData = player:GetJoinData()
    if joinData. LaunchData ~= "" then
    launchData = joinData. LaunchData
    break
    end
    end
    if launchData then
    local data = HttpService:JSONDecode(launchData)
    print(data.senderUserID)
    print(data.spawnLocation)
    else
    warn("No launch data received!")
    end
    end
    Players.
    PlayerAdded:Connect(onPlayerAdded)
  2. Se os dados de inicialização existirem, você poderá usá-los para uma ampla variedade de cenários de projeto, incluindo:

    • Defina o local de geração do amigo ingressante no início de uma pista de obstáculos desafiadora que o remetente acabou de concluir, com base em uma localização coordenada passada pelos dados de inicialização.
    • Verifique se o remetente está no local, com base nos Class. Player. UserId dados de lançamento, e teletransporte o personagem do amigo para perto de seu personagem.