Thông báo kinh nghiệm

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Thông báo trải nghiệm là một cách để chọn lựa chọn người dùng tuổi 13+ duy trì các trải nghiệm yêu thích của họ thông qua các thông báo cá nhân hóa thời gian thích hợp.Với tư cách là nhà phát triển, bạn có thể xác định các loại hoạt động trong kinh nghiệm nào là quan trọng nhất để thông báo cho người dùng của bạn, cũng như xác định nội dung thông báo.

Example notification
Example notification

Hệ thống thông báo trải nghiệm có các tính năng theo dõi:

  • Thông báo có thể tùy chỉnh với tham số — Tự do tuyệt đối để tùy chỉnh tin nhắn thông báo với tham số, ví dụ:

    Your gold goose egg has hatched!

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

  • Dữ liệu khởi chạy — Bao gồm dữ liệu khởi chạy tùy chọn có thể được đọc qua khi người nhận thông báo tham gia.Điều này có thể liên quan đến việc chuyển hướng một người dùng đến vị trí phối hợp hoặc tùy chỉnh trải nghiệm tham gia của họ.

  • Hỗ trợ phân tích — Theo dõi đối tượng tiếp cận của bạn và hiệu suất của thông báo của bạn trong Bảng điều khiển Nhà sáng tạo.

Yêu cầu đủ điều kiện

Để sử dụng API để gửi thông báo, trải nghiệm phải đáp ứng các tiêu chí cơ bản sau:

  • Tối thiểu 100 lượt truy cập kể từ khi ra khởi chạy.
  • Trải nghiệm không được kiểm duyệt.
  • Bạn là người phát triển phải có quyền quản lý trải nghiệm.

Hướng dẫn sử dụng

Các thông báo nên là cá nhân hóa cho người nhận và nên dựa trên hoạt động trong kinh nghiệm cụ thể có liên quan đến người dùng.Ngược lại, các thông báo không nên là tính chất chung, quảng cáo.

Tốt nhất, các thông báo cũng nên cảnh báo người dùng về một cái gì đó họ có thể thực hiện hành động ngay lập tức .Tránh thông báo thông tin nguyên thủy không yêu cầu phản hồi hoặc hành động trực tiếp.

Tất cả nội dung và hành vi thông báo đều phải tuân thủ các tiêu chuẩn cộng đồng của Roblox và lọc văn bản trên toàn bộ nền tảng , bất kể các hướng dẫn tuổi của trải nghiệm của bạn .Điều này có nghĩa là nếu trải nghiệm của bạn là trải nghiệm 17+, thông báo của bạn vẫn phải tuân theo các tiêu chuẩn toàn bộ nền tảng, không 17+ Chuẩn chính sách .

Nội dung thông báo không phải là không được phép tích hợp các mẫu bóng tối hoặc các chiến thuật khác làm cho người dùng lựa chọn những gì họ không có ý định, hoặc có thể trái với lợi ích tốt nhất của họ.Điều này có thể bao gồm các theo dõi:

  • Quảng cáo giả mạo — Các thông báo được giả mạo cố ý như nội dung hữu cơ, nhưng thực sự là quảng cáo.Ví dụ, cho rằng nhấp vào thông báo tiếp theo dẫn đến Petz World nhưng không có "thông tin quan trọng" nào được hiển thị.

  • Hành động bị ép thời gian — Các thông báo ép người dùng nhấp, đăng ký, đồng ý hoặc mua thông qua áp dụng áp lực thời gian giả mạo.

  • Bait-and-Switch với các vật phẩm miễn phí hoặc phần thưởng khác — Các thông báo cho biết sai lầm rằng người dùng sẽ nhận được một cái gì đó miễn phí khi nó không phải như vậy.Ví dụ, khi nhấp vào thông báo tiếp theo, trở nên rõ ràng rằng cần có thứ gì đó tiếp theo để có được món quà.

  • Lừa người dùng vào việc mua hàng — Thông báo lừa người dùng vào việc mua hàng không định.Ví dụ, cho rằng nhấp vào thông báo tiếp theo dẫn trực tiếp đến hệ thống mua hàng được tải sẵn với các mặt hàng mà người dùng không chọn mua.

