【swift4.0】「連絡先」からQRコードを作成する
これは何
連絡先データを利用して、QRコードを作成します。
データの取得
前回の続きです。具体的にdelegateメソッドに触れていきます。
「連絡先」アプリからデータの取得 - B-棒6
今回はこちらのメソッドを使用します。
func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact)
連絡先一覧から名前を選択した際に呼ばれます。
この辺を使います。
/// 姓 contact.familyName /// 名 contact.givenName /// 電話番号 contact.phoneNumbers /// Eメールアドレス contact.emailAddresses
名前プロパティいっぱいある...…
間違ってるかもしれません。
どうでもいいけど、givenNameってプロパティ名良い。
QRコードの規格
こちらを参考にしました。
キャリアごとに異なっていた頃もあるようですが、auキャリアのiPhoneとAndroid端末で確認したところ、この方式のQRコードで登録できたので、今はこれで統一されてるのかな。
www.nttdocomo.co.jp
例えば、次のようなデータがある場合。
MECARD:N:あご さん;TEL:11-111-1111;TEL:22-222-2222;TEL:3-3333-3333;EMAIL:sample1@mail.com;EMAIL:sample2@main.com;EMAIL:sample3@mail.com;
名前はスペースを入れることで、姓と名を判別しているようでした。
QRコード生成
// String → Data変換 let data = text.data(using: .utf8)! // QRコード生成のフィルター // inputCorrectionLevelは、誤り訂正レベル。「L」「M」「H」のいずれか。 let qrFilter = CIFilter(name: "CIQRCodeGenerator", withInputParameters: ["inputMessage": data, "inputCorrectionLevel": "M"])! // QRコード生成 let sizeTransform = CGAffineTransform(scaleX: 10, y: 10) let qrImage = qrFilter.outputImage!.transformed(by: sizeTransform) // CIImageからUIImage生成 let uiImage = UIImage(ciImage: qrImage)
できた
ふと気付いたのですが、連絡先アプリからの取得だと、自分の連絡先を取れないですね。
※2018-8/20追記
別途、取得手段は何かしらあると思うけど、まあそれはまた後ほど。
ムリでした(^ν^)
自分の項目登録するしかない。
それでは。