プレイヤー招待プロンプト

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

プレイヤーベースを拡大するための一般的な プロモーション 方法に加えて、エクスペリエンス内で 招待プロンプト を直接実装し、プレイヤーが友達を招待し、共同経験ゲームプレイを増やすように促すことができます。

招待プロンプトシステムにはフォロー中の機能があります:

  • ダイナミック招待者 — プレイヤーに選択リストから複数の友達を招待するか、特定の友達を招待するよう促す
  • 発進データ — 招待された友人が参加すると を通じて読み込めるオプションの Player:GetJoinData() を含めます。例えば使用ケースには、招待された友達を座標位置にルートするか、招待者の参加体験をカスタマイズすることが含まれます。
  • カスタマイズ可能なテキスト招待プロンプト メッセージと 通知 メッセージをカスタマイズします。たとえば、プレイヤーへの招待プロンプトは「友達に冒アドベンチャーに参加してもらう」と読み、招待された友達の通知メッセージは「displayNameはexperienceNameであなたが冒険に参加することを望んでいます!」と読みます。

また、友達招待報酬システム を使用して、招待者と招待者を追跡し、報酬を授与することもできます。

招待オプションを設定

デフォルトでは、プレイヤーの招待プロンプトには、 招待 ボタンのメニューが表示されます。プロンプトメッセージをカスタマイズしたり、特定の友達をターゲットにしたり、招待にランチデータを含めるには、必要なプロパティで ExperienceInviteOptions オブジェクトを設定する必要があります。

性質種類説明
PromptMessage文字列例えば、マルチフレンド招待プロンプトで「友達に冒アドベンチャーに参加してもらう」などのカスタムテキスト、または特定の友達招待プロンプトで「この友達を冒アドベンチャーに招待する」などの特定の友達招待プロンプトが表示されます。カスタム招待プロンプトメッセージが UI の境界を超えるほど長い場合、表示されないことに注意してください。
InviteUser番号招待する特定の友達の Roblox UserId ;提供されない場合、プレイヤーに友達のリストから選択するように促されます。
InviteMessageId文字列通知 アセットタイプにマップするアセットI入力。このアセットは、友達が受け取る招待通知のカスタム文字列を保存/ローカライズするために使用されます。詳細については、設定通知オプション を参照してください。
LaunchData文字列友人が招待通知から参加すると、Player:GetJoinData() でパラメータを設定するのに使用します。最大 200 文字。使用例については、発進データを含める を参照してください。
ローカルスクリプト - 複数の友達を招待

local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- カスタムプロンプトメッセージを使用して招待オプションを構成する
local inviteOptions = Instance.new("ExperienceInviteOptions")
inviteOptions.PromptMessage = "Ask your friends to join the adventure!"

通知オプションを設定

デフォルトでは、友達が受け取る招待通知には、送信者の DisplayName 、ユーザーユーザーネーム、およびエクスペリエンス名が含まれています。メッセージをカスタマイズするには、 クリエイターダッシュボード通知アセットを作成し、そのアセットIDをExperienceInviteOptionsとして含めることができます。

  1. ナビゲート to the クリエイターダッシュボード.

  2. バッジと同様、通知ストリングは 特定のエクスペリエンス に結び付けられています。そのエクスペリエンスのサムネイルを見つけて、クリックします。

  3. 左の列で、 エンゲージメント の下で、 通知 をクリックします。

  4. 中央の領域で、 通知文字列を作成する ボタンをクリックします。

  5. 識別名 (あなたにしか表示されない) とカスタム通知テキストを入力します。招待された友達のエクスペリエンス名を識別するために experienceName をプレースホルダーとして含める必要があり、オプションで送信者の DisplayNamedisplayName プレースホルダーを介して含めることができます。

    例の通知文字列:

    • displayName は experienceName で彼らの冒険に参加したいと思っています!
    • displayName がexperienceNameの 6番目のステージをクリアしました。できますか?
  6. 準備ができたら、 通知ストリングを作成するボタン をクリックします。

  7. 通知ページで、通知の表で ボタンをクリックし、 アクション 列の アセットIDをコピー ボタンを選択します。

  8. 招待プロンプトの ExperienceInviteOptions オブジェクトで、アセット IDを InviteMessageId プロパティの値として貼り付けます。

    ローカルスクリプト - 複数の友達を招待

    local SocialService = game:GetService("SocialService")
    local Players = game:GetService("Players")
    local player = Players.LocalPlayer
    -- 友達のユーザーIDで招待オプションを構築
    local inviteOptions = Instance.new("ExperienceInviteOptions")
    inviteOptions.InviteMessageId = "ef0e0790-e2e8-4441-9a32-93f3a5783bf1"

招待を促す

招待を促すには、まずプレイヤーが 招待を送信できるか を判断する必要があります。能力はプラットフォームまたはプレイヤーによって異なる可能性があるためです。確認が完了すると、プレイヤーに招待プロンプトを表示できます。

  1. 呼び出し , 包まれている since it's an 非同期ネットワーク呼び出しは時折失敗する可能性があります。
  2. 招待能力が確認された場合、SocialService:PromptGameInvite() にオプションの 招待オプションオブジェクト を第二引数として呼び出します。

一度促されると、プレイヤーは画面上のプロンプトを見て、複数の友達を招待するか、招待オプションオブジェクト で定義された特定の友達を招待するようになります。プレイヤーが一人または複数の友達のために 招待 ボタンをクリックすると、それらの友達は送信者の DisplayName、ユーザーユーザーネーム、およびエクスペリエンス名を含む通知を受け取ります。通知は、通知オプションの設定 で説明されたように、さらにカスタマイズできます。

ローカルスクリプト - 複数の友達を招待

local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- プレイヤーが招待を送信できるかどうかをチェックする機能
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
SocialService:PromptGameInvite(player)
end

発進データを含める

経験内の協力をさらに改善するか、プレイヤーへの招待を奨励するには、 ランチデータ を招待プロンプトに含めることができます。これは、招待された友人を座標位置にルートするなどのシナリオや、招待者の参加経験を個人化するのに便利です。

  1. 招待を促すとき、友達がエクスペリエンスに参加するときに使用される関連するデータの オブジェクトを含める、例えば送信者の 、参加時に授与される バッジ、または友達をスポーンするための座標場所。複数のデータをコンパイルする必要がある場合は、JSONEncode() を使用してデータをエンコードします。

    ローカルスクリプト - 複数の友達を招待

    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)
    -- 発進データで招待オプションを構成する
    local inviteOptions = Instance.new("ExperienceInviteOptions")
    inviteOptions.LaunchData = launchData
    -- プレイヤーが招待を送信できるかどうかをチェックする機能
    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
    SocialService:PromptGameInvite(player, inviteOptions)
    end
  2. 通知を介して参加する受信友達の場合、Player:GetJoinData() を通じてサーバー側の発進データをチェックします。招待プロンプト用に複数のデータを JSON にエンコードする場合、JSONDecode() でデコードすることを忘れないでください。

    スクリプト - 招待ランチデータの使用

    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 _ = 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)
  3. 発射データが存在する場合、次のような多種多様なデザインシナリオに使用できます:

    • 送信者がまさに完了した挑戦的な障害コースの最初に、受信者をコーディネート位置を通じて送信データでパスしたものに基づいて生成します。
    • 送信者 が配置場プレースにあるかどうかをチェックし、ランチデータの Player.UserId に基づいて、友達のキャラクターの近くにテレポートします。