Trải nghiệm không nên không yêu cầu người dùng bật thông báo để tham gia hoặc tiến bộ trong trải nghiệm trò chơi.

Thực hiện

Thông báo kinh nghiệm triển khai bắt đầu với tạo một chuỗi thông báo và bao gồm gói trong dự án của bạn.Khi chúng được thiết lập, bạn có thể gửi thông báo với các tham số tùy chọn tùy chỉnh.

Ngoài ra, bạn có thể sử dụng Mở API đám mây để kích hoạt thông báo thông qua yêu cầu API tự do.

Tạo một chuỗi thông báo

Như với Lời mời gọi người chơi, bạn phải tạo và chỉnh sửa chuỗi thông báo của bạn trong Bảng điều khiển Nhà sáng tạo. Không có chuỗi thông báo trải nghiệm mặc định, vì vậy bước này là bắt buộc.

  1. Điều hướng đến Bảng điều khiển Nhà sáng tạo.

  2. Tương tự như huy hiệu, chuỗi thông báo được gắn vào một trải nghiệm cụ thể . Tìm thumbnail của trải nghiệm đó và nhấp vào nó.

  3. Trong cột bên trái, dưới Tham gia , nhấp vào Thông báo .

  4. Ở khu vực trung tâm, nhấp vào nút Tạo một chuỗi thông báo .

  5. Hãy nhập tên xác định (chỉ hiển thị cho bạn) và chuỗi thông báo tùy chỉnh; điều này giới hạn ở 99 ký tự và có thể bao gồm các tham số tùy chỉnh không giới hạn .Các thông báo sẽ tự động sử dụng tiêu đề trải nghiệm của bạn làm tiêu đề thông báo, nhưng bạn cũng có thể sử dụng thêm experienceName để tham chiếu đến trải nghiệm của bạn trong văn bản thông báo.

    Ví dụ chuỗi thông báo:

    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. Khi sẵn sàng, hãy nhấp vào nút Tạo chuỗi thông báo .

  7. Trên trang thông báo, trong bảng thông báo, nhấp vào nút trong cột Hành động và chọn Sao chép ID tài sản .

  8. Sử dụng ID sao chép cho giá trị chìa khóa messageId trong bảng payload như được minh họa trong ví dụ kịch bản .

Bao gồm gói

Để triển khai thông báo trải nghiệm, bạn phải lấy gói Luau từ Cửa hàng Nhà sáng tạo.

  1. Từ tab Xem, mở Hộp công cụ và chọn tab Cửa hàng Nhà sáng tạo .

    Toolbox toggle button in Studio
  2. Hãy chắc chắn rằng kiểu sắp xếp Mô hình được chọn, sau đó nhấp vào nút Xem tất cả đối với Danh mục .

  3. Tìm và nhấp vào ô Dev Modules .

  4. Tìm mô-đun Mở đám mây và nhấp vào nó, hoặc kéo và thả nó vào cửa sổ 3D.

  5. Trong cửa sổ Explorer, di chuyển toàn bộ mô hình OpenCloud vào ServerScriptService .

Gửi thông báo trải nghiệm

Khi bạn đã tạo một chuỗi thông báo và bao gồm gói trong dự án của bạn, bạn có thể gửi thông báo từ các kịch bản bên máy chủ.Các thông báo sẽ được gửi đến người dùng đã đăng ký tuổi 13+ thông qua dòng thông báo Roblox của họ, tại điểm này họ có thể tham gia trực tiếp vào trải nghiệm thông qua nút Tham gia trên thông báo và sinh ra theo dữ liệu phóng ra bởi dữ liệu phóng của bạn .

Notifications stream on the Roblox app

Để gửi thông báo cơ bản cho một người dùng cụ thể, hãy bao gồm ID tài sản chuỗi thông báo trong trường messageId, sau đó gọi chức năng createUserNotification với ID người nhận Player.UserId và dữ liệu yêu cầu.

Gửi thông báo trải nghiệm

