iOS11 新機能「Core NFC」を試してみる

CoreNFCについて

これまでApplePayに限られてきたiPhone上でのNFC(Near Field Communication=近距離通信技術)の利用が、
WWDC17での発表で、iOS11より「Core NFC」としてサービスが提供されることになりました。
Androidではすでに事例もあるように、何かにタグをつけて、デバイスを近づけるとタグ情報を得られるようなことが、iPhoneでもできるようになります。

しかしながら、CoreNFCを利用できるのはiPhone7/7Plus以上となります。
つまり検証もiPhone7/7Plus以上の端末でなければ、テストできませんのでご注意ください。。

NFCタグについて

今回はサンワサプライのNFCタグを使用しました。
値段はタグ10枚入りで約900円とお得です。

公式ドキュメントによると、Core NFCではNDEF(NFC Data Exchange Format)という形式のデータのみ受け取れます。書き込みは、Androidアプリの「NFC NDEF Writer」(無料)を使用しました。

実装

簡単なデモとして、日用品(洗剤, トイレットペーパーなど)にタグを貼り付け、在庫が切れたらタグを読み込んでもらい購入サイトに誘導するアプリを作ってみたいと思います。
処理的にはタグを読み込み、URLを取得し、WebViewで取得したwebページを表示するだけです。

 

▼ 開発環境

 Xcode9 beta
 MacOS Sierra 10.12.6
 iPhone7 (iOS11 beta)

 

▼ NFC Tag Reading を有効にする

・Apple Developer Centerにログインし、ビルドで使用するAppIDを選択。
・App Services >「NFC Tag Reading」を有効にする。

 

▼ entitlementsファイルに値を追加する

・TARGET > Capabilities > NearField Communication Tag Reading > ONに設定

・作成された<ProjectName>.entitlementsファイルにcom.apple.developer.nfc.readersession.formatsキーと値を追加

 

▼ Info.plistファイルに値を追加する

NFCReaderUsageDescriptionキーにPrivacy(使用目的)を設定。
※試してはいませんが、これを設定しない状態でNFCのSessionを走らせるとクラッシュする可能性があります。
※カメラではクラッシュします。

 

▼ NFCNDEFReaderSessionを使用してペイロードを取得し、商品ページをWebViewで表示

 

NFCNDEFReaderSessionについて

NFCNDEFReaderSessionの引数であるinvalidateAfterFirstReadは、初回のNDEFタグが正常に読み取られた後、セッションが自動的に無効になるかどうかを示すブール値となります。

– true(読み取りは一回のみ可能)
読み取りが完了したらセッションが自動的に無効になり、読み取り準備完了のダイアログが閉じられます。

– false(複数回読み取り可能)
セッションを無効にするかどうかはユーザーの意思に委ねられます。読み取り準備完了のダイアログの「完了」(初回読み取り前は「キャンセル」)をボタンを押下すると、セッションが無効となります。そのためアラートが表示されている限りは、連続した読み取りが可能です。

ちなみにですが、アラートのレイアウトはアラートボタンの上部にあるメッセージのみ変更可能のようです。

動作確認

アプリを起動すると、読み取りセッションがスタートし読取準備のダイアログが表示されます。この状態でNFCタグをiPhone上部に近づけると読み取りが実行されます。

 

 

最後に

公式ドキュメントを読んでみると、現状書き込みには対応しておらず、読み込みのみとなっているようです。そのためタグにデータを書き込む際は、本記事で記述したようにAndroidアプリで書き込むのが無難かと思います。ただ今回のメジャーアップデートによりiOSでできることが格段に広がった印象です。他にもARKitなど魅力的な機能が多数追加されていますので、本記事以外にも試してみた記事を書けたらと思います。

●この記事を書いた人