B-棒6

あらゆる雑事の備忘録。

【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キャリアのiPhoneAndroid端末で確認したところ、この方式のQRコードで登録できたので、今はこれで統一されてるのかな。 www.nttdocomo.co.jp

例えば、次のようなデータがある場合。 f:id:ago3:20180816231810p:plain

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)

できた

f:id:ago3:20180817000515p:plain

ふと気付いたのですが、連絡先アプリからの取得だと、自分の連絡先を取れないですね。

※2018-8/20追記
別途、取得手段は何かしらあると思うけど、まあそれはまた後ほど。
ムリでした(^ν^)
自分の項目登録するしかない。

それでは。

【swift4.0】「連絡先」アプリからデータの取得

これは何

アプリ内から「連絡先」アプリへアクセスし、データを取得する方法のメモ書きです。

「連絡先」アプリを表示

まずはこれらをインポートします。

import Contacts  
import ContactsUI

ViewControllerで以下を記述。

let piker = CNContactPickerViewController()
piker.delegate = self
self.present(piker, animated: true, completion: nil)

以下のように表示されます。 f:id:ago3:20180816204648p:plain

データの取得

CNContactPickerDelegateプロトコルに準拠します。

class ViewController: CNContactPickerDelegate

いくつかdelegateメソッドがあります。 詳しくはリファレンス参照。
CNContactPickerDelegate - ContactsUI | Apple Developer Documentation

まとめ

凄く簡単に連絡先データの取得ができますね。
次回はこれを使ってQRコードを作ります。

参考

iOS 9から追加されたContacts Frameworkを使って連絡先アプリのデータを取得してみる

xibのios11対応

推しと見つめ合うことでロックが解除される神の機能FaceIDを携え、颯爽と現れたiPhoneXの発売からあと少しで1年が経とうとしています。新モデルの発表まで1ヶ月を切り、Xsの噂も出ていますね。

これまで作ってきたアプリは画面数が少なかったため、Storyboardオンリーで画面を作っており、カスタムセルくらいでしかxibファイルを使っていなかったのですが、先日とうとう使う機会が訪れました。

iPhoneXにて、navigationbarやtabbarが思い通りにならず結構苦戦しまして、世の中のアプリはどうしているのかしら、なんて疑問が浮かんだわけです。

で、たまたまiPhoneXを普段から使用しているので、1番あおりを受けたであろうゲームアプリを見てみました。

パターン1

白猫プロジェクト

もはや説明不要の有名アプリ。 最近、任天堂との戦いでも話題になりましたね。
新興のアプリならまだしも、息の長いアプリで全画面対応してるのはすごいなあ(小並感)
声豚ホイホイ。大森日雅さんも遊んでいる。

パターン2

ららマジ

従来の画面にnavigationbarとtabbar足してイメージ差し込んだ感じ。1番よく見るパターン。

ららマジの面白いところ(ゲーム的な意味ではなく)は、メイン画面以外が全画面対応なところ。 HomeIndicatorとボタン部分の被りを回避できなかったのかな。
近いうち完全にパターン1になりそうです。

大森日雅さんが、卯月真中華ちゃんとして出演しているので、チェックお願いします。
ストーリーが良い。
ところで、ららマジがほにゃららマジカルの略って覚えてる人、どれくらいいるんだろう。

パターン3

温泉むすめ ゆのはなこれくしょん

ステータスバーまではカバーせず、navigationbarが乗っているスタイル。 珍しい気がする。 ふと思ったんですけど、なんでステータスバーはカタカナで書いてしまうんだろう。
大森日雅さんが出身地長野の温泉むすめ、湯田中渋穂波として出演しているので、応援よろしくお願いします。僕はまだ引けてません。

そんな感じです。Androidほど機種の種類もないんだし、SizeClassじゃなくて、インチごとに制約つけられるようにならんかなあ。

キラっとJavaScriptやってみた

青葉りんかちゃん、可愛すぎでは......
厚木那奈美ちゃんも可愛い。
ランガちゃん、推せる。

✄- - - - - - キ リ ト リ - - - - - ✄

先日、お仕事関係の方とお話しする機会があった際に、「webアプリはやらないの?」と聞かれまして、全然そちらの方面に明るくないなあと感じました。
練習にちょうど良いかも、と思い書く記事になります。

これは、しょーもないサンプルですけど、何か活用できるくらいにはなりたいですね。

ていうか、ブログに埋め込むの楽すぎてビビる。

大森日雅さん

趣味の話です。これが書きたかったがためにブログ作ったみたいなところある。

イチオシというかお気に入りですかね。

まずは僕の推しが移籍した先であるところのクロコダイルさんの紹介から。

クロコダイルとは

声優のマネジメントやアニメのプロデュースをしている声優事務所です。

声優事務所 クロコダイル

大森日雅

というわけで、僕の推し。かわいい。 とりあえず、Twitterフォローしてください。 twitter.com

今期は「邪神ちゃんドロップキック」と「七星のスバル」に出演しています。フォロワーが急に増えすぎて界隈がザワつきました。やはり主演級は強い。

脳みそとろけそうな独特の声と、日雅様とも揶揄されるお嬢様(女王様?)気質が特徴。かわいい。書く絵がヤバい。ガンダム(特にシャア)が好き。発言はわりと過激。たぶん下ネタ好き。

TOKYO MXでお昼の12時から放送している「ひるキュン」という番組に、月曜日のTwitter&お天気お姉さんとして出演中。お姉さんを見に来た、大きなキュンキュンくんとかいう悪鬼羅刹とともに、元気にお天気を伝えています。かわいいので見てください。

月1回でニコ生もやってます。#2おまけパート、ピー音多すぎて草。

大森日雅の夢の森

壊れるほど文字で書いても1/3も伝わらないので、ぜひ1度生で見てみてほしいです。

今回はここまで。

アニラジにおける「初投稿です」の是非

タイトルは全く関係ないです。ちなみにどっちでも良いと思います。

文章の書き出しが本当に苦手です。

昔、物書きの端くれ的な活動をしていたことがあるのですが、何からどんな風に書いたものか、あーでもないこーでもないと推敲を繰り返してはお蔵入りなんてのはザラでした。

そんなこともあり、今この記事は何も考えずに入力しています。初投稿だしね。

本ブログの開設目的は、主にswiftやiOSについて、学んだ知識の溜め込み・整理です。なので、その辺の内容多めになる予定です。

それだけならQiitaで良い気もしますが、趣味のことも書きたいので、はてなブログと相成りました。

そんな感じです。イゴよろしく。