Delning, vänner och inbjudningar i PlayDrop-spel
Dela ett spel med en bild eller ett klipp, läs startdata, välj vänner, skicka inbjudnings- och utmaningskort i PlayDrop Chat och rekommendera andra spel.
PlayDrop hanterar delningsvyn, vänlistan och chatten; ditt spel ber om dem vid rätt tillfälle. Spelarna tar med sina vänner, och vännerna hamnar i ditt spel.
Dela spelet
Anropa sdk.host.share() från ett tryck eller klick. Det delar spelets offentliga sida med valfri text, en bild eller en kort video och valfri startdata.
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: en Blob i formatet GIF, JPEG, PNG eller WebP på upp till 8 MiB. Värdar som inte kan bifoga bilder delar bara länken.video: en MP4-Blob på högst 15 sekunder och 20 000 000 byte, i stället för en bild. H.264/AAC i 1080p i 16:9, 9:16 eller 1:1 fungerar bäst. Värdar utan stöd för video avvisar anropet medhost_share_video_unsupportedi stället för att dela en vanlig länk.- Förbered Bloben före trycket; att generera den efter trycket kan göra att webbläsaren inte längre tillåter delningen.
- Du kan inte dela en egen URL eller andra filer. Länken är alltid spelets sida.
Bildfelen är invalid_host_share_image, host_share_image_type och host_share_image_too_large.
Läs startdata
payload är upp till 256 base64url-tecken. En spelare som öppnar den delade länken startar spelet med sdk.host.launchPayload satt till det värdet, eller null. Behandla det som opålitlig indata: validera det och kontrollera på din server att spelaren får gå med i ett rum som det anger. Lägg aldrig inloggningsuppgifter i det.
Välj vänner och skicka spelkort
sdk.social.selectFriends({ max }) öppnar PlayDrops vänväljare (1 till 10, standard 1) och returnerar bara de vänner som spelaren valde, eller [] om spelaren avbryter. Skicka sedan ett kort som visas i 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ärinvite,request,gift,challengeellerturn.titlehar upp till 80 tecken ochsubtitleupp till 160.expiresInSecondsär från 60 sekunder till 30 dagar (standard).clientMessageIdgör ett nytt försök säkert: om du återanvänder det returneras det ursprungliga meddelandet.- Du kan skicka meddelanden till vänner som spelaren har valt, vänner som spelar det här spelet och spelare som spelaren redan utbyter spelmeddelanden med. Främlingar från matchningen kan inte få meddelanden.
Läs inkommande kort med getMessages({ limit }), äldst först, och markera sedan varje kort som hanterat med consumeMessage(message.id). Avsändaren är 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);
}Fortsätt med cursor: page.nextCursor tills det är null.
Vänner som spelar det här spelet
sdk.social.listGameFriends() returnerar vänner med en nylig session i det här spelet: en bra lista för knappar som ”spela med”. Den visar inte hela vänlistan eller närvaro. openProfile(userId) öppnar en spelares profil och openChat({ recipientUserId, draftMessage }) öppnar Chatt med ett redigerbart utkast som spelaren skickar själv.
En ny spelare som kom via en vän kan ha sdk.host.launchFriend satt. Erbjud att spela med vännen och bekräfta med selectFriends({ max: 1 }); starta aldrig något automatiskt.
Rekommendera andra spel
Vid en naturlig paus, som när spelet är slut, visar sdk.host.showGames({ games: ["@creator/name"] }) PlayDrop-kort för ett till tre andra offentliga spel och pausar ditt. Anropet slutförs med played (PlayDrop byter då spel) eller dismissed. sdk.host.preloadGame(ref) tipsar om spelet som spelaren kanske öppnar härnäst.
Krav
Delning och sociala anrop kräver ett paket som använder SDK:t. Vänfunktioner kräver en inloggad spelare. Fönster som värden äger pausar spelet; hantera paus och återupptagning.