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

Разработка Мобильных Приложений на Delphi: Проблемы и Решения для Работы с Браузером и Почтой на iOS 9 и Выше

Delphi , Файловая система , Ярлыки

В данной статье мы рассмотрим проблему, с которой сталкиваются разработчики, использующие Delphi для создания мобильных приложений: открытие веб-браузера и почтового клиента по клику на ссылку в проекте, предназначенном для нескольких устройств. Особое внимание будет уделено решению проблемы для устройств на iOS 9 и выше.

Проблема

Разработчики, работающие с Delphi 10 Seattle и Delphi XE8, столкнулись с проблемой, когда созданное приложение перестало корректно работать на устройствах iOS 9 и выше. Проблема заключается в том, что кликабельная ссылка, предназначенная для открытия веб-браузера на Android, перестала функционировать на iOS. Использовался следующий код для реализации этой функции: Sending a url to another app. Также был задан вопрос о возможности открытия почтового клиента по клику на метку с адресом электронной почты.

Решение для Android

Для решения проблемы с открытием почтового клиента на Android, необходимо добавить префикс "mailto:" к URL и изменить код следующим образом:

Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW,
    TJnet_Uri.JavaClass.parse(StringToJString('mailto:' + EmailAddress)));

Решение для iOS

Для iOS было упущено важное условие, упомянутое в исходном коде, на который была сделана ссылка. Важно убедиться, что все необходимые условия для перенаправления в другие приложения выполнены, включая использование корректного URL-адреса и настройки для обработки ссылок в коде проекта.

Пример кода на Object Pascal (Delphi)

procedure TForm1.Button1Click(Sender: TObject);
var
  LURL: string;
begin
  LURL := 'http://www.example.com';
  if TPlatform.OSVersion < VersionMake(10, 0) then
  begin
    // Для версий iOS ниже 10
    if TPlatform.OS = 'iOS' then
      with TWebBrowserService.Create(nil) do
        try
          BrowserURL := LURL;
        finally
          Free;
        end;
      else
        // Для Android
        with TAndroidHelper do
          StartActivity(SHOW_URL, LURL);
  end
  else
  begin
    // Для версий iOS 10 и выше
    with TWebBrowserService2.Create(nil) do
      try
        const
          LSCHEME = 'http';
        var
          LUri: TUri;
        begin
          LUri := TUri.Create(LSCHEME, LURL);
          if TWebBrowserService2.SupportsCustomProtocolHandler(LUri) then
          begin
            try
              BrowserURL := LUri.ToString;
            except
              on E: Exception do
              begin
                // Если установлено приложение, которое может обработать URL, но оно не является обработчиком по умолчанию, необходимо запустить его явно:
                TWebBrowserService2.OpenURL(LUri, nil, nil, false);
              end;
            end;
          end
          else
          begin
            // Если ни одно приложение не может обработать URL, открываем системный браузер
            TWebBrowserService2.OpenURL(LUri, nil, nil, true);
          end;
        end;
      finally
        Free;
      end;
  end;
end;

Пример открытия почтового клиента на iOS

procedure TForm1.Button2Click(Sender: TObject);
var
  LEmailAddress: string;
begin
  LEmailAddress := 'example@email.com';
  if TPlatform.OS = 'iOS' then
  begin
    // Для iOS 10 и выше
    with TWebBrowserService2.Create(nil) do
    try
      const
        LSCHEME = 'mailto';
      var
        LUri: TUri;
      begin
        LUri := TUri.Create(LSCHEME, LEmailAddress);
        if TWebBrowserService2.SupportsCustomProtocolHandler(LUri) then
        begin
          TWebBrowserService2.OpenURL(LUri, nil, nil, false);
        end
        else
        begin
          TWebBrowserService2.OpenURL(LUri, nil, nil, true);
        end;
      end;
    finally
      Free;
    end;
  end
  else
  begin
    // Для Android
    with TAndroidHelper do
      StartActivity(SHOW_EMAIL, LEmailAddress);
  end;
end;

Заключение

В статье были рассмотрены проблемы, связанные с открытием веб-браузера и почтового клиента в мобильных приложениях на Delphi для разных платформ, с акцентом на iOS 9 и выше. Представлены решения, которые позволяют разработчикам восстановить функциональность и обеспечить корректную работу приложений в соответствии с требованиями операционных систем устройств.

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

Статья посвящена решению проблемы открытия веб-браузера и почтового клиента в мобильных приложениях на Delphi для iOS 9 и выше.


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

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




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


:: Главная :: Ярлыки ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 17:11:14/0.012086153030396/0