Lewati ke konten

Mobile API

Kemampuan mobile native diekspos dengan dua cara:

  • Manager per platformapplication.IOS (dalam file //go:build ios) dan application.Android (dalam file //go:build android). Gunakan ini untuk hal-hal yang bersifat platform-spesifik. Lihat referensi iOS dan Android untuk permukaan per-platform selengkapnya.
  • application.Mobile — satu manager terjaga build yang mencakup subset kemampuan yang berperilaku identik di kedua platform. Gunakan ini saat Anda ingin satu code path yang dikompilasi dan berjalan di mana saja.

application.Mobile mengirimkan ke IOS di iOS, ke Android di Android, dan ke stub no-op di desktop. Karena tidak memiliki build constraint, Anda dapat memanggilnya dari Go biasa yang agnostik platform — tidak perlu file //go:build Anda sendiri:

// Bekerja di file mana pun, pada target mana pun.
// Di desktop ini mengembalikan "" (no-op); di perangkat mengembalikan path yang sebenarnya.
dbDir := application.Mobile.StoragePath()
if dbDir == "" {
// Di luar perangkat, atau direktori tidak dapat dibuat — tangani sesuai.
return
}
db, _ := sql.Open("sqlite", filepath.Join(dbDir, "app.db"))

StoragePath() mengembalikan path absolut ke direktori file privat aplikasi — getFilesDir() di Android, direktori Application Support di iOS — tempat yang direkomendasikan untuk database dan file persisten lainnya. Mengembalikan string kosong di desktop, dan di perangkat jika direktori tidak tersedia (di iOS, jika tidak dapat dibuat), jadi periksa "" sebelum menggunakannya.

Manager Mobile mengekspos kemampuan yang tanda tangannya identik di iOS dan Android:

KemampuanAPICatatan
Share sheetMobile.Share(json){text, url}
Buka URL eksternalMobile.OpenURL(url)Browser sistem
Jaga layar tetap aktifMobile.SetKeepAwake(bool)
Senter / flashlightMobile.SetTorch(bool)common:torch
Inset safe-areaMobile.SafeAreaJSON(){top,bottom,left,right}
Info aplikasiMobile.AppInfoJSON(){name,version,build,bundleId}
Kunci orientasiMobile.SetOrientation(mode)portrait / landscape / auto
Status barMobile.SetStatusBar(json)style + visibilitas
Info penyimpananMobile.StorageJSON()bytes {free,total}
Path penyimpananMobile.StoragePath()Direktori file privat aplikasi
Daya / bateraiMobile.PowerJSON(){level,charging,lowPower}
Status jaringanMobile.NetworkJSON(){connected,type}
BiometrikMobile.BiometricAuthenticate(reason)common:biometric
Penyimpanan amanMobile.SecureGet(key) / Mobile.SecureDelete(key)Keychain / EncryptedSharedPreferences
GeolokasiMobile.GetLocation()one-shot → common:location
HapticsMobile.Haptic(type)impact / notification / selection
AkselerometerMobile.SetMotion(bool)common:motion
ProximityMobile.SetProximity(bool)common:proximity
Text-to-speechMobile.Speak(text) / Mobile.StopSpeak()
Inset keyboardMobile.SetKeyboardWatch(bool)common:keyboard
Perlindungan tangkapan layarMobile.SetScreenProtect(bool)common:screenCapture
KameraMobile.CapturePhoto() / Mobile.CaptureVideo()common:capture

Hasil asinkron tiba sebagai event common:*, persis seperti manager per-platform — lihat Events untuk payload-nya.

Kemampuan yang berbeda bentuknya antara iOS dan Android tidak ada di Mobile; panggil melalui application.IOS / application.Android dari file bertag build:

KeperluaniOSAndroid
Kecerahan (set)IOS.SetBrightness(0.0-1.0)Android.SetBrightness(0-100)
Kecerahan / orientasi (get)IOS.GetBrightness() / IOS.GetOrientation()Android.BrightnessJSON() / Android.OrientationJSON()
Notifikasi lokalIOS.PostNotification(json)Android.Notify(json)
Penyimpanan aman (tulis)IOS.SecureSet(key, value)Android.SecureSet(json)
Eksekusi latar belakangIOS.BeginBackgroundTask / EndBackgroundTaskAndroid.StartForegroundService / StopForegroundService