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.