BlogRight arrowTutorialRight ArrowiOS アプリ内購入、パート 5: SKError コードの一覧とその対応方法
BlogRight arrowTutorialRight ArrowiOS アプリ内購入、パート 5: SKError コードの一覧とその対応方法

iOS アプリ内購入、パート 5: SKError コードの一覧とその対応方法

iOS アプリ内購入、パート 5: SKError コードの一覧とその対応方法
Listen to the episode
iOS アプリ内購入、パート 5: SKError コードの一覧とその対応方法

SKError.Code.unknown, code 0

意味:原因不明のエラーが発生しました。

解決方法:開発者側での対応は不要です。このエラーは、iOS 14以降のシミュレーターを使用して商品を取得しようとしたときにも発生します。この場合、商品を入手するには、StoreKitローカルテストまたはiOS 14以前のiOSバージョンの実機/エミュレーターを使用します。

表示するメッセージ:申し訳ございませんが、不明な理由により購入できません。後でもう一度やり直してください。

SKError.Code.clientInvalid, code 1

意味:ユーザーは購入できません。デバイスのペアレンタルコントロール機能がオンになっているときに、子供が何らかの商品を購入しようとしたときなどに発生します。

解決方法:開発者側での対応は不要です。

表示するメッセージ:購入を完了できません。アカウントまたはデバイスを変更してください。

SKError.Code.paymentCancelled, code 2

意味:ユーザーは支払い画面までたどり着きましたが、購入時に気が変わって「キャンセル」をクリックしました。

解決方法:技術的な観点からはエラーが発生していないため、この場合は対応不要です。マーケティングの観点から、引き続きユーザーに働きかけることができます。たとえば、割引を提供するなどです。

表示するメッセージ:ここでは2つのオプションがあります。何も表示しないのも一つですが、「サブスクリプションを割引価格でお試ししませんか?」などのメッセージで購入を促すこともできます。

SKError.Code.paymentInvalid, code 3

意味:何らかの理由で支払いが失敗しました。カードの有効期限が切れているか、購入時の残高が不十分だったなどが考えられます。

解決方法:開発者側での対応は不要です。

表示するメッセージ:購入が拒否されました。お支払いの詳細を確認し、アカウントに十分な資金があることを確認してください。

SKError.Code.paymentNotAllowed, code 4

意味:このカードには、購入制限が設定されている可能性があります。制限が設定されているか、オンラインショッピング機能を使用できません。

解決方法:開発者側での対応は不要です。

表示するメッセージ:選択した支払い方法では購入できません。お支払い方法がオンラインでの購入に対応していることを確認してください。

SKError.Code.storeProductNotAvailable, code 5

意味:ユーザーは、ストアを利用する地域では販売されていない商品を購入しようとしています。

解決方法:開発者は、ユーザーのストアと地域で商品が購入可能かどうかを確認する必要があります。その際には、SKStorefrontを使用できます。

表示するメッセージ:この商品は、お住まいの地域ではご購入いただけません。ストアを変更して、もう一度お試しください。

SKError.Code.cloudServicePermissionDenied, code 6

意味:ユーザーは、クラウドサービスの情報へのアクセスを許可しませんでした。

解決方法:開発者側での対応は不要です。

表示するメッセージ:このようなエラーが発生したことがありませんが、購入が拒否されたと簡潔に記載するとよいでしょう。

SKError.Code.cloudServiceNetworkConnectionFailed, code 7

意味:購入時にデバイスがインターネットに接続されていませんでした。

解決方法:開発者側での対応は不要です。

表示するメッセージ:お使いの端末がインターネットに接続されていないため、購入を完了できません。しばらくしてから、インターネット接続が安定した状態でもう一度お試しください。

Start for free

Adapty handles all SKErrors automatically,

as well as provides the server-side validation and covers all side cases

Start for free

SKError.Code.cloudServiceRevoked, code 8

意味:このデバイスでは、StoreKit支払いサービスにアクセスできません。通常、このエラーはサンドボックスで発生します。

解決方法:新しいサンドボックスユーザーを作成するか、操作を繰り返してみてください。

表示するメッセージ:申し訳ございませんが、エラーが発生しました。

SKError.Code.privacyAcknowledgementRequired, code 9

意味:ユーザーがAppStoreの利用規約に同意しませんでした。ドキュメントに記載されているように、「ユーザーはAppleのApple Musicのプライバシーポリシーに同意していません」。ただし、ここではApple Musicについて言及する理由がないため、エラーのように見えます。

解決方法:開発者側での対応は不要です。

表示するメッセージ:AppStore の利用規約に同意していないため、購入を完了できません。「設定」で利用規約への同意を確認してから、購入画面に戻ってください。

SKError.Code.unauthorizedRequestData, code 10

意味:アプリIDには、StoreKitを使用するために必要な権利がありません。

解決方法:アプリのアプリ内購入の設定プロセスを完了する必要があります。

表示するメッセージ:エラーが発生しました。後でもう一度やり直してください。

SKError.Code.invalidOfferIdentifier, code 11

意味:ユーザーは、誤ったプロモーションオファーで商品を購入しようとしています。

解決方法:開発者側での対応は不要です。

表示するメッセージ:プロモーションオファーが無効であるか、有効期限が切れています。

SKError.Code.invalidSignature, code 12

意味:StoreKitリクエストのプロモーションオファーの署名が正しく生成されませんでした。

解決方法:署名の生成方法を確認して、エラーを修正してください。Adaptyを利用している場合は、サブスクリプションキーをダウンロードします。

表示するメッセージ:プロモーションコードの適用中にエラーが発生しました。後でもう一度やり直してください。

SKError.Code.missingOfferParams, code 13

意味:プロモーションオファーのパラメーターが正しく形成されていません。

解決方法:プロモーションオファーのパラメーターを確認して修正します。

表示するメッセージ:申し訳ございませんが、プロモーションコードの適用中にエラーが発生しました。後でもう一度やり直してください。

SKError.Code.invalidOfferPrice, code 14

意味:ユーザーが無関係な価格で商品を購入しようとしています。AppStoreに表示されている価格が無効になっている可能性があります。

解決方法:オファーの更新された価格をAppStoreで設定します。

表示するメッセージ:申し訳ございませんが、購入を完了できません。後でもう一度やり直してください。

まとめ

正しいエラー処理により、ユーザーエクスペリエンスが向上します。また、何らかの理由でサブスクリプションの料金をすぐに支払うことができなかったユーザーが再購入することもあるでしょう。iOSアプリで購入を実装する際の最も一般的なミスは次のとおりです。

● SKError.Code.unknown:不明なエラー。

● SKError.Code.paymentCancelled:ユーザーが購入をキャンセルした場合。

● SKError.Code.paymentInvalid:支払いを処理できない場合。

実際、エラー処理と購入の実装は煩雑なプロセスです。そのため、アプリ内購入の実装を効率化して、サブスクリプション分析、コホート分析 (cohort analysis)、ペイウォール (paywall) のA/Bテスト (A/B test)、サーバーサイド (server-side) のレシート検証 (Receipt validation) など、多数のメリットを提供するiOS用のAdapty SDKをお試しいただくことをお勧めします。

Further reading

How to pass an App Store review: Recommendations for a subscription-based app
How to pass an App Store review: Recommendations for a subscription-based app
September 16, 2022
10 min read
The first time hackers attacked our servers
The first time hackers attacked our servers
December 23, 2020
2 min read
React native in-app purchases: simple implementation. Tutorial
React native in-app purchases: simple implementation. Tutorial
January 11, 2022
15 min read