Apple Walletのフレームワーク「PassKit」には、PKSuicaPassProperties
(Suicaのプロパティ)というクラスが存在する。
これはその名の通り交通系ICカードのSuicaを指しており、Apple Walletに登録されたSuicaの情報を取得できる。
isInShinkansenStation
やisGreenCarTicketUsed
など「新幹線」「グリーン車」のような直球的な名前のプロパティや、transitBalance
のように残高が取得できるプロパティも存在する。
またSuica以外の交通系IC用(おそらく海外用)にPKTransitPassProperties
というクラスもある。
実際にApple純正のマップアプリではWalletの交通系ICから残高を取得している。
だが、Appleや発行元以外はこの情報を叩くことはできないようだ。
交通系ICに限らず、現時点でPassKitから情報取得できるパスはアプリが署名されたチームが発行したもののみで、仮にパスのIDをentitlementsに追加しても署名時にエラーとなる。
おそらくプライベートAPIではなく特殊な権限が与えられたアカウントで署名しないと実装できないので、交通系ICを発行した事業者かAppleでないと実装できないものと思われる。
セキュリティの都合上仕方ないのは理解できるが、カメラやマイクのようにユーザー許可制でアクセスできるように解放してもらいたい。
それと、唯一これを実装できるJR各社にはウィジェットで残高表示できるようにしてほしい。
(ちなみにSuica/PASMO/ICOCAはどれも利用履歴APIが公開されておらず、公式サイトのスクレイピング以外では残高照会を使った履歴取得はできない。物理的にFelicaを読み取れば読めるが手動更新の必要がある。)