エクスペリエンス通知

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

エクスペリエンス通知 は、13歳以上のユーザーがタイムリーでパーソナライズされた通知で、お気に入りのエクスペリエンスについて最新情報を取得する方法です。開発者として、ユーザーに通知する必要がある体験内のアクティビティの種類や、通知コンテンツを定義できます。

Example notification
Example notification

エクスペリエンス通知システムには、フォロー中の機能があります:

  • パラメータでカスタマイズ可能な通知 — 例えば、パラメータで 通知メッセージ をカスタマイズできる完全な柔軟性、たとえば:

    Your gold goose egg has hatched!

    Allie @LaterSk8er1 just beat your record on the Tokyo Tour track!

  • 発進データ — 通知受信者が参加すると を介して読み込めるオプションの Player:GetJoinData() を含むこれは、ユーザーを座標位置にルートするか、参加体験を個人化する可能性があります。

  • アナリティクスサポート — 到達可能なオーディエンスと通知のパフォーマンスを クリエイターダッシュボード で追跡します。

資格要件

API を使用して通知を送信するには、エクスペリエンスが次のベース要件を満たさなければなりません:

  • リリース以来最低 100 回の訪起動。
  • エクスペリエンスはモデレーションされてはならない。
  • 開発者として、エクスペリエンスを管理する権限が必要です。

使用上の指示

通知は受信者に 個人化 されるべきであり、ユーザーに特に関連する経験活動に基づいているべきです。逆に、通知は一般的で広告性のものではないべきです。

理想的には、通知はユーザーにも、自分が取ることができる すぐの行動 についても警告するべきです。直接の応答またはアクションを促さない純粋に情報的な通知を避けます。

すべての通知コンテンツと動作は、エクスペリエンスの年齢ガイドラインに関わらず、Roblox の コミュニティ標準 とプラットフォーム全体の テキストフィルタリングに対応しています。これは、あなたのエクスペリエンスが 17以上のエクスペリエンスである場合、通知はプラットフォーム全体の標準に依然として従うことを意味します、 はない 17以上のポリシー標準 。

通知コンテンツは、 ダークパターンやその他の戦略を含めることは許可されておらず、ユーザーが選択したくない選択を行ったり、最善の利益に反した選択を行ったりすることを悪用します。これにはフォロー中のものが含まれる可能性があります:

  • 変装広告 — 意図的にオーガニックコンテンツとして変装された通知ですが、実際は広告です。たとえば、次の通知をクリックするとペットワールドに行きますが、「重要な情報」は表示されないと想定します。

  • 時間圧迫アクション — 偽の時間圧迫を適用して、ユーザーをクリック、サブスクライブ、同意、または購入に誘導する通知

  • 無料アイテムや他の報酬との誘導と切り替え — ユーザーに無料で何かを受け取ると偽りの通知を伝える通知たとえば、次の通知をクリックすると、ギフトを入手するにはさらに何かが必要になることが明確になります。

  • ユーザーを誘導して購入させる — ユーザーを誘導して不意打ち購入をさせる通知。たとえば、次の通知をクリックすると、ユーザーが購(を)買うしなかったアイテムでプリロードされた購入システムに直接リードすると想定します。

エクスペリエンスは しない ユーザーがゲームプレイに参加したり進んだりするために通知を有効にする必要はありません。

実装

経験通知の実装は、通知ストリングを作成し、プロジェクトにパッケージを含めることから始まります。これらが設定されると、オプションの カスタムパラメータ で通知を送信できます。

代わりに、オープンクラウド API を使用して、フリーフォームの API リクエストを介して通知をトリガーできます。

通知ストリングを作成す文字列

プレイヤー招待プロンプト と同様、クリエイターダッシュボード で通知ストリングを作成し、編集する必要があります。 デフォルトのエクスペリエンス通知ストリン文字列はないので、このステップが必要です。

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

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

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

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

  5. 識別名 (あなたにしか表示されない) とカスタム通知ストリン文字列を満たし、これは 99 文字に制限され、無制限の カスタムパラメータ を含むことができます。通知は自動的にエクスペリエンスのタイトルを通知タイトルとして使用しますが、 experienceName を使用して通知体のテキストでエクスペリエンスを参照できます。

    例の通知文字列:

    You're {numQuests} quests away from completing the weekly challenge!

    Your {eggName} hatched! Come meet your new pet.

    You won {numRaces} races this week and unlocked the {racetrackName} track!

    {userId-friend} just beat your record on the Tokyo Tour track! Time for revenge?

  6. 準備ができたら、 通知ストリングを作成するボタン をクリックします。

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

  8. 例えば、messageId キー値にコピーされた ID を使用して、payload テーブルで示されたように、例のスクリプト で。