local ServerScriptService = game:GetService("ServerScriptService")
local OCUserNotification = require(ServerScriptService.OpenCloud.V2.UserNotification)
local recipientPlayerID = 505306092
-- Trong payload, "messageId" là giá trị của ID tài sản thông báo
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

Tùy chỉnh thông báo bằng cách sử dụng tham số

Để tùy chỉnh thông báo cho mỗi người nhận, bạn có thể bao gồm tham số trong chuỗi thông báo, sau đó tùy chỉnh các tham số khi gọi API.Ví dụ, bạn có thể xác định chuỗi thông báo như:

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

Sau đó, hãy đặt các tham số userId-friendpoints trong kịch bản:

Tùy chỉnh thông báo bằng cách sử dụng tham số

local ServerScriptService = game:GetService("ServerScriptService")
local OCUserNotification = require(ServerScriptService.OpenCloud.V2.UserNotification)
local recipientPlayerID = 505306092
local userIdFriendParam = {int64Value = 3702832553}
local pointsParam = {stringValue = "5"}
-- Trong payload, "messageId" là giá trị của ID tài sản thông báo
-- Trong ví dụ này, chuỗi thông báo là "{userId-friend} đánh bại điểm cao nhất của bạn bằng {points} điểm! Thời gian nâng cấp?"
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

Yêu cầu người dùng bật kích hoạt thông báo

Để khuyến khích người dùng bật thông báo cho trải nghiệm của bạn, bạn có thể hiển thị một lời nhắc quyền trong trải nghiệm cho người dùng độ tuổi 13+ bằng cách sử dụng phương pháp ExperienceNotificationService:PromptOptIn().

The in-experience permission prompt encourages users to enable notifications

Bạn có thể kích hoạt lời nhắc trong bất kỳ ngữ cảnh thích hợp nào trong trải nghiệm của bạn mà có thể đảm bảo một thông báo trong tương lai.Văn bản của lời nhắc không thể tùy chỉnh và được tiêu chuẩn hóa trên tất cả các trải nghiệm.

Modal sẽ không xuất hiện nếu người dùng:

  • Dưới 13 tuổi.
  • Đã bật thông báo cho trải nghiệm của bạn.
  • Đã xem lời nhắc quyền cho trải nghiệm của bạn trong 30 ngày qua.

Để yêu cầu người dùng bật thông báo, bạn nên xác định trước tiên xem người dùng có đủ điều kiện không.Một khi đã xác nhận, bạn có thể hiển thị lời nhắc quyền cho người dùng.

  1. Gọi ExperienceNotificationService:CanPromptOptInAsync() , bọc trong một pcall() vì đó là cuộc gọi mạng không đồng bộ có thể thỉnh thoảng thất bại.
  2. Nếu người dùng có thể được yêu cầu, hãy gọi ExperienceNotificationService:PromptOptIn() .
LocalScript - Thực hiện thông báo quyền cấp nhanh

local ExperienceNotificationService = game:GetService("ExperienceNotificationService")
-- Chức năng kiểm tra xem người chơi có thể được yêu cầu bật thông báo hay không
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
-- Lắng nghe sự kiện thông báo chọn lựa đã đóng
ExperienceNotificationService.OptInPromptClosed:Connect(function()
print("Opt-in prompt closed")
end)

Bao gồm dữ liệu khởi động và phân tích

Để cải thiện thêm trải nghiệm người dùng, bạn có thể bao gồm dữ liệu khởi động trong thông báo, hữu ích cho các tình huống như chuyển hướng người dùng đến vị trí phối hợp hoặc tùy chỉnh trải nghiệm tham gia.Ngoài ra, bạn có thể bao gồm dữ liệu phân tích để phân đoạn hiệu suất của các loại thông báo khác nhau.Xin vui lòng cũng tham khảo ví dụ Lời mời gọi người chơi về cách thiết lập và sử dụng dữ liệu khởi chạy.

Bao gồm dữ liệu khởi chạy và dữ liệu phân tích

local ServerScriptService = game:GetService("ServerScriptService")
local OCUserNotification = require(ServerScriptService.OpenCloud.V2.UserNotification)
local recipientPlayerID = 505306092
-- Trong payload, "messageId" là giá trị của ID tài sản thông báo
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

