Messaggi d'invito per il giocatore

Oltre ai metodi di promozione comuni per aumentare la tua base di giocatori, puoi anche implementare messaggi di invito direttamente all'interno della tua esperienza, incoraggiando i giocatori a invitare i propri amici e ad aumentare il gameplay in co-esperienza.

Il sistema di messaggi d'invito ha le seguenti caratteristiche:

  • Invitati dinamici: invita i giocatori a invitare più amici da una lista di selezione o a invitare un amico specifico.
  • Dati di lancio: includere dati di lancio facoltativi che possono essere letti Player:GetJoinData()quando l'amico/a si unisce. Casi d'utilizzo d'esempio includono l'indirizzare gli amici invitati a una posizione di coordinata o la personalizzazione dell'attività di unirsi all'esperienza per l'invitato/a.
  • Testo personalizzabile: personalizza il messaggio d'invito e il messaggio di notifica. Ad esempio, un messaggio d'invito per il giocatore può riportare "Chiedi ai tuoi amici di unirsi alla tua avventura!" e il messaggio di notifica per gli amici invitati può contenere "{displayName} vuole che tu ti unisca alla sua avventura in {experienceName}!".
Messaggio per l'invito di più amici
Messaggio per l'invito di un amico specifico

Impostazione delle opzioni d'invito

Per impostazione predefinita, un messaggio d'invito per il giocatore mostra un menu dei propri amici con i pulsanti Invita. Per personalizzare il messaggio, indirizzarlo a un amico specifico, o includere i dati di lancio nell'invito, dovrai impostare un ExperienceInviteOptionsoggetto con le proprietà desiderate.

ProprietàTipoDescrizione
PromptMessagestringaTesto personalizzato mostrato sul messaggio d'invito al giocatore inviante, ad esempio "Chiedi ai tuoi amici di unirsi all'avventura!" per un messaggio d'invito a più amici, o "Invita quest'amico a unirsi all'avventura!" Nota che se il tuo messaggio d'invito personalizzato è così lungo da superare i limiti dell'UI, esso non verrà mostrato.
InviteUsernumeroRoblox UserIddell'amico/a specifico/a da invitare; se non fornito, il giocatore verrà invitato a scegliere da un elenco di amici.
InviteMessageIdstringaID risorsa che viene mappato su un tipo di risorsa Notifica. Questa risorsa viene utilizzata per memorizzare/localizzare una stringa personalizzata per la notifica d'invito ricevuta dagli amici. Vedere Opzioni di notifica impostate per dettagli.
LaunchDatastringaUsato per impostare un parametro per Player:GetJoinData()quando un amico si unisce dalla notifica d'invito. Massimo 200 caratteri. Vedere Includere dati di lancio per un esempio d'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!"

Impostare le opzioni di notifica

Per impostazione predefinita, la notifica d'invito che gli amici ricevono contiene DisplayNameil mittente, l'username e il nome dell'esperienza. Per personalizzare il messaggio, puoi creare una risorsa di Notifica nel Pannello di creazione di creazione e includere il suo ID risorsa come parametro di ExperienceInviteOptions.

  1. Simili ai badge, le stringhe di notifica sono legate a un'esperienza specifica. Individuare quella miniatura dell'esperienza e fare clic su di essa.

  2. Nella colonna di sinistra, fare clic su Notifiche.

  3. Nella regione centrale, fare clic sul pulsante Crea una stringa di notifiche.

  4. Inserire un nome identificativo (visibile solo a te) e il testo di notifica personalizzato. Nota che devi includere {experienceName} come placeholder per identificare il nome dell'esperienza per gli amici invitati, e puoi facoltativamente includere il mittente DisplayNameattraverso il placeholder {displayName}. Ad esempio:

    • {displayName} vuole che tu ti unisca alla sua avventura in {experienceName}!
    • {displayName} ha appena completato la sesta fase di {experienceName}. Riesci a farlo?
  5. Quando sei pronto/a, fai clic sul pulsante Crea stringa di notifiche.

  6. Nella pagina delle notifiche, fai clic sul pulsante

  7. Nell'ExperienceInviteOptionsoggetto per il messaggio d'invito, incollare l'ID risorsa come valore della InviteMessageIdproprietà.

    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"

Inviare un invito

Per inviare un invito, dovresti prima determinare se il giocatore può inviare un invito, in quanto la possibilità può variare a seconda della piattaforma o del giocatore. Una volta confermato, puoi mostrare il messaggio d'invito al giocatore.

  1. SocialService:CanSendGameInviteAsync()Chiama, avvolto da pcall()un poiché è una chiamata di rete asincrona che può occasionalmente interrompersi.
  2. Se la capacità d'invito viene confermata, SocialService:PromptGameInvite()chiama con l'oggetto di opzioni d'invito facoltative come secondo argomento.

Una volta inviato, il giocatore vedrà un messaggio sullo schermo che lo spinge a invitare più amici, o l'amico/a specifico/a definito/a nell'oggetto delle opzioni d'invito. Quando il giocatore fa poi clic sul pulsante Invita per uno o più amici, questi amici riceveranno una notifica contenente DisplayNameil mittente, l'username e il nome dell'esperienza. Le notifiche possono essere ulteriormente personalizzate come illustrato in Impostare opzioni di notifica.

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

Includere i dati di lancio

Per migliorare ulteriormente la cooperazione all'interno dell'esperienza o per incentivare gli inviti dei giocatori, puoi includere i dati di lancio in un messaggio d'invito, utile per scenari come l'indirizzamento degli amici invitati in una posizione di coordinata o per personalizzare l'esperienza di accesso per l'invitato.

  1. Quando si invia un invito, includere un ExperienceInviteOptions oggetto con dati rilevanti che saranno utilizzati quando l'amico/a si unirà all'esperienza, ad esempio, il mittentePlayer.UserId, l'ID di un badge da assegnare all'amico al momento dell'adesione o una posizione di coordinata in cui rigenerare l'amico.. Se hai bisogno di compilare più dati, codifica i dati utilizzando 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. Per gli amici in arrivo che si uniscono tramite notifica, controlla i dati di lancio lato server attraverso Player:GetJoinData(). Se codifichi più dati in JSON per il messaggio d'invito, ricordati di 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)
  2. Se esistono i dati di lanci, puoi usarli per una vasta gamma di scenari di design, tra cui:

    • Rigenera l'amico in arrivo all'inizio di un percorso a ostacoli impegnativo che il mittente ha appena completato, in base a una posizione di coordinata passata attraverso i dati di lancio.
    • Verifica se il mittente è sul posto, in base Player.UserIdai suoi dati di lancio e teletrasporta il personaggio dell'amico vicino al suo personaggio.