SwiftyStoreKitのドキュメントをよく読むと、ReceiptValidatorは、自前で用意しなさいと書いてあります。
もちろん、自前で用意できるわけがないので、探してみると、良いものがありました。
ここ、その名もSwiftyLocalReceiptValidatorが良さげですので、説明します。
もちろん、自前で用意できるわけがないので、探してみると、良いものがありました。
ここ、その名もSwiftyLocalReceiptValidatorが良さげですので、説明します。
Sponsor Link
使うまでの手順のポイント
上記WebのPrerequisitesが、すごく丁寧に書いてあります。
つまづきやすいのは以下の点でした。
- 素のPodに問題があるらしく、Podfileには、”pod ‘OpenSSL’, :git => ‘https://github.com/wzbozon/OpenSSL-Pod'”と追記しました。
- Bridging Headerには、demo projectにあるこのファイルをコピペしないと少し足りません。
- アプリケーションのビルド設定で、ENABLE_BITCODE=NOにしないと、実機向けにビルドできませんでした。
使い方
ざっくりとした使い方は以下です。
使い方説明コード
1 2 3 4 |
let validator = ReceiptValidator() let validateResult = validator.validateReceipt() |
validate した結果の validateResult にしたがって、処理します。validateResult の種類は、以下の通りです。
validateResult の種類
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
enum ReceiptValidationResult { case success(ParsedReceipt) case error(ReceiptValidationError) } enum ReceiptValidationError : Error { case couldNotFindReceipt case emptyReceiptContents case receiptNotSigned case appleRootCertificateNotFound case receiptSignatureInvalid case malformedReceipt case malformedInAppPurchaseReceipt case incorrectHash } |
Apple Inc. Root Certificate
ちなみに、上記の手順だけだと、appleRootCertificateNotFoundというエラーになります。
Appleの提供するCertificateをこのページから取得してくる必要があります。(一番左上の”Apple Inc. Root Certificate”がそのCertificate)
このファイルをXcode上のプロジェクトに登録して、Targetも設定すると、appleRootCertificateNotFoundエラーは発生しなくなります。
# 登録する場所はどこでも良いみたい・・・不思議。
説明は以上です。
Sponsor Link