經驗通知

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

經驗通知 是讓 已選擇 年齡 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. 導航到 創作者面板

  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. 使用複製的ID為messageId表中的payload鍵值,如在示例腳本中所示。

包括包裹

要實裝體驗通知,您必須從 創作者商店 獲得 Luau 包。

  1. 視圖標籤開啟工具箱,然後選擇 創作者商店 標籤。

    Toolbox toggle button in Studio
  2. 確保 模型 排序已選擇,然後單擊 查看全部 按鈕以獲得 類別

  3. 找到並點擊 開發模組 磚塊。

  4. 尋找 開啟雲端 模組,然後單擊它或拖放到 3D 視檢視中。

  5. 導航器 窗口中,將整個 OpenCloud 模型移動到 ServerScriptService

傳送體驗通知

一旦您 創建了通知字串 並將 包裝 包含到您的項目中,您就可以從服務器端腳本發送通知。通知將被送到 已選擇 年齡 13+ 的 Roblox 通知串流程中,在此點他們可以直接通過通知上的 加入 按鈕加入體驗,並依照您的 發布資料 生成。

Notifications stream on the Roblox app

若要向特定使用者發送基本通知,請在付載的 欄位中包含 通知字串 資產 ID,然後呼叫 createUserNotification 函數,使用接收收件人的 和請求資料來調用。

傳送體驗通知

local ServerScriptService = game:GetService("ServerScriptService")
local OCUserNotification = require(ServerScriptService.OpenCloud.V2.UserNotification)
local recipientPlayerID = 505306092
-- 在載入物中,「訊息ID」是通知資產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"}
-- 在載入物中,「訊息ID」是通知資產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

您可以在體驗中的任何適當上下文中觸發提示,以獲得未來通知。提示的文字無法自訂且在所有體驗中標準化。

如果使用者: The modal will 出現,如果使用者:

  • 年齡在 13 歲以下。
  • 已啟用您體驗的通知。
  • 已在過去 30 天內看到體驗的許可提示。

要提示使用者啟用通知,您首先應該確定使用者是否符合資格。一旦確認,您可以向使用者顯示許可提示。

  1. 呼叫 ExperienceNotificationService:CanPromptOptInAsync() , 包裹在 pcall() 中,因為它是一個可能會時時發生故障的異步網路呼叫。
  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
-- 在載入物中,「訊息ID」是通知資產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

交付系統

垃圾郵件防止系統存在,以確保用戶的通知質量和保護所有開發者的共享通知通道。因此,無法保證通知的交付。這個垃圾郵件防止系統直接受到使用者參與的影響:使用者越多地與您的通知互動,他們將獲得的影響就越多。您可以透明地在 分析 面板中跟蹤參與度指標,如下所述。

經驗通知有靜態限制;每位使用者每天只能從指定經體驗收到一個通知,當使用者的限制達到時,您會收到透明的回饋。

此外,下列列出一些特殊情況,可能會導致通知無法交付: 非交付

  • 經驗 資格要求 未達到。
  • 收件人未選擇拒絕來自您的體驗的通知。
  • 對您的體驗的收件人壓力限制已達到。
  • 收件人的總日限制已達到上限。
  • 缺少或無效的請求參數。
  • 通知字串已被管理。
  • 對於具有使用者提及的通知,如果滿足以下條件之一,將無法交付:
    • 接收者和提到的使用者不是朋友。
    • 提到的使用者在 隱私 下有 沒有 選擇「更新朋友關於我的活動?」在他們的 Roblox 帳戶設置中。

分析

您在 分析 標籤的 通知頁 中查看您的通知和可通知受眾的性能(只需從 創作 到 分析 )。

  1. 導航到 創作者面板
  2. 徽章 類似,通知字串綁定到一個 特定體驗 。找到該體驗的縮略圖並點擊它。
  3. 在左欄中,在 參與 下,單擊 通知
  4. 在目標頁面上,點擊 分析 標籤以切換到分析面板。

通知摘簡介

摘要部分用於記錄您通知的總體表現。需要至少 100 個總印象來顯示性能統數據。

統計說明
已同意的使用者 經過啟用通知的使用者總數,用於您的體驗。請注意,這包括年齡在 13 歲以下的用戶,只能收到通知 體驗更新,而不是個人化的 體驗通知
印象 您所有通知在總體上獲得的使用者印象總數。
點擊 你所有通知的總點擊數。
CTR 用戶點擊您的通知的速率,以點擊次數與印象次數的比率計算。
關閉 使用者從通知中直接關閉您的體驗通知的速率,計算為關閉行動與印象比率。
拒絕 使用者拒絕您的通知的速率,以比率計算拒絕行動與印象的比率。

分項統計資料

體驗通知 表顯示每個通知的詳細性能統計資料,其中至少有 100 次印象,依據該通知的第一次印象日期排序。

名稱 欄是通知的關鍵標識符。預設情況下,名稱與您在 創建通知字串 時指定的標示名稱匹配,但您可以通過 API 呼叫中的 category 欄位覆蓋此名稱,在此情況下 category 將覆蓋名稱。在 創作者面板 更改字串名稱或在 API 呼叫中更改您的訊息ID參考字串會在表中生成新行。

如果您想要 A/B 測試不同字串的性能,建議您創建具有相似名稱的全新通知字串,例如:

  • 孵蛋A — "你的黃金蛋孵化了!來見你的新寵物吧。"
  • EggHatchB — "是時候孵化了!來見你的新寵物吧。"

API 參考

功能

創建使用者通知

創建使用者通知 ( userId : 數量 , 使用者通知 : 使用者通知 ) : 使用者通知結果

從服務器端的腳指令碼發送通知。需要接收收件人的 Player.UserId使用者通知。返回 使用者通知結果

傳送體驗通知

local ServerScriptService = game:GetService("ServerScriptService")
local OCUserNotification = require(ServerScriptService.OpenCloud.V2.UserNotification)
local recipientPlayerID = 505306092
-- 在載入物中,「訊息ID」是通知資產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 表,包含必要的 messageIdtype 字串,以及可選的 parametersjoinExperienceanalyticsData 表。

關鍵類型說明
messageId字串一個代表您在 創作者面板 創建的可自訂通知訊息樣板的ID。
type字串通知類型。目前只支持 "MOMENT"
parameters用於渲染通知訊息樣板的參數表。請參閱 使用參數自訂通知 的範例使用。
joinExperience代表加入體驗的呼叫行動。目前支持一個 launchData 鑰匙值對,代表使用者從通知中加入體驗時可用的隨機數據;此值最多限於 200 個字元。請參閱包括發射和分析數據以獲得示例使用。
analyticsData分析報告的數據。目前支持一個 category 鑰匙值對,代表通知類別,用於組合分析數據。請參閱包括發射和分析數據以獲得示例使用。

使用者通知結果

包含回應從已傳送通知的包裝對象。包含以下鑰值對:

關鍵類型說明
statusCode數字請邀請的 HTTP 狀態碼。
error包含 codemessage 鍵描述 GRPC 錯誤代碼和錯誤訊息的表。
response包含 idpath 鍵的表,分別描述唯一的UUID和使用者通知的資源路徑。