Hệ thống giao hàng

Một hệ thống ngăn chặn thư rác tồn tại để đảm bảo chất lượng của các thông báo cho người dùng và bảo vệ kênh thông báo chia sẻ cho tất cả các nhà phát triển.Do đó, việc gửi thông báo không được đảm bảo.Hệ thống ngăn chặn thư rác này được thông báo trực tiếp bởi sự tham gia của người dùng: càng có nhiều người dùng tham gia với thông báo của bạn, họ sẽ nhận được nhiều tiếp cận hơn.Bạn có thể minh bạch theo dõi chỉ số tương tác trong bảng điều khiển phân tích analytics, như được giải thích dưới đây.

Các thông báo trải nghiệm có giới hạn tốc độ tĩnh; mỗi người dùng có thể nhận được một thông báo mỗi ngày từ một trải nghiệm nhất định, và bạn nhận được phản hồi minh bạch khi giới hạn tốc độ của người dùng đạt đến.

Ngoài ra, danh sách sau đây liệt kê một số trường hợp đặc biệt có thể dẫn đến không giao một thông báo:

  • Yêu cầu đủ điều kiện kinh nghiệm không được đáp ứng.
  • Người nhận không chọn nhận thông báo từ trải nghiệm của bạn.
  • Giới hạn tốc độ của người nhận cho trải nghiệm của bạn đã được đạt đến.
  • Giới hạn thời gian giảm tải hàng ngày của người nhận đã được đạt đến.
  • Tham số yêu cầu bị thiếu hoặc không hợp lệ.
  • Chuỗi thông báo đã được kiểm duyệt.
  • Đối với thông báo với sự đề cập của người dùng, không giao hàng xảy ra nếu một trong những điều kiện này được đáp ứng:
    • Người nhận và người dùng được đề cập không phải là bạn.
    • Người dùng được đề cập có Không được chọn cho "Cập nhật bạn bè về hoạt động của tôi?" dưới Riêng tưCài đặt khác trong cài đặt tài khoản Roblox của họ.

Phân tích

Hiệu suất của thông báo và đối tượng có thể nhận thông báo được hiển thị trong tab Phân tích của trang Thông báo nơi bạn tùy chỉnh chuỗi thông báo (chỉ cần tab từ Sáng tạo đến Phân tích ).

  1. Tương tự như huy hiệu, chuỗi thông báo được gắn vào một trải nghiệm cụ thể . Tìm thumbnail của trải nghiệm đó và nhấp vào nó.
  2. Trong cột bên trái, dưới Tham gia , nhấp vào Thông báo .
  3. Trên trang mục tiêu, nhấp vào tab Phân tích để chuyển sang bảng điều khiển phân tích.

tóm tắtquát các thông báo

Phần tổng kết phục vụ như bản lưu trữ thời gian thực hiện tổng thể của các thông báo của bạn.Tối thiểu 100 ấn tượng tổng hợp là cần thiết để hiển thị chỉ số liệuhiệu suất.

Thống kêMô tả
Người dùng đã chọn Tổng số người dùng đã bật thông báo cho trải nghiệm của bạn.Xin lưu ý rằng điều này bao gồm người dùng dưới 13 tuổi chỉ có thể nhận thông báo về cập nhật kinh nghiệm , không phải thông báo kinh nghiệm cá nhân hóa .
Ấn tượng Tổng số lượng ấn tượng người dùng mà tất cả các thông báo của bạn đã nhận được theo tổng hợp.
Nhấp chuột Tổng số lần nhấp vào tất cả các thông báo mà bạn đã nhận trong tổng hợp.
CTR Tỷ lệ mà người dùng nhấp vào thông báo của bạn, được tính là tỷ lệ nhấp vào so với số lần hiển thị.
Tắt Tỷ lệ mà người dùng tắt các thông báo cho trải nghiệm của bạn trực tiếp từ các thông báo của bạn, được tính là tỷ lệ tắt hành động so với số lần hiển thị.
Từ chối Tỷ lệ mà người dùng đang loại bỏ thông báo của bạn, được tính là tỷ lệ hủy hành động so với số lượng ấn tượng.