パッケージを含む

エクスペリエンス通知を実装するには、クリエイターストア から Luau パッケージを取得する必要があります。

  1. ビュータブから、ツールボックスを開き、クリエイターストアタブを選択します。

    Toolbox toggle button in Studio
  2. モデル の順序が選択されていることを確認し、 すべて表示 ボタンをクリックして、 カテゴリ を選択します。

  3. ロケートしてクリックして 開発モジュール タイル。

  4. オープンクラウド モジュールを見つけてクリックするか、3D ビューにドラッグアンドドロップします。

  5. エクスプローラー ウィンドウで、 OpenCloud モデル全体を ServerScriptService に移動します。

エクスペリエンス通知を送信する

通知ストリングを作成し、プロジェクトにパッケージを含めたら、サーバー側のスクリプトから通知を送信できます。通知は、オプトイン 年齢 13+ のユーザーに Roblox 通知ストリームを通じて配信され、その時点で、通知と同時にエクスペリエンスに直接参加できる 参加 ボタンを通じて、発進データ に従ってスポーンします。

Notifications stream on the Roblox app

特定のユーザーに基本通知を送信するには、通知ストリングアセットIDをペイロードのmessageIdに含め、受信者のcreateUserNotification関数を呼び出し、リクエストデータと受信者のPlayer.UserIdを呼び出します。

エクスペリエンス通知を送信する

local ServerScriptService = game:GetService("ServerScriptService")
local OCUserNotification = require(ServerScriptService.OpenCloud.V2.UserNotification)
local recipientPlayerID = 505306092
-- ペイロードでは、「messageId」は通知アセット IDの値です
local userNotification = {
payload = {
messageId = "5dd7024b-68e3-ac4d-8232-4217f86ca244",
type = "MOMENT"
}
}
local result = OCUserNotification.createUserNotification(recipientPlayerID, userNotification)
if result.statusCode ~= 200 then
print(result.statusCode)
print(result.error.code)
print(result.error.message)
end

パラメータを使用して通知をカスタマイズ

各受信者の通知をカスタマイズするには、 パラメータ通知文字列 に含め、API を呼び出すときにパラメータをカスタマイズできます。たとえば、通知文字列を次のように定義できます:

{userId-friend} beat your high score by {points} points! Time to level up?

次に、スクリプトで userId-friendpoints パラメータを設定します:

パラメータを使用して通知をカスタマイズ

local ServerScriptService = game:GetService("ServerScriptService")
local OCUserNotification = require(ServerScriptService.OpenCloud.V2.UserNotification)
local recipientPlayerID = 505306092
local userIdFriendParam = {int64Value = 3702832553}
local pointsParam = {stringValue = "5"}
-- ペイロードでは、「messageId」は通知アセット IDの値です
-- この例では、通知文字列は「{userId-friend} が {points} ポイントであなたの高得点を打ち破りました!レベルアップの時間ですか?」です。
local userNotification = {
payload = {
messageId = "ef0e0790-e2e8-4441-9a32-93f3a5783bf1",
type = "MOMENT",
parameters = {
["userId-friend"] = userIdFriendParam,
["points"] = pointsParam
}
}
}
local result = OCUserNotification.createUserNotification(recipientPlayerID, userNotification)
if result.statusCode ~= 200 then
print(result.statusCode)
print(result.error.code)
print(result.error.message)
end

ユーザーに通知を有効にするよう促す

ユーザーにエクスペリエンスの通知を有効にするよう促すには、ExperienceNotificationService:PromptOptIn() メソッドを使用して、13歳以上のユーザーに体験内の権限プロンプトを表示できます。

The in-experience permission prompt encourages users to enable notifications

将来の通知が必要なエクスペリエンス内の適切なコンテキストで、プロンプトをトリガーできます。プロンプトのテキストはカスタマイズできず、すべてのエクスペリエンスで標準化されています。

ユーザーが: 表示されない場合 モーダルは現れません:

  • 13歳未満です。
  • エクスペリエンスの通知をすでに有効にしました。
  • 過去 30 日間で、エクスペリエンスの権限プロンプトをすでに見た。

