IOS: не удается открыть почтовое приложение Apple с URL-адресом

#ios #swift #xcode

Вопрос:

Я пытаюсь открыть почтовое приложение Apple из своего приложения и запускаю этот код:

    let mailURL = URL(string: "message://")!
   if UIApplication.shared.canOpenURL(mailURL) {
       UIApplication.shared.open(mailURL, options: [:], completionHandler: nil)
   }
 

Однако UIApplication.shared.canOpenURL(mailURL) строка возвращает значение false. Этот код на самом деле хорошо работает в моем другом приложении, но не работает в этом. У вас есть какие-либо идеи, в чем причина этой проблемы?

правка: Я пытался запустить это как в симуляторе, так и на реальном устройстве.

изменить: использование Xcode 12.5.1, Биг Сур 11.6

Комментарии:

1. Какова среда выполнения? Симулятор? Устройство?

2. @esqew попробовал и то и другое

3. Очевидно, вам нужно добавить mailto или message LSApplicationQueriesSchemes дополнить, чтобы это сработало.

4. @esqew имеет смысл, я постараюсь ответить, если это сработает

Ответ №1:

Используйте mailto для протокола URL, а не message .

Пример:

 mailto://me@example.com
 

Комментарии:

1. спасибо за ваш ответ, но все равно тот же. Как я уже сказал, это хорошо работает с другим моим приложением на том же устройстве, но не работает в этом. Это странно. Я ищу что-то, что блокирует или обходит UIApplication.shared.canOpenURL(mailURL) функцию, но не могу найти причину.

Ответ №2:

По соображениям безопасности Apple не позволяет вам открывать URL-адреса с произвольными схемами, только те, на которые вы зарегистрировались (поэтому, когда они просматривают ваш код, они могут выяснить, какие приложения вы проверяете, и отклонить вас. Проверка почты — это нормально, потому что это есть у всех).

Но Apple не позволила бы вам проверить, установлено ли мое приложение на устройстве.

Комментарии:

1. Спасибо, но что мне делать? У тебя есть какие — нибудь идеи по этому поводу?