FeliCaを使ったシステムに近づけるとWalletが表示されるのに、Expressカード設定した場合にSuicaはTouchID認証せずに使えます。どうやらPolling時のシステムコードによって挙動が違うようなので調べてみました。
システムコード別の挙動
カード固有のIDmを取得してみました。
システムコード | 応答カード | 挙動 |
---|---|---|
0xFE00 | QuickPay | Walletが起動してカード選択 |
0x0003 | Suica | Express設定されているカードのIDmが返る、設定されていない場合はWalletが起動してカード選択 |
0xFFFF | 全て | Walletが起動してカード選択 |
0x0000 | なし | Walletが起動してカード選択 |
※iDはカードが無いので未確認 |
まとめ
- 交通系カード (Suica)のシステムコードでpollingがあった時はExpress設定されたカードのIDmや情報が返り、設定されていない場合はWalletが表示される
- Suicaは読み取りされるとSuicaアプリに通知がされ、特に他のエレメントにアクセスしなくとも「カード読み取り済み」表示が出る。
- Suicaのシステムコード以外のFeliCaカードに対するpollingがある場合にはWalletが表示される(対応カードが無くとも)
- WalletでTouchID認証後にそのカードに対する応答が有効になりカードのIDmや情報が返る。
FeliCaカードを使うシステムの多くはシステムコード0xFFFFを使って情報を取得し、必要な場合はカードの種別を判別しそれ以外の情報へアクセスする場合が多いです。iPhoneではSuicaを指定した場合以外は必ずWalletが表示されてしまいます。また、Suica指定してアクセスするとSuicaアプリに記録され通知がされてしまいます。
iPhoneを手持ちの認証カードの代わりに使いたいと思ったのですが、これではあまり便利では無さそうです...。
その他
2枚SuicaがWalletに入っている場合の挙動は未確認です。システムコードによりカードを絞り込むような雰囲気は無いので、たぶんWalletが表示されるだけかと思います。
参考
OSXでnfcpyを使ってFeliCaを読む方法
brew install bzr
brew install libusb
brew install libusb-compat
sudo pip install --upgrade pip
sudo pip install pyusb
sudo pip install docopt
bzr branch lp:nfcpy trunk
> python example/tagtool.py show
Type3Tag 'FeliCa Mobile 3.0' ID=013B*************
PMM=011************ SYS=FE00
※ nfcpyではpolling時のシステムコード指定ができませんでしたので、FeliCaSDK(Windows版)を利用して挙動を確認しました。