ユーザーに通知を有効にするよう促すには、まずユーザーが資格があるかどうかを判断する必要があります。確認が完了すると、ユーザーに許可プロンプトを表示できます。

  1. 呼び出し , 包まれている since it's an 非同期ネットワーク呼び出しは時折失敗する可能性があります。
  2. ユーザーを尋ねることができる場合は、ExperienceNotificationService:PromptOptIn() を呼び出します。
ローカルスクリプト - 通知許可プロンプトの実装

local ExperienceNotificationService = game:GetService("ExperienceNotificationService")
-- プレイヤーに通知を有効にするように促されるかどうかをチェックする機能
local function canPromptOptIn()
local success, canPrompt = pcall(function()
return ExperienceNotificationService:CanPromptOptInAsync()
end)
return success and canPrompt
end
local canPrompt = canPromptOptIn()
if canPrompt then
local success, errorMessage = pcall(function()
ExperienceNotificationService:PromptOptIn()
end)
end
-- オプトインプロンプト閉じたイベントを聞く
ExperienceNotificationService.OptInPromptClosed:Connect(function()
print("Opt-in prompt closed")
end)

発進と分析データを含める

ユーザーエクスペリエンスをさらに向上させるために、 発進データ を通知に含めることができます。これは、ユーザーを座標位置にルートするか、接続経験をカスタマイズするなどのシナリオに有用です。さらに、アナリティクス データを含めて、異なるカテゴリの通知のパフォーマンスをセグメント化できます。また、ランチデータの設定と使用方法に関する プレイヤー招待プロンプト の例も参照してください。

ランチデータと分析データを含める

local ServerScriptService = game:GetService("ServerScriptService")
local OCUserNotification = require(ServerScriptService.OpenCloud.V2.UserNotification)
local recipientPlayerID = 505306092
-- ペイロードでは、「messageId」は通知アセット IDの値です
local userNotification = {
payload = {
messageId = "5dd7024b-68e3-ac4d-8232-4217f86ca244",
type = "MOMENT",
joinExperience = {
launchData = "Test_Launch_Data"
},
analyticsData = {
category = "Test_Analytics_Category"
}
}
}
local result = OCUserNotification.createUserNotification(recipientPlayerID, userNotification)
if result.statusCode ~= 200 then
print(result.statusCode)
print(result.error.code)
print(result.error.message)
end

配達システム

スパム防止システムが存在し、ユーザーの通知の品質を保証し、すべての開発者の共有通知チャネルを保護します。このため、通知の配信は保証されていません。このスパム防止システムは、ユーザーのエンゲージメントに直接通知されます:ユーザーが通知により多く参加するほど、受信するリーチが増加します。アナリティクスダッシュボードで エンゲージメントメトリックを透明に追跡できます 、以下のように説明されています。

エクスペリエンス通知には静的制限があり、各ユーザーは指定のエクスペリエンスから毎日 1 通の通知を受け取ることができ、ユーザーのスロット制限が達したときに透明なフィードバックを受け取ります。

さらに、次のリストでは、通知の 非配信 につながる可能性のある特別なケースのいくつかを説明します:

  • 経験 資格要件 が満たされていません。
  • 受信者はあなたのエクスペリエンスからの通知をオプトアウトしていません。
  • エクスペリエンスのための受信者のスロット制限に達しました。
  • 受信者の総日スロット制限が達しました。
  • 欠落または無効なリクエストパラメータ。
  • 通知ストリングがモデレートされました。
  • ユーザーの言及がある通知の場合、次の条件のいずれかが満たされていると、配信が行われない:
    • 受信者と言及されたユーザーは友達ではありません。
    • 言及されたユーザーは、 いいえ を選択して、Roblox アカウント設定の プライバシーその他の設定 の「アクティビティについての友達を更新する?」の下で「更新友達について」を選択しました。

アナリティクス

通知のパフォーマンスと通知可能なオーディエンスは、 アナリティクス タブの 通知 ページで、通知文字列を構成する (単に クリエーション から アナリティクス へタブ)で表示されます。

  1. バッジと同様、通知ストリングは 特定のエクスペリエンス に結び付けられています。そのエクスペリエンスのサムネイルを見つけて、クリックします。
  2. 左の列で、 エンゲージメント の下で、 通知 をクリックします。
  3. ターゲットページで、 分析 タブをクリックして、分析ダッシュボードに切り替えます。

通知の概まとめ

