Skip to content

App Methods (Native Features)

App methodlari, cihaz ve platform ozelliklerine erisen methodlardir.

getInfo

Mevcut kullanici bilgilerini getirir.

js
const user = await gameTegra.getInfo()
console.log(user)
// {
//   id: "user-123",
//   name: "Ahmet",
//   surname: "Yilmaz",
//   email: "ahmet@example.com",
//   age: 25,
//   avatar: "https://..."
// }
csharp
var user = await gameTegra.getUserInfo();
Debug.Log($"Ad: {user.name}, Soyad: {user.surname}");
gdscript
var user = await gameTegra.getUserInfo()
print("Ad: ", user["name"])

Donus Tipi:

AlanTipAciklama
idstringKullanici benzersiz ID'si
namestringAd
surnamestringSoyad
emailstringE-posta adresi
agenumberYas
avatarstringProfil resmi URL'i

getLanguage

Uygulama ve cihaz dil bilgisini getirir.

js
const lang = await gameTegra.getLanguage()
console.log(lang)
// {
//   language: "tr",
//   appLanguage: "tr",
//   deviceLanguage: "tr-TR"
// }
csharp
var lang = await gameTegra.getLanguage();
Debug.Log($"Dil: {lang.language}, Uygulama: {lang.appLanguage}");
gdscript
var lang = await gameTegra.getLanguage()
print("Dil: ", lang["language"])

Donus Tipi:

AlanTipAciklama
languagestringAktif dil kodu
appLanguagestringUygulama dili
deviceLanguagestringCihaz dili

getLocation

Cihazin GPS konumunu getirir.

js
const location = await gameTegra.getLocation()
console.log(location)
// { latitude: 41.0082, longitude: 28.9784, ... }
csharp
var location = await gameTegra.getLocation();
gdscript
var location = await gameTegra.getLocation()

Not: Konum izni gerektirir. Kullanicidan izin istenir.


getParams

Uygulama parametrelerini getirir. Mini app'in baslatilma parametreleri bu method ile alinir.

js
const params = await gameTegra.getParams()
console.log(params)
// { gameId: "abc", mode: "tournament", ... }
csharp
var params = await gameTegra.getParams();
gdscript
var params = await gameTegra.getParams()

camera

Cihazin kamerasini acar ve cekilmis gorseli dondurur.

js
const photo = await gameTegra.openCamera()
csharp
var photo = await gameTegra.openCamera();
gdscript
var photo = await gameTegra.openCamera()

Not: Kamera izni gerektirir.


getImage

Cihazin galerisini acar ve secilen gorseli dondurur.

js
const image = await gameTegra.openGallery()
csharp
var image = await gameTegra.openGallery();
gdscript
var image = await gameTegra.openGallery()

Not: Galeri izni gerektirir.


pay

Odeme islemini baslatir.

js
const result = await gameTegra.pay({ amount: 100 })
csharp
var result = await gameTegra.pay(
    gameTegra.@params("amount", 100)
);
gdscript
# Dictionary olarak
var result = await gameTegra.pay({ "amount": 100 })

# veya dogrudan sayi
var result = await gameTegra.pay(100)

Parametreler:

AlanTipZorunluAciklama
amountnumberEvetOdeme tutari
...anyHayirDesteklenen diger parametreler

vibrate

Cihazi titretir. Fire-and-forget: sonuc beklemez.

js
gameTegra.vibrate()
csharp
gameTegra.vibrate();
gdscript
gameTegra.vibrate()

showLoading / hideLoading

Yukleniyor gostergesini gosterir/gizler. Fire-and-forget.

js
gameTegra.showLoading()

// Islem bittiginde
gameTegra.hideLoading()
csharp
gameTegra.showLoading();

// Islem bittiginde
gameTegra.hideLoading();
gdscript
gameTegra.showLoading()

# Islem bittiginde
gameTegra.hideLoading()

openMiniApp

Baska bir mini uygulamayi acar.

js
const result = await gameTegra.openMiniApp({ miniapp: 'other-game-id' })
csharp
await gameTegra.openMiniApp(
    gameTegra.@params("miniapp", "other-game-id")
);
gdscript
var result = await gameTegra.openMiniApp({ "miniapp": "other-game-id" })

