Saya sedang mengerjakan aplikasi cepat sederhana di mana pengguna memasukkan alamat email dan menekan tombol yang membuka aplikasi email, dengan alamat yang dimasukkan di bilah alamat. Saya tahu cara melakukan ini di Objective-C, tapi saya kesulitan membuatnya berfungsi di Swift.
119
Sementara jawaban lain semuanya benar, Anda tidak akan pernah tahu apakah iPhone / iPad yang menjalankan aplikasi Anda telah menginstal aplikasi Mail Apple atau tidak karena dapat dihapus oleh pengguna.
Lebih baik mendukung banyak klien email. Kode berikut menangani pengiriman email dengan cara yang lebih anggun. Alur kodenya adalah:
mailto:..
yang meminta pengguna untuk menginstal aplikasi Mail Apple.Kode ditulis di Swift 5 :
Harap dicatat bahwa saya sengaja melewatkan isi untuk aplikasi Outlook, karena tidak dapat menguraikannya.
Anda juga harus menambahkan kode berikut ke
Info.plist
file yang memasukkan skema kueri URl yang digunakan ke daftar putih.sumber
isHTML
kode di atas ke true. Untuk klien lain, tampaknya tidak mungkin, untuk bacaan lebih lanjut lihat stackoverflow.com/questions/5620324/mailto-link-with-html-bodySaya tidak yakin apakah Anda ingin beralih ke aplikasi email itu sendiri atau hanya membuka dan mengirim email. Untuk opsi terakhir yang ditautkan ke tombol IBAction:
sumber
class myClass: UIViewController, MFMailComposeViewControllerDelegate {
'NSInvalidArgumentException', reason: 'Application tried to present a nil modal view controller on target
. Aplikasi mogok di beberapa perangkat (iPhone 5, iPhone 6 dan iPad Mini)Di Swift 3 Anda memastikan untuk menambah
import MessageUI
dan kebutuhan sesuai denganMFMailComposeViewControllerDelegate
protokol.Protokol:
sumber
Untuk Swift 4.2+ dan iOS 9+
Ganti [email protected] dengan alamat email yang Anda inginkan.
sumber
Swift 2, dengan pemeriksaan ketersediaan :
sumber
Berikut tampilannya untuk Swift 4:
sumber
Jawaban terbaru dari Stephen Groom untuk Swift 3
sumber
Berikut ini pembaruan untuk Swift 4 jika Anda hanya ingin membuka klien email melalui
URL
:Ini bekerja dengan baik untuk saya :)
sumber
Ini adalah solusi langsung dari 3 langkah di Swift.
Tambahkan untuk menyesuaikan Delegasi
Dan buat saja metode Anda:
sumber
Anda harus mencoba mengirim dengan pembuat email built-in, dan jika gagal, coba dengan share:
sumber
Perhatikan bahwa tidak semua pengguna mengonfigurasi perangkatnya untuk mengirim email, itulah sebabnya kami perlu memeriksa hasil canSendMail () sebelum mencoba mengirim. Perhatikan juga bahwa Anda perlu menangkap callback didFinishWith untuk menutup jendela email.
sumber
Di pengontrol tampilan dari mana Anda ingin aplikasi email Anda terbuka di keran.
Letakkan fungsi ini di dalam Controller Anda.
Perluas Pengontrol Tampilan Anda dan sesuaikan dengan MFMailComposeViewControllerDelegate .
Gunakan metode ini dan tangani kegagalan pengiriman email Anda.
sumber
Bagi kita yang masih tertinggal di Swift 2.3 berikut adalah jawaban Gordon dalam sintaks kita:
sumber
Beri pengguna untuk memilih banyak opsi email (seperti iCloud, google, yahoo, Outlook.com - jika tidak ada email yang dikonfigurasi sebelumnya di teleponnya) untuk mengirim email.
sumber