概要セクションは、通知の総合パフォーマンスのスナップショットとして機能します。パフォーマンス統解析を表示するには、最低 100 個の総印象が必要です。

統計説明
同意したユーザー エクスペリエンスの通知をオンにしたユーザーの合計数。これには、個人化された エクスペリエンスアップデート の通知を受信できる 13歳未満のユーザーも含まれていますが、個人化された エクスペリエンス通知 は含まれていません。
印象 すべての通知が集計して受け取ったユーザーインプレッションの合計数。
クリック すべての通知が集計して受け取ったクリック数の合計。
トラフィックCクリック率 ユーザーがクリックした通知の割合、クリック数に対する印象数として計算されるレート。
オフにする ユーザーが通知を直接あなたのエクスペリエンスのためにオフにする速度、即ちオフアクション対インプレッションの比率として計算される。
却下 ユーザーが通知を拒否する速度、拒否行動とインプレッションの比率で計算されます。

アイテム化された統計

エクスペリエンス通知 テーブルは、最低 100 の印象で、その通知の最初の印象日によって順序付けられた、それぞれの通知の詳細なパフォーマンス統計を表示します。

名前 列は、通知のキー識別子です。デフォルトでは、名前は 通知文字列を作成するときに指定した識別子名と一致しますが、API 呼び出しの category フィールドを介してオーバーライドでき、その場合 category が名前をオーバーライドしますクリエイターダッシュボード の ストリング名を変更 またはメッセージIDをAPI呼び出しで参照するストリングを変更すると、テーブルに新しい行が生成されます。

異なる弦のパフォーマンスを A/B テストしたい場合は、同じ名前の完全に新しい通知ストリングを作成することをお勧めします。たとえば:

  • EggHatchA — "あなたのゴールドの卵が孵化しました!新しいペットに会いに行きましょう"
  • EggHatchB — "孵化時間です!新しいペットに会いに行きましょう"

API リファレンス

機能

createユーザ通知

createUserNotification ( userId : 数値 , userNotification : ユーザー通知 ) : ユーザー通知結果

サーバー側のスクリプトから通知を送信します。受信者の Player.UserIdユーザー通知 が必要です。返す ユーザー通知結果

エクスペリエンス通知を送信する

local ServerScriptService = game:GetService("ServerScriptService")
local OCUserNotification = require(ServerScriptService.OpenCloud.V2.UserNotification)
local recipientPlayerID = 505306092
-- ペイロードでは、「messageId」は通知アセット IDの値です
local userNotification = {
payload = {
messageId = "5dd7024b-68e3-ac4d-8232-4217f86ca244",
type = "MOMENT"
}
}
local result = OCUserNotification.createUserNotification(recipientPlayerID, userNotification)
if result.statusCode ~= 200 then
print(result.statusCode)
print(result.error.code)
print(result.error.message)
end

タイプ

ユーザー通知

ユーザーに送信する通知の詳細を含むテーブル。必須の payload テーブル、必要な messageId および type 文字列、オプションの parametersjoinExperience 、および analyticsData テーブルを含める必要があります。

キー種類説明
messageId文字列クリエイターダッシュボードで作成したカスタマイズ可能な通知メッセージテンプレートを表す ID。 Creator Dashboard
type文字列通知の種類。現在は "MOMENT" のみがサポートされています。
parametersテーブル通知メッセージテンプレートをレンダリングするために使用されるパラメータのテーブル。例として、パラメータを使用して通知をカスタマイズ を参照してください。
joinExperienceテーブルエクスペリエンスに参加する行動を表す呼び出し。現在は、ユーザーがエクスペリエンスに参加するときに利用可能な任意のデータを表す launchData キーバリューペアをサポートしています;この値は最大 200バイトに制限されています。例えば、発進と分析データを含める を参照してください。
analyticsDataテーブル分析の報告方法のデータ。現在、通知カテゴリを表す category キーバリューペアをサポートしており、アナリティクスデータをグループ化するのに使用されます。例えば、発進と分析データを含める を参照してください。

ユーザー通知結果

送信された通知からの応答を保持するラッパーオブジェクト。次のキーバリューペアを含みます:

キー種類説明
statusCode番号要求の HTTP ステータスコード。
errorテーブルGRPC エラーコードとエラーメッセージをそれぞれ記述する codemessage のキーが含まれたテーブル。
responseテーブルユニークな UUID とユーザー通知のリソースパスを記述する idpath のキーが含まれたテーブル、それぞれ。