• 0
Tumaso

Права доступа для чтения/записи в iOS

Вопросы

Столкнулся с неожиданной проблемой в iOS при работе с файлами: любые попытки чтения существующих файлов из System.IOUtils.TPath.GetDocumentsPath и любые попытки чтения/записи файлов в System.IOUtils.TPath.GetHomePath вызывают ошибку access denied. Где что нужно прописать, чтобы решить проблему работы с файлами?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 ответов на этот вопрос

  • 0

Используем во всех своих проектах. Проблем нет

function TGlobalFunc.documentDir : string;
begin
{$IF Defined(IOS)}
  Result := TPath.GetDocumentsPath + TPath.DirectorySeparatorChar;
{$ENDIF}
{$IF Defined(ANDROID)}
  Result := System.IOUtils.TPath.GetDocumentsPath;
  if Result[Result.Length] <> System.SysUtils.PathDelim then
    Result := Result + System.SysUtils.PathDelim;
{$ENDIF}
end;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
49 минут назад, krapotkin сказал:

возможно еще бы разрешения для программы посмотреть стоит

Вот у меня и стоит этот вопрос - ГДЕ именно посмотреть/настроить разрешения для программы под iOS? :)

Кстати, вместо Result := TPath.GetDocumentsPath + TPath.DirectorySeparatorChar  я использую TPath.Combine

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Ни в одном из проектов под iOS, не было потребности какие-либо права смотреть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
38 минут назад, FREEFAR сказал:

Ни в одном из проектов под iOS, не было потребности какие-либо права смотреть.

В какой версии делфи у тебя без допнастроек работает? я в берлине upd1 пока с этой проблемой столкнулся

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
3 минуты назад, Tumaso сказал:

В какой версии делфи у тебя без допнастроек работает? я в берлине upd1 пока с этой проблемой столкнулся

Берлин ап2

Как используем каталог:

- храним флаг-файлы

- храним файлы конфигурации

- храним данные при оффлайн работе.

- храним фото до отправки

 

Изменено пользователем FREEFAR

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
10 часов назад, FREEFAR сказал:

Используем во всех своих проектах.

немножечко оффтоп.... у вас много проектов реализованных на rad? большая команда?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
11 час назад, wamaco сказал:

немножечко оффтоп.... у вас много проектов реализованных на rad? большая команда?

на текущий момент 5 прототипов в пилотном тестировании и один переведен в бой.

Команда 6 человек.

Все проекты корп. Один прототип на внешнем ресурсе , но доступ ограничен

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Давайте не мериться, у кого сколько проектов на FMX :) у меня это первый, и надеюсь, что не последний :)

Уточняющий вопрос к FREEFAR - а какой путь вы указываете при деплое файлов (которые устанавливаются вместе с приложением) для iOS? Я указываю Startup\Documents\ и в дальнейшем формирую имя файла как TPath.Combine(TPath.GetDocumentsPath, 'имя_файла')...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Автоматом ставится Startup\Documents\ , т.к. если что-то тащим с собой из студии то только в качестве ресурсов. После распечатываем и кладем уже куда нам надо и работаем с этим. Правильно/ Неправильно - работает

А так все создаем уже в рантайме вплоть до БД sqlLite

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
13 минуты назад, Tumaso сказал:

Давайте не мериться, у кого сколько проектов на FMX :)

