Jump to content
View in the app

A better way to browse. Learn more.

FGX Native

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
  • Status: Fixed
  • Priority: Minor
  • Resolution: Fixed
  • Platform: iOS
  • Affects version 1.9.4.1
  • Fix version: 1.10.0.0

Добрый день.

В настоящее время средствами библиотеки показать свое  местоположение на IOS невозможно.

Но, в случае попытки сделать это при помощи API IOS мы убеждаемся в невозможности использования местоположения с помощью легкого исправления

Для демонстрации был взят  Пример MapObjectsDemo из поставки.

1) Избавляемся от использования модулей FGX.*.Android, Android.*

2) Добавляем использование IOS.Api.CoreLocation

{$IFDEF IOS},IOS.Api.CoreLocation{$ENDIF}

3) Переписываем  fgFormShow следующим образом

procedure TFormMain.fgFormShow(Sender: TObject);
const
  AccessCoarseLocationPermission = 'android.permission.ACCESS_COARSE_LOCATION';
  FineLocationPermission = 'android.permission.ACCESS_FINE_LOCATION';
begin
if TOSVersion.Platform=TOsVerSion.TPlatform.pfAndroid then //Добавлено, из-за отсутствия поддержки сервиса разрешений в Ios
  TfgPermissionService.RequestPermissionsAsync([AccessCoarseLocationPermission, FineLocationPermission],
    procedure(const APermissionsInfos: TArray<TfgPermissionInfo>) begin
      if APermissionsInfos[0].CheckResult = TPermissionCheckResult.Denied then
        TfgToast.Show('ACCESS_COARSE_LOCATION was not granted, map cannot use MyLocation', TfgToastDuration.Long);

      if APermissionsInfos[1].CheckResult = TPermissionCheckResult.Denied then
        TfgToast.Show('ACCESS_FINE_LOCATION was not granted, map cannot use MyLocation', TfgToastDuration.Long);
    end);
{$IFDEF IOS}
 with TCLLocationManager.Create do 
  requestWhenInUseAuthorization();//Запрос использования местоположения

{$ENDIF}
end;

4) Запускаем приложение.

При помещении карты в район местоположения, получаем ошибку

image.thumb.png.5feb2cd4048944a15c0ff9e3ae4db7ae.png

Со стеком 

System._DbgExcNotify(int, void*, System.SmallString<(unsigned char)255>*, void*, void*)
System.NotifyReRaise(System.TObject*, void*)(0x0000000283a8c320,0x0000000101606774)
System._RaiseAtExcept(System.TObject*, void*)(0x0000000283a8c320,0x0000000101606774)
System._RaiseExcept(System.TObject*)(0x0000000283a8c320)
Fgx.Map.Ios.TfgiOSMapDelegate.GetMarkerOrRaise(void const*)(0x0000000283a0f480,0x000000028191e1e0)
Fgx.Map.Ios.TfgiOSMapDelegate.mapViewViewForAnnotation(System.DelphiInterface<Ios.Api.Mapkit.MKMapView>, void*)(0x0000000283a0f480,0x000000028191e1e0)

Delphi 10.3.3 10.4.2 SDK 14.4 IOS 14.4.4 Ipad mini 4

Спасибо.

User Feedback

Recommended Comments

  • Administrators

Значение Статус изменено на: Fixed

Значение Резолюция изменено на: Fixed

Значение Версия с исправлением изменено на: 1.9.5.0

Create an account or sign in to comment

Recently Browsing 0

  • No registered users viewing this page.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.