Avisos de invitación del jugador

Además de los métodos de promoción comunes para aumentar tu base de jugadores, puedes implementar solicitudes de invitación directamente dentro de tu experiencia, animando a los jugadores a invitar a sus amigos y aumentar el juego de experiencia conjunta.

El sistema de solicitudes de invitación presenta lo siguiente:

  • Invitados dinámicos: solicita a los jugadores que inviten a varios amigos de una lista de selección o que inviten a un amigo específico.

  • Datos de lanzamiento: incluye datos de lanzamiento opcionales que se pueden leer mediante Player:GetJoinData() cuando el amigo invitado se une. Algunos ejemplos de casos de uso incluyen enrutar a los amigos invitados a una ubicación coordinada o personalizar la experiencia de unión para el invitado.

  • Texto personalizable: personaliza el mensaje de solicitud de invitación y el mensaje de notificación. Por ejemplo, un mensaje de invitación para el jugador puede ser "¡Pídeles a tus amigos que se unan a la aventura!" y el mensaje de notificación para los amigos invitados puede ser "{displayName} quiere que te unas a su aventura en {experienceName}!".

    Solicitud para invitar a varios amigos
    Solicitud para invitar a un amigo específico

Configuración de las opciones de invitación

De forma predeterminada, el mensaje de solicitud de invitación para el jugador muestra un menú de sus amigos con botones de Invitar. Para personalizar el mensaje de solicitud, indicar un amigo específico o incluir datos de lanzamiento en la invitación, tendrás que configurar un objeto ExperienceInviteOptions con las propiedades deseadas.

PropiedadTipoDescripción
PromptMessagestringTexto personalizado que se muestra en el mensaje de solicitud de invitación para el jugador que la envía, por ejemplo: "¡Pídeles a tus amigos que se unan a la aventura!" para invitar a varios amigos o "¡Invita a este amigo a unirse a la aventura!" para invitar a un amigo específico. Ten en cuenta que si tu mensaje de solicitud de invitación personalizado no se mostrará si es lo suficientemente largo como para superar los límites de la interfaz de usuario.
InviteUsernúmeroRoblox UserId del amigo específico que se va a invitar; si no se proporciona, se le pedirá al jugador que elija de una lista de amigos.
InviteMessageIdstringIdentificación de recurso que se asigna a un tipo de recurso Notificación. Este recurso se utiliza para almacenar/localizar una cadena personalizada para la notificación de invitación que reciben los amigos. Consulta Configurar las opciones de notificación para obtener detalles.
LaunchDatastringSe utiliza para establecer un parámetro en Player:GetJoinData() cuando un amigo se une desde la notificación de invitación. Un máximo de 200 caracteres. Consulta Incluir datos de lanzamiento para ver un ejemplo 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!"

Configurar las opciones de notificación

De forma predeterminada, la notificación de invitación que reciben los amigos contiene el DisplayName del remitente, el nombre de usuario y el nombre de la experiencia. Para personalizar el mensaje, puedes crear un recurso de Notificación en la Interfaz de creación e incluir su identificación de recurso como parámetro de ExperienceInviteOptions.

  1. Dirígete a la Interfaz de creación.

  2. Al igual que los emblemas, las cadenas de notificaciones están vinculadas a una experiencia específica. Localiza la miniatura de esa experiencia y haz clic en ella.

  3. En la columna de la izquierda, haz clic en Notificaciones.

  4. En la región central, haz clic en el botón Crear una cadena de notificaciones.

  5. Rellena un nombre de identificador (solo visible para ti) y el texto de notificación personalizado. Ten en cuenta que debes incluir {experienceName} como marcador de posición para identificar el nombre de la experiencia para los amigos invitados, y puedes incluir opcionalmente el DisplayName del remitente a través del marcador de posición {displayName}. Por ejemplo:

    • ¡{displayName} quiere que te unas a su aventura en {experienceName}!
    • {displayName} acaba de desbloquear la sexta etapa de {experienceName}. ¿Puedes?
  6. Cuando estés listo, haz clic en el botón Crear cadena de notificación.

  7. En la página de notificaciones, haz clic en el botón para la notificación y selecciona Copiar identificación del recurso.

  8. En el objeto ExperienceInviteOptions para el mensaje de solicitud de invitación, pega la identificación del recurso como el valor de la propiedad InviteMessageId.

    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"

Solicitar una invitación

Para solicitar una invitación, primero debes determinar si el jugador puede enviar una invitación, ya que la capacidad puede variar en función de la plataforma o el jugador. Una vez confirmado, puedes mostrar el mensaje de invitación al jugador.

  1. Llama a SocialService:CanSendGameInviteAsync(), encapsulada en pcall() ya que es una llamada de red asíncrona que puede fallar ocasionalmente.
  2. Si se confirma la capacidad de invitación, llama a SocialService:PromptGameInvite()con el objeto de opciones de invitación opcional como segundo argumento.

Cuando se le solicite, el jugador verá en pantalla la posibilidad de invitar a varios amigos o al amigo específico definido en el objeto de opciones de invitación. Cuando el jugador haga clic en el botón Invitar a uno o más amigos, estos recibirán una notificación con el DisplayName del remitente, nombre de usuario y el nombre de la experiencia. Las notificaciones se pueden personalizar aún más como se describe en Configurar las opciones de notificación.

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 datos de lanzamiento

Para mejorar aún más la cooperación en la experiencia o para incentivar las invitaciones de jugadores, puedes incluir datos de lanzamiento en una solicitud de invitación, lo que resulta útil para situaciones como dirigir a los amigos invitados a una ubicación de coordenadas o personalizar la experiencia de unión para el invitado.

  1. Al solicitar una invitación, incluye un objeto ExperienceInviteOptions con los datos relevantes que se utilizarán cuando el amigo se una a la experiencia, por ejemplo, el Player.UserId del remitente, la identificación de un emblema que se otorgará al amigo cuando se una o una ubicación de coordenadas en la que se regenerará el amigo. Si necesitas compilar varias piezas de datos, codifica los datos con 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 los próximos amigos que se unen mediante la notificación, comprueba los datos de lanzamiento en el lado del servidor a través de Player:GetJoinData(). Si codificas varias piezas de datos en JSON para la solicitud de invitación, recuerda decodificarlo con 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)
  1. Si los datos de lanzamiento existen, puedes usarlos para una amplia variedad de escenarios de diseño, entre ellos:
  • Regenera al amigo entrante al principio de una desafiante carrera de obstáculos que el remitente acaba de completar, en función de una ubicación de coordenadas pasada a través de los datos de lanzamiento.
  • Comprueba si el remitente está en el lugar, según su Player.UserId en los datos de lanzamiento, y teletransporta al personaje del amigo cerca de su personaje.