Jika aplikasi Anda memiliki fungsi registrasi yang mencakup kemampuan atau kebutuhan untuk memasukkan nama pengguna dan kata sandi baru, kemungkinan besar, Anda akan tertarik dengan inovasi di
"iOS 12" , yang ingin saya uraikan. Ini adalah layanan yang menciptakan kata sandi baru untuk pengguna, secara otomatis menggantinya di bidang yang diperlukan dan menyimpannya dengan aman di
Gantungan Kunci .
Secara otomatis dihasilkan oleh kata sandi sistem adalah yang paling tahan terhadap seleksi (secara acak dihasilkan urutan karakter - disesuaikan dengan pembatasan kustom, tetapi lebih pada nanti), membebaskan pengguna aplikasi dari kebutuhan untuk datang dengan urutan mereka sendiri dan secara fleksibel dikonfigurasi untuk kebutuhan aplikasi tertentu. Dukungan untuk fungsi baru cukup mudah disediakan, namun, bukan tanpa fitur. Tetapi hal pertama yang pertama.
Hak dan Kewajiban
Pertama-tama, aplikasi harus menyatakan keinginannya untuk menggunakan fungsi ini. Dalam daftar
Kemampuan Target yang sesuai
, Anda harus terlebih dahulu memiliki domain di daftar
Domain Terkait . Anehnya, aplikasi harus memiliki "Domain Terkait" agar dapat menggunakan kata sandi yang dihasilkan dan menyimpannya di "Keychain" pengguna (dua fungsi ini saling berhubungan, dan pembuatan tidak dapat digunakan secara terpisah dari penyimpanan).
Jika aplikasi sudah mendukung
penggunaan akun bersama dengan situs Anda (yang disebut "Kredensial Bersama") , maka langkah ini sudah ketinggalan. Mungkin juga sudah ketinggalan, dan jika aplikasi mendukung
Tautan Universal atau mekanisme lain untuk memproses
"URL" eksternal.
Bagaimanapun, setelah menambahkan kompatibilitas ini, aplikasi akan memiliki
"Hak" baru .
Selain kompatibilitas yang lebih umum ini, aplikasi juga harus memiliki "Capatibility" "Autofill
Credential Provider" - ini memungkinkan aplikasi, dengan seizin pengguna, untuk menggunakan nama pengguna dan kata sandi yang ditawarkan oleh sistem. Menambahkan kompatibilitas ini akan menyebabkan izin
Kepemilikan Penyedia Isi Otomatis muncul .
Ngomong-ngomong, penambahan ini dan fitur lainnya hanya tersedia untuk anggota Program Pengembang Apple .
Profil Penyedia yang digunakan oleh aplikasi juga harus menyertakan dua fitur berikut.
Ketergantungan Digunakan
Menambahkan kompatibilitas yang sesuai akan menghasilkan tampilan
kerangka kerja AuthenticationServices dalam daftar Linked Frameworks and Libraries dari target yang sesuai. Poin ini memiliki beberapa fitur yang layak disebut.
Pertama, penambahan otomatis kerangka kerja terkait mungkin tidak "bekerja" pertama kali: ketika saya meluncurkan aplikasi pada perangkat nyata dari salinan
"Xcode" versi 10.1, aplikasi segera "macet" karena kurangnya "AuthenticationServices". Menghapus kerangka kerja secara manual dan menambahkannya kembali ke daftar komponen terkait menyelesaikan masalah.
Kedua, secara otomatis menambahkan kerangka menandainya sebagai "Diperlukan". Jika aplikasi Anda menyiratkan kemungkinan bekerja "di bawah" versi "iOS" di bawah 12, ini juga akan menyebabkan crash pada tahap peluncuran "dari bawah" sistem operasi versi yang lebih rendah. "AuthenticationServices" hanya tersedia untuk sistem versi 12. Masalah ini diselesaikan dengan menandai kerangka kerja sebagai
"Opsional" .
Dukungan Kotak Teks
Untuk mendukung fungsionalitas dengan bidang teks, variabel
textContentType
protokol
textContentType
UITextInputTraits
. Kelas
UITextField
, yang kemungkinan besar digunakan untuk memasukkan login dan kata sandi dalam aplikasi, sudah mengimplementasikan persyaratan protokol yang kita butuhkan.
textContentType
adalah bidang bertipe
UITextContentType
yang hanya berisi seperangkat konstanta. Yang kita butuhkan saat ini adalah
newPassword
, yang digunakan untuk memasukkan kata sandi baru yang sedang ditemukan saat ini (jangan dikacaukan dengan
password
digunakan untuk memasukkan kata sandi yang ada).
let passwordTextField = UITextField() if #available(iOS 12, *) { passwordTextField.textContentType = .newPassword }
Menyetel nilai
textContentType
dibungkus dengan pemeriksaan aksesibilitas
"API" , karena, seperti fungsi umum, konstanta ini hanya tersedia dimulai dengan "iOS 12".
Selain jenis konten, bidang teks harus menyediakan entri data yang aman:
passwordTextField.isSecureTextEntry = true
Meskipun aplikasi mungkin menyediakan fungsionalitas menampilkan dan menyembunyikan kata sandi yang dimasukkan yang populer di zaman kita, kata sandi yang dihasilkan hanya akan ditawarkan jika flag
true
pada saat ini.
Poin yang menarik terhubung dengan jenis konten dari bidang teks: jika tidak ada bidang lain di layar, dengan
username
jenis konten, kata sandi yang dihasilkan secara otomatis tidak akan ditawarkan. Hal ini disebabkan oleh fakta bahwa fungsi ini tidak hanya didasarkan pada jenis konten bidang teks yang ditentukan, tetapi pada
analisis heuristik dari konten layar .
Tampaknya pembuatan kata sandi "mematahkan" logika layar yang memerlukan kata sandi baru untuk dimasukkan dua kali untuk memverifikasi. Setidaknya saya belum menemukan cara untuk menggunakan kedua fungsi ini bersama-sama. Dan sepertinya
aku bukan satu-satunya .
Perlu disebutkan bahwa jika login secara semantik adalah alamat email (dan, oleh karena itu, saya benar-benar ingin memiliki jenis keyboard yang sesuai),
jenis -
jenis keyboard dan konten dapat dikombinasikan:
let userNameTextField = UITextField() userNameTextField.keyboardType = .emailAddress userNameTextField.textContentType = .username
Persyaratan Kata Sandi
Seringkali kata sandi pengguna harus mengikuti aturan tertentu (memiliki panjang tertentu, termasuk karakter tertentu, dll.). Aturan-aturan ini dapat ditentukan sehingga sistem memperhitungkannya saat membuat kata sandi. Ini dilakukan melalui properti
passwordRules
dari protokol
UITextInputTraits
. Sebagai contoh:
if #available(iOS 12, *) { passwordTextField.passwordRules = UITextInputPasswordRules(descriptor: "required: upper; required: lower; required: digit; minlength: 8;") }
Properti ini juga tersedia hanya dimulai dengan "iOS 12".
Jenis properti ini adalah
UITextInputPasswordRules
. Inisialisasi - menggunakan string deskriptor. Pegangan memiliki sintaksis sederhana dan terdiri dari persyaratan kata sandi sederhana, terdaftar dengan tanda titik koma. Setiap persyaratan adalah pasangan nilai kunci, dipisahkan oleh titik dua. Kuncinya adalah jenis aturan (misalnya, "harus menyertakan" -
required
), dan nilainya adalah elemen yang harus mengikuti aturan ini (misalnya, digit -
digit
).
Dalam contoh di atas, deskriptor berarti:
required: upper
- required: upper
setidaknya satu huruf kapital;required: lower
- sama untuk setidaknya satu huruf kecil;required: digit
- sama untuk setidaknya satu digit huruf kecil;minlength: 8
- panjang minimum adalah delapan karakter.
Daftar terperinci dari kunci dan nilai yang mungkin dapat ditemukan dalam
artikel bagus yang diterbitkan di situs web NSHipster .
Dan
Apple menawarkan
asisten kompilasi deskriptor yang lebih nyaman, yang tidak hanya menyediakan cara mudah untuk membangunnya, tetapi juga pemeriksaan deskriptor yang dikompilasi dalam bentuk jumlah contoh yang dihasilkan tidak terbatas. Di sana Anda dapat melihat aturan apa yang diterapkan secara default.
Validasi
Untuk berjaga-jaga, harus diklarifikasi bahwa mekanisme pembuatan kata sandi tidak memberikan validasi data yang dimasukkan oleh pengguna - Anda harus mengurusnya sendiri. Yang tentu saja cukup logis, karena pengguna aplikasi dapat menolak kata sandi yang dihasilkan secara otomatis yang diusulkan atau bahkan melarang pembuatan kata sandi dan pelengkapan otomatis bidang.
Pembuat antarmuka
Apa yang perlu diperhatikan dan dalam semangat zaman kita, semua pengaturan bidang teks yang tercantum dapat diatur dalam
"Pembuat Antarmuka" , hingga "Aturan Kata Sandi":

