#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. Спасибо, но что мне делать? У тебя есть какие — нибудь идеи по этому поводу?