Open Play SDK API başvurusu
    Preparing search index...

    Interface PlayerClient

    Oyuncu client'ının yalnız public, generic yüzeyi.

    interface PlayerClient {
        catalog: PlayerCatalog;
        data: PlayerData;
        notifications: PlayerNotifications;
        realtime: RealtimeClient;
        session: PlayerSession;
        store: PlayerStore;
        dispose(): Promise<void>;
        leaderboard(
            key: string,
            options?: PlayerLeaderboardOptions,
        ): Promise<PlayerLeaderboardView>;
        plugin<
            TQueries extends
                Readonly<Record<string, PluginQueryDefinition<unknown, unknown>>>,
            TCommands extends
                Readonly<Record<string, PluginCommandDefinition<unknown, unknown>>>,
            TModules extends Readonly<Record<string, PluginModuleDefinition>>,
        >(
            binding: PluginBinding<TQueries, TCommands, TModules>,
        ): BoundPlugin<TQueries, TCommands, TModules>;
        publicPlugin<
            TQueries extends
                Readonly<Record<string, PluginQueryDefinition<unknown, unknown>>>,
            TCommands extends
                Readonly<Record<string, PluginCommandDefinition<unknown, unknown>>>,
            TModules extends Readonly<Record<string, PluginModuleDefinition>>,
        >(
            binding: PluginBinding<TQueries, TCommands, TModules>,
        ): PublicBoundPlugin<TQueries, TCommands, TModules>;
    }

    Implemented by

    Index

    Properties

    catalog: PlayerCatalog

    Katalog okuması (SPEC-0197 S3b): oyuncu kitlesi, çerez oturumuyla; yalnız oyuncu satırları, contentRevision ve visibility yoktur. Oturum yoksa 401 (CrxError, Auth). Koşullu GET: ifNoneMatch eşitse { status: 304 }. catalog.groups: operatörün yayınladığı içerik grupları (SPEC-0221).

    Oyuncu verisi (bulut kaydı, DESIGN.md §10.34): oyuncunun kendi oturumuyla kendi anahtar-değer kayıtları. Değer sunucuda yorumlanmayan opak JSON nesnesidir (en çok 64 KiB, 16 anahtar); yazımlar sürümlüdür (create yoksa, update/delete sürüm eşleşirse) ve uyuşmazlık PlayerDataConflict fırlatır.

    notifications: PlayerNotifications

    Bildirimler (SPEC-0224 S6): cihaz kaydı, tarayıcı web push açma/kapama ve gelen kutusu. session.logout() bu sayfada kayıtlı web cihazını oturumu kapatmadan ÖNCE sunucuda kapatır (hata çıkışı engellemez).

    realtime: RealtimeClient

    Authenticated native realtime transport; connect öncesi session gerekir.

    session: PlayerSession

    Cookie/session yaşam döngüsü.

    Mağaza (SPEC-0222): oyuncunun görebildiği vitrinler (store.catalog) ve kendi oturumuyla satın alma (store.buy). Kimlik yalnız çerez oturumundan gelir; tutarlar bigint'tir. Satın alma Idempotency-Key taşır (verilmezse SDK üretir) ve tipli retleri storeBuyErrorCode(error) ile ayrışır.

    Methods

    • Local client kaynaklarını kapatır; server logout değildir.

      Returns Promise<void>

    • Çekirdek leaderboard okuması (SPEC-0225 K5): oyuncu oturumuyla tablonun ilk sayfası ve oyuncunun kendi satırı.

      Neden yazıldı: Oyun HUD'u günlük sıralamayı sunucu anahtarı olmadan okur. Yalnız oyuncuya açık (player_visible) tablolar görünür; yasaklı/silinmiş oyuncular süzülür. rank ve score kayıpsız bigint'tir.

      Parametreler

      • key: string — tablo anahtarı (örn. package-ride.daily-earnings); URL'e kaçırılarak yazılır
      • options.limit?: number — satır sayısı, 1…50 (aksi CrxError(Contract), istek gönderilmez)
      • options.signal?: AbortSignal — iptal

      Dönüş

      • Promise<PlayerLeaderboardView> — özet, satırlar ve me (null: bu sezonda puanı yok)

      Hatalar

      • CrxError(Auth) — oturum yok (401); CrxError(Http) — tablo yok/görünmez/modül kapalı (404); CrxError(Network|Timeout|Cancelled); CrxError(Contract) — bozuk gövde

      Parameters

      Returns Promise<PlayerLeaderboardView>