質問: ProximityDevice.GetDefault(); if (_device != null) { _device.DeviceArrived += ProximityDeviceArrived; _device.DeviceDeparted += ProximityDeviceDeparted; this._device.SubscribeForMessage("NDEF", messageReceived); } } private void ProximityDeviceDeparted(ProximityDevice sender) { // ここは呼び出されます System.Diagnostics.Debug.WriteLine("ProximityDeviceDeparted"); } private void ProximityDeviceArrived(ProximityDevice sender) { // ここは呼び出されます System.Diagnostics.Debug.WriteLine("ProximityDeviceArrived"); } private void messageReceived(Windows.Networking.Proximity.ProximityDevice device, Windows.Networking.Proximity.ProximityMessage message) { // ここが呼び出されません System.Diagnostics.Debug.WriteLine(message.DataAsString); } } ``` ### 開発環境 VisualStudio 2017 community C# Windows8.1 向け WPF アプリケーション (WindowsAPI が使えるように Windows.winmd と System.Runtime.WindowsRuntime は参照できるようにしてあります) カードの形式は MIFARE です(借り物なので問い合わせて得られた情報ですが...) 動作端末のスペックは SO/IEC 14443A, ISO/IEC 14443B PCD 106 kbps to 848 kbps ISO/IEC 14443A, ISO/IEC 14443B PICC 106 kbps to 424 kbps ISO/IEC 15693/ICODE reader NFC-IP1 and NFC-IP2 protocols, 106 kbps to 424 kbps MIFARE reader encryption mechanism NFC Forum Types 1-4 card reader MIFARE and Felica です。
回答: 結果を記載します。 問い合わせて判明したことは、 * カードに書き込まれている内容は NDEF フォーマットではなかった * winscard.dll を使うことで読み出すことができているようです (正確には先方から読み出し用の .dll が提供されました) * NDEF フォーマット以外では ProximityDevice.GetDefault() は呼ばれない可能性がある (https://hiro99ma.blogspot.jp/2012/12/nfpnfpndef.html) とのことで、先方から必要な情報が提供されなかったことが主の原因でした。 提供された .dll の中身を見ると SCardDisconnect などの文字列が見つかったため winscard.dll を使っていると判断しました。 ProximityDevice 系が NDEF フォーマット以外で使えないようですが、検索して見ると情報量としては圧倒的に winscard.dll が多かったので、NFC 関連の実装は winscard.dll を使うのが主流かどうかは気になるところです。 もし同じようなことで困った人の目に止まった際に参考になれば幸いです。 最後に気にかけていただいた aquaS さん、ありがとうございました。 (システム上、ベストアンサーや高評価がつけられないようです。すみません)