как показать список почтовых клиентов с прикрепленным приложением программно - PullRequest
0 голосов
/ 15 апреля 2019

Я хотел показать список почтовых клиентов всех приложений, установленных на iPhone.

В настоящее время я использую стороннюю библиотеку в соответствии с руководством, приведенным в следующем выпуске, но нет поддержки добавления вложения в него.

Ниже приведен следующий код: -Есть ли способ прикрепить к нему письмо на основе клиента, например Yahoo Mail, Gmail или iOS Mail

public static func clients() -> [ThirdPartyMailClient] {
    return [
        // sparrow:[to]?subject=[subject]&body=[body]
        ThirdPartyMailClient(name: "Sparrow", URLScheme: "sparrow",
            URLRoot: nil, URLRecipientKey: nil, URLSubjectKey: "subject", URLBodyKey: "body"),

        // googlegmail:///co?to=[to]&subject=[subject]&body=[body]
        ThirdPartyMailClient(name: "Gmail", URLScheme: "googlegmail",
            URLRoot: nil, URLRecipientKey: "to", URLSubjectKey: "subject", URLBodyKey: "body"),

        // airmail://compose?subject=[subject]&from=[from]&to=[to]&cc=[cc]&bcc=[bcc]&plainBody=[plainBody]&htmlBody=[htmlBody]
        ThirdPartyMailClient(name: "Airmail", URLScheme: "airmail",
            URLRoot: nil, URLRecipientKey: "to", URLSubjectKey: "subject", URLBodyKey: "plainBody"),

        // ymail://mail/compose?subject=[subject]&body=[body]&to=[to]
        ThirdPartyMailClient(name: "Yahoo Mail", URLScheme: "ymail", URLRoot: nil, URLRecipientKey: "to", URLSubjectKey: "subject", URLBodyKey: "body"),

        ThirdPartyMailClient(name: "IOS Mail", URLScheme: "mailto", URLRoot: nil, URLRecipientKey: "to", URLSubjectKey: "subject", URLBodyKey: "body")]
}

/**
 Returns the compose URL for the mail client, based on its custom URL scheme.

 - Parameters recipient: The recipient for the email message (optional).
 - Parameters subject: The subject for the email message (optional).
 - Parameters body: The body for the email message (optional).

 - Returns: A `NSURL` opening the mail client for the given parameters.
 */
public func composeURL(_ recipient: String?, subject: String?, body: String?) -> URL {
    var components = URLComponents(string: "\(URLScheme):\(URLRoot ?? "")")
    components?.scheme = self.URLScheme

    if URLRecipientKey == nil {
        if let recipient = recipient {
            components = URLComponents(string: "\(URLScheme):\(URLRoot ?? "")\(recipient)")
        }
    }

    var queryItems: [URLQueryItem] = []

    if let recipient = recipient, let URLRecipientKey = URLRecipientKey {
        queryItems.append(URLQueryItem(name: URLRecipientKey, value:recipient))
    }

    if let subject = subject, let URLSubjectKey = URLSubjectKey {
        queryItems.append(URLQueryItem(name: URLSubjectKey, value:subject))
    }

    if let body = body, let URLBodyKey = URLBodyKey {
        queryItems.append(URLQueryItem(name: URLBodyKey, value:body))
    }

    if queryItems.isEmpty == false {
        components?.queryItems = queryItems
    }

    if let URL = components?.url {
        return URL
    }
    else {
        return URLComponents().url!
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...