Pemeriksaan Fungsi
Fungsionalitasnya tidak rumit, tetapi memiliki sejumlah nuansa: ketika Anda mengkonfigurasinya, Anda dapat dengan mudah melupakan sesuatu. Dalam hal ini, dalam majelis "debug", ketika bidang teks yang sesuai diaktifkan, alasannya akan ditampilkan di konsol yang fungsinya saat ini tidak berfungsi.
Sebagai contoh:
[AutoFill] Cannot show Automatic Strong Passwords for app bundleID: <...> due to error: Cannot save passwords for this app. Make sure you have set up Associated Domains for your app and AutoFill Passwords is enabled in Settings
Selain itu, Anda harus selalu ingat bahwa jenis fungsi ini adalah di antara tindakan yang memerlukan izin pengguna. Dalam hal ini, diperlukan dua:
1. Gantungan Kunci iCloud;
2. IsiOtomatis.
Kesimpulan
Ini sepertinya adalah semua yang harus diperhatikan sambil memberikan dukungan untuk fungsionalitas baru. Jika seseorang dalam proses mengerjakan ini telah menemukan fitur menarik lainnya, saya akan berkomentar satu kali dan, jika perlu, pastikan untuk melengkapi artikel tersebut.
Fitur ini cukup menarik dan, jika digunakan dengan benar, cukup mampu meningkatkan
pengalaman pengguna aplikasi Anda!