Messages d'invitation pour les joueurs

En plus des méthodes de promotion habituelles pour augmenter votre base de joueurs, vous pouvez mettre en place des messages d'invitation directement dans votre expérience, encourageant ainsi les joueurs à inviter leurs amis et augmentant le nombre de parties en co-expérience.

Le système d'invite propose les fonctionnalités suivantes :

  • Invités dynamiques - Incite les joueurs à inviter plusieurs amis à partir d'une liste de sélection ou à inviter un ami en particulier.
  • Données de lancement - Incluez des données de lancement facultatives qui peuvent être lues par Player:GetJoinData() lorsque votre ami invité s'inscrit. Les exemples de cas d'utilisation incluent le routage des amis invités vers un lieu coordonné ou la personnalisation de l'expérience d'adhésion pour l'invité.
  • Texte personnalisable - Personnalisez le message d'invitation et le message de notification. Par exemple, un message d'invitation pour le joueur peut être « Demandez à vos amis de rejoindre l'aventure ! » et le message de notification pour le(s) ami(s) invité(s) peut être « {displayName} veut que vous le(s) rejoigniez dans {experienceName} ! ».
Message pour inviter plusieurs amis
Message pour inviter un ami en particulier

Définir les options d'invitation

Par défaut, un message d'invitation pour le joueur affiche un menu contenant les noms de ses amis accompagnés de boutons Inviter. Si vous souhaitez personnaliser le message d'invitation, cibler un ami spécifique ou inclure des données de lancement dans l'invitation, vous devez configurer un objet ExperienceInviteOptions avec les propriétés souhaitées.

PropriétéTypeDescription
PromptMessagechaîneTexte personnalisé affiché dans le message d'invitation pour le joueur qui l'envoie, par exemple « Demandez à vos amis de rejoindre l'aventure ! » pour un message d'invitation Veuillez noter que si votre message d'invitation personnalisé ne sera pas affiché s'il est suffisamment long pour dépasser les limites de l'UI.
InviteUsernombreRoblox UserIdde votre ami spécifique à inviter ; s'il n'est pas fourni, le joueur sera invité à choisir dans une liste d'amis.
InviteMessageIdchaîneID d'élément qui correspond à un type d'élément Notification. Cet élément est utilisé pour stocker/localiser une chaîne personnalisée pour la notification d'invitation que les amis reçoivent. Voir Définir les options de notification pour plus de détails.
LaunchDatachaîneUtilisé pour définir un paramètre dans Player:GetJoinData() lorsqu'un ami s'inscrit à partir de la notification d'invitation. 200 caractères maximum. Voir Inclure les données de lancement pour un exemple d'utilisation.
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!"

Définir les options de notification

Par défaut, la notification d'invitation que les amis reçoivent contient le DisplayName de l'expéditeur, le nom d'utilisateur et le nom de l'expérience. Pour personnaliser le message, vous pouvez créer un élément de notification sur l'Interface de création et inclure son ID d'élément en tant que paramètre de ExperienceInviteOptions.

  1. Accédez à l'Interface de création.

  2. À l'instar des badges, les chaînes de notification sont liées à une expérience spécifique. Localisez la vignette de cette expérience et cliquez dessus.

  3. Dans la colonne de gauche, cliquez sur Notifications.

  4. Dans la partie centrale, cliquez sur le bouton Créer une chaîne de notification.

  5. Indiquez un nom d'identifiant (visible uniquement par vous) et le texte de la notification personnalisée. Veuillez noter que vous devez inclure {experienceName} comme marqueur pour identifier le nom de l'expérience pour les amis invités, vous pouvez éventuellement inclure le DisplayName de l'expéditeur par le biais du marqueur {displayName}. Par exemple :

    • {displayName} souhaite que vous rejoigniez leur aventure dans {experienceName} !
    • {displayName} vient juste de finir le sixième niveau de {experienceName}. Le pouvez-vous ?
  6. Lorsque vous êtes prêt, cliquez sur le bouton Créer une chaîne de notification.

  7. Sur la page des notifications, cliquez sur le bouton

  8. Dans l'objet ExperienceInviteOptions du message d'invitation, collez l'ID d'élément comme valeur de laInviteMessageId propriété .

    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"

Lancer une invitation

Pour lancer une invitation, vous devez d'abord déterminer si le joueur peut envoyer une invitation, car cela peut varier en fonction de la plateforme ou du joueur. Une fois l'invitation confirmée, vous pouvez afficher le message d'invitation au joueur.

  1. Appelez SocialService:CanSendGameInviteAsync(), enveloppé dans un pcall() puisqu'il s'agit d'un appel réseau asynchrone qui peut occasionnellement échouer.
  2. Si la capacité d'invitation est confirmée, appelez SocialService:PromptGameInvite() avec l'objet d'options d'invitation facultatif comme deuxième argument.

lui indiquant à inviter plusieurs amis ou l'ami défini dans l'objet d'options d'invitation. Lorsque le joueur clique ensuite sur le bouton Inviter pour un ou plusieurs amis, ces derniers reçoivent une notification contenant le DisplayName de l'expéditeur, son nom d'utilisateur et le nom de l'expérience. Les notifications peuvent être personnalisées comme indiqué dans la section Définir les options de notification.

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

Inclure les données de lancement

Vous pouvez inclure des données de lancement dans une invite pour améliorer davantage la coopération en cours d'expérience ou pour inciter les joueurs à s'inviter, ce qui est utile dans des scénarios tels que le transfert des amis invités vers un emplacement coordonné ou la personnalisation du processus pour l'invité.

  1. Lorsque vous lancez une invitation, incluez un objet ExperienceInviteOptions contenant des données pertinentes qui seront utilisées lorsque l'ami rejoindra l'expérience, par exemple l'Player.UserId de l'expéditeur, l'ID d'un badge à remettre à cet ami lorsqu'il rejoindra l'expérience, ou une coordonnée de l'emplacement où l'ami doit commencer l'expérience. Si vous devez compiler plusieurs éléments de données, encodez les données à l'aide de 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. Vérifiez les données de lancement sur le serveur par le biais de Player:GetJoinData() lorsque de nouveaux amis s'inscrivent par le biais de la notification. Si vous encodez plusieurs données en JSON pour l'invite, n'oubliez pas de les décoder avec 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)
    end
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
  2. Si les données de lancement sont disponibles, vous pouvez les utiliser pour une grande variété de scénarios de conception, notamment :

    • Faites apparaître un ami au début d'une course d'obstacles que l'expéditeur vient de terminer sur la base de coordonnées transmises grâce aux données de lancement.
    • Vérifier si l'expéditeur se trouve dans l'emplacement, en se basant sur son Player.UserId dans les données de lancement, et téléporter le personnage de l'ami près de son personnage.