Я на форум пришел не для этого :) Здесь действительно можно получить хорошие ответы на вопросы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От Tumaso
      Подскажите, каким образом можно прочитать входящее СМС под iOS? Для Android на форуме есть работающий пример, а вот под iOS найти не удалось.
    • От Виталий Иванов
      Есть ли возможность отследить сильное нажатие на элемент ? Долгое нажатие отлавливается, а вот сильное нажатие никак может есть какие-то уловки или это в принципе не возможно ?
    • От Barbanel
      Доброго времени!
      Есть разработанное под Андроид приложение. Начальство поставило задачу выложить это же приложение в Apple AppStore.
      Было озвучено мнение что для этого необходимо купить Макбук или что-то аналогичное эппла.
      У меня нет опыта работы с эппловскими девайсами и операционками вообще, в связи с чем вопрос:
      - какое железо необходимо для нормальной и желательно комфортной разработки под iOS?
      "Свежесть" железа играет роль (год выпуска или еще чего-нить)?
      Всем спасибо!
    • От Astghik
      How to print text from Android (IOS) device ? (C++ Rad Studio 10.2)
      With USB printer and other types printers (WiFi, Bluetooth ....)
    • От Евгений Корепов
      Наткнулся тут на изящную штуку для приложения с PUSH уведомлениями на Android и Ios. Один объект, все сам делает.
      Внедрил в одно боевое приложение с 100+ тысячами установок, полет нормальный.
      Описание тут https://delphiworlds.com/2017/04/firebase-cloud-messaging-android-ios/
      Исходный код с примером на гитхабе https://github.com/DelphiWorlds/PushClient
      Использование максимально простое:
      uses DW.PushClient; .... private FPushClient: TPushClient; procedure PushClientChangeHandler(Sender: TObject; AChange: TPushService.TChanges); procedure PushClientReceiveNotificationHandler(Sender: TObject; const ANotification: TPushServiceNotification); .... procedure TFormMain.InitPushService; begin FPushClient := TPushClient.Create; FPushClient.GCMAppID := ConstGCMAppID; FPushClient.ServerKey := ''; FPushClient.BundleID := ''; FPushClient.UseSandbox := Debug; // Change this to False for production use! FPushClient.OnChange := PushClientChangeHandler; FPushClient.OnReceiveNotification := PushClientReceiveNotificationHandler; try FPushClient.Active := True; except SendError('FPushClient.Active Exception'); end; end; procedure TFormMain.PushClientChangeHandler(Sender: TObject; AChange: TPushService.TChanges); begin if TPushService.TChange.DeviceToken in AChange then begin HDevicePushParams.DeviceID:=FPushClient.DeviceID; HDevicePushParams.DeviceToken:=FPushClient.DeviceToken; GetHTTP(CommandRegisterFCM); // Memo1.Lines.Add('DeviceID = ' + FPushClient.DeviceID); // Memo1.Lines.Add('DeviceToken = ' + FPushClient.DeviceToken); end; end; procedure TFormMain.PushClientReceiveNotificationHandler(Sender: TObject; const ANotification: TPushServiceNotification); begin // ShowMessage(ANotification.DataObject.ToString... end; Правда руки не дошли разобраться для чего ему 
        FPushClient.ServerKey := '';
        FPushClient.BundleID := '';
      Но и без этого работает.
       
    • От erden1
      ЗДравствуйте!
      Подскажите пожалуйста как добавить рекламу в новые ios приложения? Возможно ли это сделать с помощью компонента TBannerAD? И какие есть способы?
    • От Alex7wrt
      Добрый день.
      Имеется приложение, которое реализовано в портретной и альбомной ориентации. При повороте экрана срабатывает событие TForm.OnResize, в котором производятся изменения размеров и положения элементов.
      В Андроиде при повороте все происходит плавно, а в iOS на долю секунды мигает экран с изменённым положением контролов и только потом перерисовывается. Почему так происходит и как это можно исправить?
    • От Anasazi
      Всем добрый день! Получаю координаты с помощью yandex api. Использую вот такой код:
          try
          ////Запрос на Яндекс для получения координат
           MainForm.NetHTTPClient1.Get
          ('https://geocode-maps.yandex.ru/1.x/?geocode='+
          'Кунгур'+
          ',+'
          +street+
          '+улица,+дом+'+
          house, Result);
          finally
          end;
       
      Код отрабатывает нормально, но если ну устройстве нет интернета, то приложение просто вылетает. Подскажите пожалуйста как поправить.
      Приложение для iOS.
    • От Alex7wrt
      Здравствуйте.
      Нужен совет по интеграции баннера Admob к iOS приложению. Может быть кто-нибудь уже делал подобное?
      Насколько я начитался в инете по похожим запросам, нужно скачать GoogleMobileAds.framework и подключить его в Project-Options-Linking-Options passed to the LD Linker. Кроме этого фреймверка еще нужны такие:
      EventKit  EventKitUI  AVFoundation  AdSupport  AudioToolbox  AVFoundation  CoreGraphics  CoreTelephony  CoreMedia  MessageUI  StoreKit  SystemConfiguration Которые подгрузил в SDK Manager. 
      Далее в  “Options passed to the LD linker” добавляю:
      -ObjC -LC:\Users\<user>\Documents\Embarcadero\Studio\SDKs\iPhoneOS8.3.sdk\usr\lib Frameworks\GoogleMobileAds.framework\GoogleMobileAds Frameworks\AdSupport.framework\AdSupport Frameworks\AudioToolbox.framework\AudioToolbox Frameworks\AVFoundation.framework\AVFoundation Frameworks\CoreGraphics.framework\CoreGraphics Frameworks\CoreMedia.framework\CoreMedia Frameworks\CoreTelephony.framework\CoreTelephony Frameworks\EventKit.framework\EventKit Frameworks\EventKitUI.framework\EventKitUI Frameworks\MessageUI.framework\MessageUI Frameworks\StoreKit.framework\StoreKit Frameworks\SystemConfiguration.framework\SystemConfiguration -lxml2.2
      После этого во время компиляции возникает ошибка в фреймворке GoogleMobileAds.framework. 
      Все остальные фреймворки ошибок не вызывают.
      Текст ошибки: 
      [DCC Error] E2597 NYI lto::archName
      ld: file was built for unsupported file format ( 0x56 0x65 0x72 0x73 0x69 0x6F 0x6E 0x73 0x2F 0x43 0x75 0x72 0x72 0x65 0x6E 0x74 ) which is not the architecture being linked (arm64):
      Это для версии iOS Device 64 bit. Для 32 бит ошибка та же, только в конце вместо arm64 написано armv7.
      Символы 0x56 0x65 0x72 0x73 0x69 0x6F 0x6E 0x73 0x2F 0x43 0x75 0x72 0x72 0x65 0x6E 0x74 в переводе на ACSII значат "Versions/Current" - это часть строки в файле GoogleMobileAds.
      Вот и не пойму как эту ошибку обойти.
    • От Alex7wrt
      Здравствуйте.
      Дошел до тестирования iOS приложения на физическом устройстве. Сертификаты разработчика подключены. Приложение вроде как устанавливается на Ipad, потому что значок на рабочем столе планшета появляется. Но само приложение не запускается, показывается только стандартная заставка FireMonkey (заставку не менял) и приложение вылетает. При этом на симуляторе работает без ошибок.
      Также после завершения установки в среде появляется сообщение об ошибке:
       
      И справочная информация об ошибке "Troubleshooting: Cannot Deploy to the iOS Device"
      В чем может быть причина?
      На Ipad стоит iOS 10.2.1, на маке XCode 8.0
       
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу