การแชร์ เพื่อน และคำเชิญในเกม PlayDrop
แชร์เกมพร้อมภาพหรือคลิป อ่านข้อมูลแนบตอนเปิดเกม เลือกเพื่อน ส่งการ์ดคำเชิญและการ์ดท้าแข่งใน PlayDrop Chat และแนะนำเกมอื่น
PlayDrop ดูแลหน้าต่างแชร์ รายชื่อเพื่อน และแชทให้ เกมของคุณเพียงเรียกใช้ในจังหวะที่เหมาะสม ผู้เล่นชวนเพื่อนมา และเพื่อนก็เข้ามาในเกมของคุณ
แชร์เกม
เรียก sdk.host.share() จากการแตะหรือคลิก ฟังก์ชันนี้แชร์หน้าสาธารณะของเกมพร้อมข้อความ ภาพ หรือวิดีโอสั้นที่ไม่บังคับ และข้อมูลแนบตอนเปิดเกมที่ไม่บังคับ
shareButton.addEventListener("click", async () => {
try {
await sdk.host.share({ text: `I reached level ${level} in Moon Jump`, image: scoreCardBlob, payload: "level-7" });
} catch (error) {
console.warn("Share failed", error);
}
});image: Blob แบบ GIF, JPEG, PNG หรือ WebP ขนาดไม่เกิน 8 MiB โฮสต์ที่แนบภาพไม่ได้จะแชร์เฉพาะลิงก์video: Blob แบบ MP4 ยาวไม่เกิน 15 วินาทีและไม่เกิน 20,000,000 ไบต์ ใช้แทนภาพ H.264/AAC ที่ 1080p ในสัดส่วน 16:9, 9:16 หรือ 1:1 ใช้ได้ดีที่สุด โฮสต์ที่ไม่รองรับวิดีโอจะปฏิเสธด้วยhost_share_video_unsupportedแทนที่จะแชร์ลิงก์ธรรมดา- เตรียม Blob ไว้ก่อนการแตะ หากสร้างหลังการแตะ เบราว์เซอร์อาจไม่อนุญาตให้แชร์แล้ว
- คุณแชร์ URL ที่กำหนดเองหรือไฟล์อื่นไม่ได้ ลิงก์จะเป็นหน้าเกมเสมอ
ข้อผิดพลาดของภาพคือ invalid_host_share_image, host_share_image_type และ host_share_image_too_large
อ่านข้อมูลแนบตอนเปิดเกม
payload ยาวได้สูงสุด 256 ตัวอักษรแบบ base64url ผู้เล่นที่เปิดลิงก์ที่แชร์จะเริ่มเกมโดยมี sdk.host.launchPayload เป็นค่านั้น หรือเป็น null ให้ถือว่าเป็นอินพุตที่ไม่น่าเชื่อถือ: ตรวจสอบความถูกต้อง และตรวจสอบบนเซิร์ฟเวอร์ว่าผู้เล่นเข้าห้องที่ระบุไว้ได้จริง ห้ามใส่ข้อมูลรับรองไว้ในนั้นเด็ดขาด
เลือกเพื่อนและส่งการ์ดเกม
sdk.social.selectFriends({ max }) เปิดตัวเลือกเพื่อนของ PlayDrop (1 ถึง 10 ค่าเริ่มต้นคือ 1) และส่งคืนเฉพาะเพื่อนที่ผู้เล่นเลือก หรือ [] หากยกเลิก จากนั้นส่งการ์ดที่จะแสดงใน PlayDrop Chat:
const [friend] = await sdk.social.selectFriends({ max: 1 });
if (friend) {
await sdk.social.sendMessage({
recipientUserId: friend.id,
type: "challenge",
title: "Beat my time: 42.3 s",
subtitle: "Moon Jump, level 7",
payload: "level-7",
clientMessageId: `challenge-${runId}-${friend.id}`,
});
}typeเป็นinvite,request,gift,challengeหรือturntitleยาวได้สูงสุด 80 ตัวอักษร และsubtitleสูงสุด 160expiresInSecondsอยู่ระหว่าง 60 วินาทีถึง 30 วัน (ค่าเริ่มต้น)clientMessageIdทำให้ลองใหม่ได้อย่างปลอดภัย: การใช้ค่าเดิมซ้ำจะส่งคืนข้อความเดิม- คุณส่งข้อความถึงเพื่อนที่ผู้เล่นเลือก เพื่อนที่เล่นเกมนี้ และผู้เล่นที่เคยส่งข้อความในเกมถึงกันอยู่แล้วได้ คนแปลกหน้าที่เจอจากการจับคู่จะส่งข้อความถึงไม่ได้
อ่านการ์ดที่ได้รับด้วย getMessages({ limit }) โดยเรียงจากเก่าสุดก่อน แล้วทำเครื่องหมายว่าจัดการแล้วทีละใบด้วย consumeMessage(message.id) ผู้ส่งคือ message.from.id
const page = await sdk.social.getMessages({ limit: 20 });
for (const message of page.messages) {
await applyCard(message.type, message.from.id, message.payload);
await sdk.social.consumeMessage(message.id);
}ทำต่อด้วย cursor: page.nextCursor จนกว่าจะเป็น null
เพื่อนที่เล่นเกมนี้
sdk.social.listGameFriends() ส่งคืนเพื่อนที่มีเซสชันล่าสุดในเกมนี้: เหมาะสำหรับปุ่ม "เล่นกับ" ฟังก์ชันนี้ไม่เปิดเผยรายชื่อเพื่อนทั้งหมดหรือสถานะออนไลน์ openProfile(userId) เปิดโปรไฟล์ของผู้เล่น และ openChat({ recipientUserId, draftMessage }) เปิดแชทพร้อมข้อความร่างที่แก้ไขได้ ซึ่งผู้เล่นจะส่งเอง
ผู้เล่นใหม่ที่มาจากเพื่อนอาจมีค่า sdk.host.launchFriend เสนอให้เล่นกับเพื่อนคนนั้นและยืนยันด้วย selectFriends({ max: 1 }) ห้ามเริ่มอะไรโดยอัตโนมัติเด็ดขาด
แนะนำเกมอื่น
ในช่วงพักตามธรรมชาติ เช่น ตอนจบเกม sdk.host.showGames({ games: ["@creator/name"] }) จะแสดงการ์ด PlayDrop ของเกมสาธารณะอื่นหนึ่งถึงสามเกมและหยุดเกมของคุณชั่วคราว ฟังก์ชันนี้ส่งคืน played (แล้ว PlayDrop จะสลับเกม) หรือ dismissed ส่วน sdk.host.preloadGame(ref) บอกใบ้ถึงเกมที่ผู้เล่นอาจเปิดต่อไป
ข้อกำหนด
การแชร์และการเรียกฟีเจอร์โซเชียลต้องใช้แพ็กเกจที่ใช้ SDK ฟีเจอร์เพื่อนต้องมีผู้เล่นที่เข้าสู่ระบบแล้ว หน้าต่างของโฮสต์จะหยุดเกมชั่วคราว ให้จัดการการหยุดชั่วคราวและการเล่นต่อ