Parametreler:

AlanTipZorunluAciklama
miniappstringEvetAcilacak mini uygulamanin ID'si

searchMiniapps

Mini uygulamalari arar.

js
const results = await gameTegra.searchMiniapps('puzzle')
csharp
var results = await gameTegra.searchMiniApps("puzzle");
gdscript
var results = await gameTegra.searchMiniapps("puzzle")

Parametreler:

AlanTipZorunluAciklama
querystringEvetArama sorgusu

reportEvent

Analitik event'i raporlar.

js
await gameTegra.reportEvent({
  eventType: 'level_complete',
  data: { level: 5, score: 9500, time: 120 }
})
csharp
await gameTegra.reportEvent("level_complete",
    gameTegra.@params("level", 5, "score", 9500, "time", 120)
);
gdscript
var result = await gameTegra.reportEvent("level_complete", {
    "level": 5,
    "score": 9500,
    "time": 120
})

Parametreler:

AlanTipZorunluAciklama
eventTypestringEvetEvent tipi/adi
dataobjectHayirEvent ile gonderilecek ek veri

reportMiniApp

Oyun içinden şikayet veya geri bildirim gönderir. Engine, mevcut oyunun ID'sini session'dan otomatik olarak çözer — geliştirici bunu göndermek zorunda değildir.

meta ile şikayete bağlı herhangi bir bağlamsal veri iletebilirsin (kim ya da ne şikayet ediliyor, oda, maç vb.). meta üzerinde herhangi bir şema zorunluluğu yoktur; backend'in ihtiyaç duyduğu her şeyi ekleyebilirsin.

js
// Oyuncu şikayet et
await gameTegra.reportMiniApp({
  type: 'report',
  message: 'Bu oyuncu hile yapıyor.',
  meta: { target_type: 'user', target_user_id: 'user_abc123' }
})

// Oyun hakkında geri bildirim gönder
await gameTegra.reportMiniApp({
  type: 'feedback',
  message: 'Harika oyun ama 5. seviye çok zor.',
  meta: { target_type: 'minigame' }
})

// Ek bağlam ile oyuncu şikayet et
await gameTegra.reportMiniApp({
  type: 'report',
  message: 'Küfür ediyor.',
  meta: {
    target_type: 'user',
    target_user_id: 'user_abc123',
    room_id: 'room_99',
    match_id: 'match_001'
  }
})
csharp
// Oyuncu şikayet et
await SuperGame.reportMiniApp("report", "Bu oyuncu hile yapıyor.",
    SuperGame.@params("target_type", "user", "target_user_id", "user_abc123"));

// Oyun hakkında geri bildirim gönder
await SuperGame.reportMiniApp("feedback", "Harika oyun ama 5. seviye çok zor.",
    SuperGame.@params("target_type", "minigame"));
gdscript
# Oyuncu şikayet et
await gameTegra.reportMiniApp({
    "type": "report",
    "message": "Bu oyuncu hile yapıyor.",
    "meta": { "target_type": "user", "target_user_id": "user_abc123" }
})

# Oyun hakkında geri bildirim gönder
await gameTegra.reportMiniApp({
    "type": "feedback",
    "message": "Harika oyun ama 5. seviye çok zor.",
    "meta": { "target_type": "minigame" }
})

Parametreler:

AlanTipZorunluAçıklama
typestringEvet"report" veya "feedback"
messagestringEvetKullanıcının açıklaması
metaobjectHayırSerbest formatlı bağlam key-value verileri

