Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Проблема с открытием URL в Delphi Firemonkey на iPhone 14 Pro: причины и решения.

Delphi , Интернет и Сети , URL

 

Введение

Разработка кроссплатформенных приложений в Delphi с использованием Firemonkey позволяет создавать решения для iOS, Android и других платформ. Однако при работе с iPhone 14 Pro (и другими устройствами на iOS) разработчики могут столкнуться с проблемой, когда URL не открываются в браузере по умолчанию. В этой статье мы разберём причины этой ошибки и предложим несколько способов её решения.

Причины проблемы

  1. Изменения в политике безопасности iOS
    Начиная с iOS 14, Apple ужесточила требования к обработке URL, особенно в приложениях, использующих WebView или внешние ссылки.

  2. Некорректные настройки Info.plist
    Для открытия URL в Safari или другом браузере необходимо добавить соответствующие разрешения в файл конфигурации приложения.

  3. Ошибки в коде вызова URL
    В Firemonkey для открытия ссылок используется TUri, но иногда метод Open не срабатывает из-за особенностей iOS.

Решение 1: Использование SharedApplication через IFMXApplicationService

Один из способов открыть URL — использовать нативный вызов через OpenURL в iOS. Для этого можно воспользоваться сервисом IFMXApplicationService.

uses
  FMX.Platform, FMX.Helpers.iOS, Macapi.Helpers, iOSapi.Foundation;

procedure OpenURL(const AURL: string);
var
  URL: NSURL;
  AppService: IFMXApplicationService;
begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationService, AppService) then
  begin
    URL := StrToNSURL(AURL);
    if Assigned(URL) then
      SharedApplication.openURL(URL);
  end;
end;

Плюсы:
- Работает на всех версиях iOS.
- Использует нативные механизмы открытия ссылок.

Минусы:
- Требует дополнительного кода для проверки платформы.

Решение 2: Добавление разрешений в Info.plist

Для корректной работы открытия URL в iOS 14+ необходимо добавить в Info.plist следующие ключи:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>http</string>
    <string>https</string>
</array>

Если приложение использует кастомные схемы (например, myapp://), их также нужно указать.

Решение 3: Использование TUri с проверкой доступности

В Firemonkey можно использовать TUri, но перед открытием стоит проверить, поддерживается ли схема URL.

uses
  System.UITypes, FMX.Dialogs;

procedure OpenLink(const AURL: string);
var
  Uri: TUri;
begin
  Uri := TUri.Create(AURL);
  try
    if not Uri.Open then
      ShowMessage('Не удалось открыть ссылку: ' + AURL);
  finally
    Uri.Free;
  end;
end;

Плюсы:
- Кросс-платформенное решение.
- Простота использования.

Минусы:
- Может не работать на некоторых версиях iOS без дополнительных настроек.

Альтернативное решение: Использование WebView для открытия ссылок внутри приложения

Если внешний браузер не открывает URL, можно встроить WebView:

uses
  FMX.WebBrowser;

procedure OpenInWebView(const AURL: string);
var
  WebBrowser: TWebBrowser;
begin
  WebBrowser := TWebBrowser.Create(nil);
  try
    WebBrowser.Align := TAlignLayout.Client;
    WebBrowser.URL := AURL;
    // Добавляем WebBrowser на форму или popup
  except
    WebBrowser.Free;
    raise;
  end;
end;

Плюсы:
- Полный контроль над отображением контента.
- Не требует переключения в Safari.

Минусы:
- Увеличивает размер приложения.
- Менее удобен для пользователя, чем внешний браузер.

Заключение

Проблема с открытием URL в Delphi Firemonkey на iPhone 14 Pro чаще всего связана с изменениями в iOS или отсутствием нужных разрешений. Лучшим решением является комбинация методов:
1. Добавление необходимых схем в Info.plist.
2. Использование IFMXApplicationService для гарантированного открытия ссылок.
3. Альтернативный вариант с TWebBrowser, если требуется встроенный просмотр.

Приведённые примеры кода помогут решить проблему и обеспечить корректную работу приложения на всех устройствах iOS.

Создано по материалам из источника по ссылке.

Проблема с открытием URL в Delphi Firemonkey на iPhone 14 Pro, связанная с изменениями в iOS и настройками Info.plist, и способы её решения.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: URL ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-15 23:19:20/0.0035789012908936/0