はじめに
ある日、開発していた iOS アプリで QR コードを表示する画面では Wallet を無効化してほしいと言われました。。。(iPhone ユーザーではないので Wallet のこともよくわからない)
ミーティングのたびに Apple Pay、Felica、NFC、Wallet などの単語が飛び交い何の話かまったくわかりませんでした(なんとなくは知ってるんですがイマイチ話が噛み合わなかった。。。)。
Apple Pay、Felica、NFC、Wallet に関してどれがなにかわかってなかったのでまとめておきます。
単語
出てきた単語の意味としてはこんな感じです。
NFC -> 近距離無線通信規格の1つ
Felica -> NFC の規格の1つ
Apple Pay -> FeliCa を使った決済システム
Wallet(旧 Passbook) -> クレカやチケットを一元管理するアプリ
まず、NFC は近距離無線通信規格の1つで下記のようにいくつか種類があるようです。
参考:NFC には A, B, F… がある【iOS Core NFC】
Felica は NFC の1つで Suica とかの交通系 IC カードなどで利用されているらしいです。Apple Pay は Felica を使った決済システムです。Wallet アプリはクレジットカードやチケットを管理し、 Apple Pay で決済ができます。
やりたかったこと
単語の意味を調べてやっとわかったのですが、そもそも要望にあった Wallet を無効化してほしいっていうのは Apple Pay を無効化してほしいという意味だとわかりました!
Apple Pay を無効化するには下記のメソッドが用意されています(無効化するのは 10 秒以内じゃないとだめみたいです)。
requestAutomaticPassPresentationSuppression(responseHandler:)
ドキュメントを読んでいると Wallet なんて出てこないので Wallet の無効化って一体なんなんだ??と思っていましたが Apple Pay を無効化したいということのようでした。
このメソッドを利用するには Apple に申請して専用のプロビジョニングプロファイルを作成して entitlements ファイルに com.apple.developer.passkit.pass-presentation-suppression を追加する必要があります。
参考:Apple Pay and PassKit Entitlements
下記のようにして Apple Pay を無効化します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// 無効化 let token = PKPassLibrary.requestAutomaticPassPresentationSuppression { (result) in switch result { case .notSupported: // 非対応端末 break case .alreadyPresenting: // 無効化済み break case .denied: // 無効化の権限なし break case .cancelled: // 無効化キャンセル break case .success: // 無効化成功 break @unknown default: assertionFailure("想定外") } } // 無効化解除(無効化時のトークン利用) PKPassLibrary.endAutomaticPassPresentationSuppression(withRequestToken: token) |
さいごに
最初は何を言ってるのか意味がわからなかったのですが無事にできました。iPhone SE とかも問題ないのか?っていう話が出たりしたんですが SE にも Wallet アプリはありますが Felica を搭載していないので対象ではないことが後々わかりました。
用語をふわっと使うのは危険。
参考
- Apple Pay
- “かざして通信”の『NFC』規格とは? FeliCaとの違いやスマホでできることを解説
- NFC には A, B, F… がある【iOS Core NFC】
- requestAutomaticPassPresentationSuppression(responseHandler:)
- Apple Pay and PassKit Entitlements
コメント