Số liệu phân tách theo mục

Bảng Thông báo trải nghiệm hiển thị các thống kê hiệu suất chi tiết cho mỗi thông báo với ít nhất 100 ấn tượng, được sắp xếp theo ngày ấn tượng đầu tiên cho thông báo đó.

Cột Tên là thông số xác định chính cho thông báo.Mặc định, tên phù hợp với tên xác định bạn đã đặt khi tạo chuỗi thông báo , nhưng bạn có thể thay thế nó thông qua trường category trong các cuộc gọi API của bạn, trong đó category thay thế tên.Thay đổi tên chuỗi trong Bảng điều khiển Nhà sáng tạo hoặc thay đổi chuỗi ID tin nhắn của bạn trong cuộc gọi API sẽ tạo một hàng mới trong bảng.

Nếu bạn muốn kiểm tra A/B hiệu suất của các chuỗi khác nhau, được khuyến nghị rằng bạn tạo một chuỗi thông báo hoàn toàn mới với tên tương tự, ví dụ:

  • EggHatchA — "Trứng vàng của bạn đã nở! Hãy đến gặp thú cưng mới của bạn."
  • EggHatchB — "Đó là thời gian nở! Hãy đến gặp thú cưng mới của bạn."

Tham chiếu API

Chức năng

tạo thông báo người dùng

createUserNotification ( ids : số , userNotification : UserNotification) : Kết quả thông báo người dùng

Gửi thông báo từ một kịch bản bên máy chủ.Yêu cầu người nhận Player.UserId và một Thông báo người dùng.Trả về một Kết quả thông báo người dùng.

Gửi thông báo trải nghiệm

local ServerScriptService = game:GetService("ServerScriptService")
local OCUserNotification = require(ServerScriptService.OpenCloud.V2.UserNotification)
local recipientPlayerID = 505306092
-- Trong payload, "messageId" là giá trị của ID tài sản thông báo
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

Loại

Thông báo người dùng

Bảng chứa chi tiết về thông báo sẽ được gửi cho người dùng.Phải có một bảng payload bao gồm các chuỗi messageIdtype cần thiết, và bảng parameters , joinExperienceanalyticsData tùy chọn.

Nhân vật chínhLoạiMô tả
messageIdchuỗiMột ID đại diện cho một mẫu tin nhắn thông báo có thể tùy chỉnh mà bạn tạo trong Bảng điều khiển Nhà sáng tạo.
typechuỗiLoại thông báo. Hiện tại chỉ "MOMENT" được hỗ trợ.
parametersbảngMột bảng các tham số được sử dụng để render một mẫu thông báo. Xem Tùy chỉnh thông báo bằng các tham số để ví dụ sử dụng.
joinExperiencebảngMột lời kêu gọi hành động đại diện cho việc tham gia vào một trải nghiệm.Hiện tại hỗ trợ một cặp chìa khóa-giá trị launchData mà đại diện cho dữ liệu bất kỳ có sẵn cho một trải nghiệm khi người dùng tham gia trải nghiệm từ thông báo; giá trị này được giới hạn tối đa 200 bayt.Xem Bao gồm dữ liệu khởi động và phân tích để ví dụ sử dụng.
analyticsDatabảngDữ liệu về cách phân tích được báo cáo.Hiện tại hỗ trợ một cặp chìa khóa-giá trị category đại diện cho danh thể loạithông báo, được sử dụng để nhóm dữ liệu phân tích.Xem Bao gồm dữ liệu khởi động và phân tích để ví dụ sử dụng.

Kết quả thông báo người dùng

Một đối tượng bọc chứa phản hồi từ một thông báo đã gửi. Bao gồm các cặp chìa khóa-giá trị sau:

Nhân vật chínhLoạiMô tả
statusCodesốMã trạng thái HTTP cho yêu cầu.
errorbảngBảng chứa codemessage chìa khóa mô tả mã lỗi GRPC và tin nhắn lỗi, lần lượt.
responsebảngBảng chứa idpath chìa khóa mô tả một UUID duy nhất và con đường tài nguyên của thông báo người dùng, lần lượt.