Внести изменения

Редактировать эту документацию

Переведите документацию или откройте весь проект на своём компьютере.

Ничего не будет опубликовано, пока вы не решите отправить свою работу.

Мобильный API

Кроссплатформенный менеджер application.Mobile — единая точка входа с защитой на уровне сборки для нативных мобильных возможностей, общих для iOS и Android

Нативные мобильные возможности доступны двумя способами:

  • Менеджеры для отдельных платформ — application.IOS (в файлах //go:build ios) и application.Android (в файлах //go:build android). Используйте их для всего, что зависит от конкретной платформы. Полный набор API для каждой платформы приведён в справочниках по iOS и Android.
  • application.Mobile — единый менеджер с защитой на уровне сборки, охватывающий подмножество возможностей, которые одинаково работают на обеих платформах. Используйте его, если нужен единый путь выполнения кода, который компилируется и работает везде.

application.Mobile

application.Mobile перенаправляет вызовы к IOS в iOS, к Android в Android и к заглушке, которая ничего не делает, в настольных системах. Поскольку ограничений сборки у него нет, его можно вызывать из обычного, не зависящего от платформы кода Go — собственные файлы //go:build не нужны:

go
// Works in any file, on any target.
// On desktop this returns "" (no-op); on device it returns the real path.
dbDir := application.Mobile.StoragePath()
if dbDir == "" {
    // Off-device, or the directory could not be created — handle accordingly.
    return
}
db, _ := sql.Open("sqlite", filepath.Join(dbDir, "app.db"))

StoragePath() возвращает абсолютный путь к каталогу личных файлов приложения — getFilesDir() в Android или каталогу Application Support в iOS. Это рекомендуемое место для баз данных и других постоянных файлов. Метод возвращает пустую строку в настольных системах, а на устройстве — если каталог недоступен (в iOS — если его не удаётся создать), поэтому перед использованием проверьте результат на "".

Возможности

Менеджер Mobile предоставляет возможности с одинаковыми сигнатурами в iOS и Android:

Возможность API Примечания
Системное меню «Поделиться» Mobile.Share(json) {text, url}
Открытие URL во внешнем приложении Mobile.OpenURL(url) Системный браузер
Предотвращение отключения экрана Mobile.SetKeepAwake(bool)
Фонарик Mobile.SetTorch(bool) → common:torch
Отступы безопасной области Mobile.SafeAreaJSON() {top,bottom,left,right}
Сведения о приложении Mobile.AppInfoJSON() {name,version,build,bundleId}
Блокировка ориентации Mobile.SetOrientation(mode) portrait / landscape / auto
Строка состояния Mobile.SetStatusBar(json) стиль и видимость
Сведения о хранилище Mobile.StorageJSON() {free,total} байт
Путь к хранилищу Mobile.StoragePath() Каталог файлов, доступный только приложению
Питание и аккумулятор Mobile.PowerJSON() {level,charging,lowPower}
Состояние сети Mobile.NetworkJSON() {connected,type}
Биометрия Mobile.BiometricAuthenticate(reason) → common:biometric
Защищённое хранилище Mobile.SecureGet(key) / Mobile.SecureDelete(key) Keychain / EncryptedSharedPreferences
Геолокация Mobile.GetLocation() однократный запрос → common:location
Тактильная обратная связь Mobile.Haptic(type) воздействие / уведомление / выбор
Акселерометр Mobile.SetMotion(bool) → common:motion
Датчик приближения Mobile.SetProximity(bool) → common:proximity
Синтез речи Mobile.Speak(text) / Mobile.StopSpeak()
Отступы экранной клавиатуры Mobile.SetKeyboardWatch(bool) → common:keyboard
Захват экрана Mobile.SetScreenProtect(bool) → common:screenCapture
Камера Mobile.CapturePhoto() / Mobile.CaptureVideo() → common:capture

Асинхронные результаты поступают в виде событий common:*, точно так же, как при использовании менеджеров отдельных платформ. Описание полезной нагрузки см. в разделе События.

Что остаётся платформозависимым

Возможности, форма которых различается в iOS и Android, не представлены в Mobile; вызывайте их через application.IOS / application.Android из файла с тегом сборки:

Аспект iOS Android
Яркость (установка) IOS.SetBrightness(0.0-1.0) Android.SetBrightness(0-100)
Яркость / ориентация (получение) IOS.GetBrightness() / IOS.GetOrientation() Android.BrightnessJSON() / Android.OrientationJSON()
Локальное уведомление IOS.PostNotification(json) Android.Notify(json)
Защищённое хранилище (запись) IOS.SecureSet(key, value) Android.SecureSet(json)
Выполнение в фоновом режиме IOS.BeginBackgroundTask / EndBackgroundTask Android.StartForegroundService / StopForegroundService
Редактировать страницу

Последнее обновление: