tap-to-connect
WiFi 接続設定を NFC でやりとりする規格を Wi-Fi Alliance が策定していて、一部の Android スマートフォンでは既に何のアプリもインストールせず、かざすだけで WiFi 接続設定が終わるんですよ。わたしこれに感動しまして、ついては iPhone でもぜひほしいと思った次第です。で、作っちゃいましたので要点をまとめます。
アプリから WiFi アクセスポイントの接続設定を行う
とにもかくにも、アプリから WiFi 接続設定ができなければお話になりません。iOS 10 以前では、プログラマブルに WiFi アクセスポイントに接続することができず、どうしてものときは以下の手順が必要でした。
- WiFi アクセスポイントへの接続設定を記述した構成プロファイル( XML ファイル)を用意する。
- アプリ内で Web サーバを起動して構成プロファイルをダウンロードできるようにする。
- アプリから Web ブラウザに遷移させ、 localhost の構成プロファイルをダウンロードさせる。
- 設定アプリに遷移するので、構成プロファイルのインストールを完了する。
とんでもなく筋の悪い方法です。当時、調べたときには絶望しました。
しかし、iOS 11 で大きな変化があり、 NEHotspotConfigurationManager によって WiFi 設定がプログラムから行えるようになりました。これにもいくつか罠がありまして、みなさまに共有しておきたい事柄としては、 iOS では接続中のアクセスポイントの SSID がアプリから取得できないので、意図したアクセスポイントに接続できたかどうか明示的にはわかりません。なので、エラーが発生せず WiFi 接続できた(切り替わった)ことをもって、成功したとみなすより他ないです。もうひとつ、アプリを消すとそのアプリで設定したアクセスポイントの設定も消えます。接続したあと、よかったよかったと思ってアプリをアンインストールすると接続できなくなります。
とはいえ、iOS 10 以前に比べて遥かにまともになりました。
NFC タグの読み込み
執筆時点で iPhone 7 以降に発売された iPhone はすべてNFCが使えます。 iPad と iPod touch では使えません。対応している iPhone でもできるのは読み込みだけで、書き込みはできません。なかでも書き込みできないというのが一番残念で、このアプリで書いたNFCタグをこのアプリで読めればエコシステムが完結できるのですが、タグの書き込みには Android の NFC ライターアプリが必要です。とはいえ書き込まれた WiFi 接続設定を読み込むことはできます。
審査に通るのか
この手のアプリがほとんどなかったので、審査に通るのかまで確認したかったことも開発した動機の一つです。 WiFi 接続設定や NFC の読み込みにあたり、なにか指摘されるかと憂慮していたのですが、特別なことを訊かれることもなく審査を通過しました。デモビデオはこちら。
多言語対応
今のところ英語のみです。ボタン 1 つの UI なのでとくに迷うことはないとは思っているのですが、今後のアップデートでローカライズも入れようと思います。