Yaygın meta anahtarları (zorunlu değil — backend'in ihtiyacına göre ekle):

AnahtarDeğerAçıklama
target_type"user" | "minigame"Ne şikayet ediliyor
target_user_idstringŞikayet edilen oyuncunun ID'si
room_idstringOlayın yaşandığı oda
match_idstringMaç ID'si

target_user_id nasıl alınır?

Şikayet edilen kullanıcının ID'si, platformdan zaten aldığın oyun verisinde mevcuttur: oda katılımcıları, liderlik tablosu girdileri, stream payload'ları vb. Doğrudan meta'ya aktarabilirsin.


getSafeAreaInsets

Cihazın ekran kesimi (notch, Dynamic Island, home indicator) için güvenli alan değerlerini döndürür. Platform bu değerleri WebView yüklendikten hemen sonra otomatik olarak inject eder — herhangi bir izin gerekmez.

Değerler mantıksal piksel (dp) cinsindendir.

js
const insets = supergame.getSafeAreaInsets()
// iPhone 16          → { top: 59, bottom: 34, left: 0, right: 0 }
// iPhone 13 (notch)  → { top: 47, bottom: 34, left: 0, right: 0 }
// iPhone SE          → { top: 20, bottom: 0,  left: 0, right: 0 }
// Android (cutout'suz) → { top: 0, bottom: 0, left: 0, right: 0 }
csharp
// Yakında
gdscript
# Yakında

Platform aynı zamanda CSS custom property'leri de inject eder — JS kullanmadan CSS'te doğrudan kullanabilirsin:

css
.game-hud {
  padding-top: var(--sa-top, 0px);
  padding-bottom: var(--sa-bottom, 0px);
}

Donus Tipi:

AlanTipAçıklama
topnumberNotch / status bar / Dynamic Island yüksekliği
bottomnumberHome indicator yüksekliği (fiziksel home butonlu cihazlarda 0)
leftnumberSol güvenli alan (genellikle 0, yatay modda notch'lu cihazlarda değer alır)
rightnumberSağ güvenli alan

TIP

top > 20 ise cihazın notch veya Dynamic Island'ı var demektir. bottom > 0 ise home indicator var, UI'ı o kadar yukarıda bitirmelisin.

Arka plan tam ekran kalır

Safe area insets sadece UI elementlerini (buton, skor, can barı) nereye koyacağını söyler. Arka plan rengi/görseli notch arkasına da uzanır — beyaz boşluk oluşmaz, tam ekran hissi korunur.


setOrientation

Ekran yonunu runtime'da degistirir. miniapp.yaml'daki statik orientation ayarini gecer, mini-app kapandiginda otomatik olarak varsayilana doner.

js
// Her zaman yatay yap
await gameTegra.setOrientation({ mode: 'landscape' })

// Her zaman dikey yap
await gameTegra.setOrientation({ mode: 'portrait' })

// Telefon sensörüne birak (varsayılan)
await gameTegra.setOrientation({ mode: 'auto' })
csharp
// Her zaman yatay yap
await SuperGame.setOrientation("landscape");

// Her zaman dikey yap
await SuperGame.setOrientation("portrait");

// Telefon sensörüne birak (varsayılan)
await SuperGame.setOrientation("auto");
gdscript
# Her zaman yatay yap
await gameTegra.setOrientation("landscape")

# Her zaman dikey yap
await gameTegra.setOrientation("portrait")

# Telefon sensörüne birak (varsayılan)
await gameTegra.setOrientation("auto")

Parametreler:

AlanTipZorunluVarsayılanAçıklama
modestringHayır"auto""portrait", "landscape" veya "auto"

TIP

miniapp.yaml ile fark: orientation YAML'i mini-app ilk acildiginda uygulanir. setOrientation ise oyun icinde istediginiz anda cagrilabilir — ornegin oyun baslarken landscape, ana menu'de auto yapmak icin idealdir.

INFO

Ekran yonu icin JS Web API'larini da kullanabilirsiniz — bunlar WebView icinde calismaktadir:

js
// Mevcut yonu oku
screen.orientation.type  // "portrait-primary" | "landscape-primary"

// Degisiklikleri dinle
screen.orientation.addEventListener('change', () => {
  console.log(screen.orientation.type)
})

close

MiniApp'i tamamen kapatır ve session'ı yok eder. Uygulama bellekten silinir; durum (state) korunmaz.

js
await supergame.close()
csharp
await SuperGame.Close();
gdscript
await SuperGame.close()

Not: Bu işlem geri alınamaz. Session tamamen sonlandırılır; kullanıcı uygulamayı yeniden açmak isterse sıfırdan başlar.


sendToBackground

MiniApp'i arka plana gönderir. Session bellekte canlı kalır; kullanıcı geri döndüğünde kaldığı yerden devam eder.

js
await supergame.sendToBackground()
csharp
await SuperGame.SendToBackground();
gdscript
await SuperGame.send_to_background()

Not: Overlay menü butonundaki (○) davranışın aynısıdır. State korunur, yeniden yükleme yapılmaz.


showMenu

Native MiniApp menü overlay'ini açar. Menüde "Re-open MiniApp" (yeniden yükle) ve "Force Close" seçenekleri bulunur. Overlay menü butonundaki 3 nokta (⋯) ile açılan ekranın aynısıdır.

js
await supergame.showMenu()
csharp
await SuperGame.ShowMenu();
gdscript
await SuperGame.show_menu()

Not: Geliştiriciler bu üç metodu kendi UI elemanlarına bağlayarak overlay menü butonuna gerek kalmadan aynı işlevselliği sunabilir.


onBackground

Mini-app arka plana alındiginda cağrılan bir callback kaydeder.

Platform şu durumlarda bu eventi tetikler:

  • Kullanıcı Discovery feed'inde başka bir mini-app'e kaydırınca (mevcut mini-app ekrandan çıkar)
  • Kullanıcı overlay menüdeki ○ butonu ile mini-app'i arka plana gönderince
  • sendToBackground() çağrıldığında

Platform ayrıca arka plana geçişte WebView içindeki tüm <audio> ve <video> elementlerini otomatik olarak pause eder. Gyroscope/accelerometer stream'leri de durdurulur; multiplayer bağlantıları açık kalır.

js
const unsub = await supergame.onBackground(() => {
  gameLoop.stop()
  bgMusic.pause()
})

// Dinlemeyi durdurmak için:
unsub()
csharp
var unsub = SuperGame.onBackground(() => {
    PauseGame();
});

// Dinlemeyi durdurmak için:
unsub();
gdscript
var unsub = gameTegra.onBackground(func(): pause_game())

# Dinlemeyi durdurmak için:
unsub.call()

Donus:

  • JavaScript: Promise<Function> — çözülünce unsubscribe fonksiyonu döner.
  • Unity: Action — çağrıldığında unsubscribe eder.
  • Godot: Callable.call() ile unsubscribe eder.

onForeground

Mini-app tekrar görünür hale geldiginde çağrılan bir callback kaydeder.

Platform şu durumlarda bu eventi tetikler:

  • Kullanıcı Discovery feed'inde bu mini-app'e geri kaydırınca
  • Arka plandan resume edilince
js
const unsub = await supergame.onForeground(() => {
  gameLoop.start()
  bgMusic.play()
})

// Dinlemeyi durdurmak için:
unsub()
csharp
var unsub = SuperGame.onForeground(() => {
    ResumeGame();
});

// Dinlemeyi durdurmak için:
unsub();
gdscript
var unsub = gameTegra.onForeground(func(): resume_game())

# Dinlemeyi durdurmak için:
unsub.call()

Donus:

  • JavaScript: Promise<Function> — çözülünce unsubscribe fonksiyonu döner.
  • Unity: Action — çağrıldığında unsubscribe eder.
  • Godot: Callable.call() ile unsubscribe eder.

Tam kullanım örneği

js
await supergame.waitUntilReady()

supergame.onBackground(() => {
  // Oyunu durdur — platform audio ve sensor stream'leri zaten durdurdu
  gameLoop.stop()
})

supergame.onForeground(() => {
  // Kaldığın yerden devam et
  gameLoop.start()
})
csharp
void Start()
{
    SuperGame.onBackground(() => {
        // Oyunu durdur
        Time.timeScale = 0f;
        bgMusic.Pause();
    });

    SuperGame.onForeground(() => {
        // Kaldığın yerden devam et
        Time.timeScale = 1f;
        bgMusic.Play();
    });
}
gdscript
func _ready():
    gameTegra.onBackground(func():
        # Oyunu durdur
        get_tree().paused = true
    )
    gameTegra.onForeground(func():
        # Kaldığın yerden devam et
        get_tree().paused = false
    )

WARNING

onForeground callback'i içinde bgMusic.play() gibi ses başlatma işlemleri bazı tarayıcılarda kullanıcı etkileşimi olmadan çalışmayabilir. Mevcut WebView ortamında genellikle sorun yoktur; ancak test etmeniz önerilir.