Перейти к содержанию
Fire Monkey от А до Я

Лидеры

  1. Fedor K

    Fedor K

    Пользователи


    • Баллы

      8

    • Постов

      55


  2. Andrey Efimov

    Andrey Efimov

    Модераторы


    • Баллы

      1

    • Постов

      842


  3. kami

    kami

    Пользователи


    • Баллы

      1

    • Постов

      643


  4. Rusland

    Rusland

    Пользователи


    • Баллы

      1

    • Постов

      1 204


Популярный контент

Показан контент с высокой репутацией 10.11.2017 во всех областях

  1. Не совсем верно. При использовании Indy нужно к проекту подключать библиотеки (libcrypto.so, libssl.so) для Android и (libcrypto.a, libssl.a)iOS. Пример для A есть на форуме. Для iOS такие же телодвижения, библиотеки например здесь. После всего это приложения прекрасно проходят проверки маркетов. Но все это добавляют лишнее телодвижения, размер приложения раздувается. И я бы рекомендовал использовать нативные компоненты, где это возможно.
    3 балла
  2. Objective-C конечно весьма специфический... Попробовал несколько методов, но решение действительно очень простое: 1. Меняем iOSapi.Foundation.pas: unit iOSapi.Foundation; //~3855 строка, добавляем 2 метода NSURLRequestClass = interface(NSObjectClass) ['{A93A4D14-529E-41F0-86EC-B570715512BB}'] {class} function requestWithURL(URL: NSURL): Pointer; cdecl; overload; {class} function requestWithURL(URL: NSURL; cachePolicy: NSURLRequestCachePolicy; timeoutInterval: NSTimeInterval): Pointer; cdecl; overload; //метод раз {class} function allowsAnyHTTPSCertificateForHost(host: NSString): Boolean; cdecl; overload; //метод два {class} procedure setAllowsAnyHTTPSCertificate(allow: Boolean; forHost: NSString); cdecl; overload; end; 2. В своем коде для требуемых сайтов пишем следующее: TNSURLRequest.OCClass.setAllowsAnyHTTPSCertificate(true, StrToNSStr(<требуемый сайт>)); Проверял на сайте expired.badssl.com, XCode 7 + SDK 9.3, Simulator, также на реальном устройстве с iOS 11. п.с. Если нужно доверять абсолютно всем сайтам, думаю можно п. 2 вставить в FMX.WebBrowser.Cocoa.pas в методе: procedure TCommonWebBrowserService.DoNavigate(const URL: string);
    3 балла
  3. Если я правильно понимаю, это запись значения в справочник. Для работы с этим хранилищем есть такой враппер: https://www.dropbox.com/s/5q17zki83t1ivjq/AppProperties.pas?dl=0 Попробуйте сделать так: TAppProperties.SaveStr(['UserAgent'], ['My User Agent 1.0']);
    2 балла
  4. Проверил - отлично работает! Спасибо PS. XCode 7.3.1, iPhoneSimulator9.3.sdk
    1 балл
  5. А способ через настройки не работает? var WebBrowser: JWebBrowser; begin WebBrowser := GetField<JWebBrowser>('FJWebBrowser'); if (WebBrowser <> nil) then WebBrowser.getSettings.setUserAgentString(StringToJString(iUA)); end; https://forums.embarcadero.com/thread.jspa?threadID=236124 Это естественно для анроида. Для вин через его апи и т.д.
    1 балл
  6. Апну тему. На этот раз - Tokio upd1, с патчем под iOS11. Что требуется: скопировать в папку с проектом (рядом с dpr) файл FMX.WebBrowser.pas. В нем внести изменения в метод TCustomWebBrowser.FormHandleCreated, чтобы он выглядел следующим образом: procedure TCustomWebBrowser.FormHandleCreated(const Sender: TObject; const Msg: TMessage); function GetParentForm(Control: TFmxObject): TCommonCustomForm; begin if (Control.Root <> nil) and (Control.Root.GetObject is TCommonCustomForm) then Result := TCommonCustomForm(Control.Root.GetObject) else Result := nil; end; var WBService : IFMXWBService; begin if not (csDesigning in ComponentState) and ((FWeb = nil) or (Sender = GetParentForm(self as TFmxObject))) and TPlatformServices.Current.SupportsPlatformService(IFMXWBService, WBService) then begin WBService.DestroyWebBrowser(FWeb); // добавлена эта строка. FWeb := WBService.CreateWebBrowser; FWeb.SetWebBrowserControl(Self); FWeb.UpdateContentFromControl; FWeb.URL := FURL; FWeb.Navigate; end; end; Что дает правка: допустим, у вас есть WB на главной форме и на дочерней форме (или фрейме - без разницы), которая создается / уничтожается динамически. При создании вторичной формы метод FormHandleCreated вызывается дважды, при этом FWeb, созданный в первом вызове просто забывается, но не уничтожается (сильная ссылка в списке веббраузеров в WBService). Дальше вторичная форма уничтожается (захватывая с собой FWeb, созданный при втором вызове FormHandleCreated ), а в "забытом" FWeb остаются невалидные ссылки на родителя. Что при вызове метода TWBFactoryService.RealignBrowsers (активация / изменение размеров формы) приведет к AV. Внесенное изменение удаляет FWeb из списка WBService, и в дальнейшем ничего не мешает его спокойному уничтожению.
    1 балл
  7. Отлично работает. Проверил на Андроиде в Berlin 10.1.2 и Tokyo 10.2.1, скрины ниже. К слову, в исходниках студии есть файлы в которых используется эта директива и всё прекрасно работает. С библиотекой pascalc не сталкивался, поэтому ничего конкретного не подскажу.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...