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} ! ».
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é | Type | Description |
---|---|---|
PromptMessage | chaîne | Texte 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. |
InviteUser | nombre | Roblox UserIdde votre ami spécifique à inviter ; s'il n'est pas fourni, le joueur sera invité à choisir dans une liste d'amis. |
InviteMessageId | chaîne | ID 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. |
LaunchData | chaîne | Utilisé 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 messagelocal 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.
Accédez à l'Interface de création.
À 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.
Dans la colonne de gauche, cliquez sur Notifications.
Dans la partie centrale, cliquez sur le bouton Créer une chaîne de notification.
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 ?
Lorsque vous êtes prêt, cliquez sur le bouton Créer une chaîne de notification.
Sur la page des notifications, cliquez sur le bouton
Dans l'objet ExperienceInviteOptions du message d'invitation, collez l'ID d'élément comme valeur de laInviteMessageId propriété .
LocalScript - Invite Multiple Friendslocal SocialService = game:GetService("SocialService")local Players = game:GetService("Players")local player = Players.LocalPlayer-- Construct invite options with friend's user IDlocal 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.
- Appelez SocialService:CanSendGameInviteAsync(), enveloppé dans un pcall() puisqu'il s'agit d'un appel réseau asynchrone qui peut occasionnellement échouer.
- 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é.
- 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
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 Datalocal HttpService = game:GetService("HttpService")local Players = game:GetService("Players")local ATTEMPT_LIMIT = 10local RETRY_DELAY = 1local function onPlayerAdded(player)local launchDatafor i = 1, ATTEMPT_LIMIT dotask.wait(RETRY_DELAY)local joinData = player:GetJoinData()if joinData.LaunchData ~= "" thenlaunchData = joinData.LaunchDatabreakendendif launchData thenlocal data = HttpService:JSONDecode(launchData)print(data.senderUserID)print(data.spawnLocation)elsewarn("No launch data received!")endendPlayers.PlayerAdded:Connect(onPlayerAdded)endendPlayers.PlayerAdded:Connect(onPlayerAdded)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.