React Native SDKのエラー処理
SDKから返されるエラーはすべて AdaptyErrorCode です。以下に例を示します。
これらの解決策で問題が解決しない場合は、サポートチームへのお問い合わせ前にその他の問題のセクションをご確認ください。より迅速にサポートできるよう、事前の確認をお願いしています。
try {
const params: MakePurchaseParamsInput = {};
await adapty.makePurchase(product, params);
} catch (error) {
if (
error instanceof AdaptyError &&
error.adaptyCode === getErrorCode('cantMakePayments')
) {
// このデバイスではアプリ内課金が許可されていません
}
}
error.adaptyCode は数値なので、数値と比較してください:リテラル(1003)または getErrorCode('<name>') の結果のいずれかです。ErrorCode は逆方向(数値から名前)のマッピングなので、比較ではなくログ出力に使用してください。
ユーザーがキャンセルした購入はエラーではありません。makePurchase は type が 'user_cancelled' の AdaptyPurchaseResult で解決されます。詳細は購入を行うを参照してください。
システムStoreKitコード
| エラー | コード | 解決策 |
|---|---|---|
| unknown | 0 | 不明または予期しないエラーが発生したことを示すエラーコードです。 再試行するか、その他の問題セクションを参照してください。 |
| clientInvalid | 1 | クライアントが試みた操作を実行する権限がないことを示すエラーコードです。 |
| paymentCancelled | 2 | ユーザーが支払いリクエストをキャンセルしたことを示すエラーコードです。 特別な対応は不要ですが、ビジネスロジックの観点から、ユーザーに割引を提供したり、後でリマインドしたりすることを検討できます。 |
| paymentInvalid | 3 | 支払いパラメーターのいずれかがApp Storeに認識されなかったことを示すエラーです。 |
| paymentNotAllowed | 4 | ユーザーが支払いの承認を許可されていないことを示すエラーコードです。 |
| storeProductNotAvailable | 5 | リクエストされたプロダクトがストアで利用できないことを示すエラーコードです。 アプリを再インストールしてみてください。 |
| cloudServicePermissionDenied | 6 | ユーザーがCloudサービス情報へのアクセスを許可していないことを示すエラーコードです。 |
| cloudServiceNetworkConnectionFailed | 7 | デバイスがネットワークに接続できなかったことを示すエラーコードです。 |
| cloudServiceRevoked | 8 | ユーザーがこのクラウドサービスの使用許可を取り消したことを示すエラーコードです。 |
| privacyAcknowledgementRequired | 9 | ユーザーがAppleのプライバシーポリシーをまだ承認していないことを示すエラーコードです。 |
| unauthorizedRequestData | 10 | アプリが必要なエンタイトルメントを持っていないプロパティを使用しようとしていることを示すエラーコードです。 |
| invalidOfferIdentifier | 11 | オファーの AppStore Connectで必要なオファーを設定し、有効なオファーidentifierを渡していることを確認してください。 |
| invalidSignature | 12 | 支払い割引の署名が有効ではないことを示すエラーコードです。 |
| missingOfferParams | 13 | 支払い割引のパラメーターが不足していることを示すエラーコードです。 |
| invalidOfferPrice | 14 | App Store Connectで指定した価格が無効になったことを示すエラーコードです。オファーは常に割引価格である必要があります。 |
カスタムAndroidコード
| エラー | コード | 解決策 |
|---|---|---|
| adaptyNotInitialized | 20 | Adapty.activate メソッドで Adapty SDK を正しく設定する必要があります。設定方法は React Native 向けのドキュメント をご確認ください。 |
| productNotFound | 22 | このエラーは、購入しようとしたプロダクトがストアで利用できないことを示しています。 |
| currentSubscriptionToUpdateNotFoundInHistory | 24 | 更新対象の元のサブスクリプションが見つかりません。 |
| billingServiceTimeout | 97 | このエラーは、Google Play が応答する前にリクエストが最大タイムアウトに達したことを示しています。Play Billing Library の呼び出しで要求されたアクションの実行に遅延が発生した場合などに起こります。 |
| featureNotSupported | 98 | 現在のデバイスの Play Store では、リクエストされた機能がサポートされていません。 |
| billingServiceDisconnected | 99 | この致命的なエラーは、BillingClient 経由でのクライアントアプリと Google Play ストアサービスの接続が切断されたことを示しています。 |
| billingServiceUnavailable | 102 | この一時的なエラーは、Google Play Billing サービスが現在利用できないことを示しています。ほとんどの場合、クライアントデバイスと Google Play Billing サービス間のどこかでネットワーク接続の問題が発生しています。 |
| billingUnavailable | 103 | このエラーは、購入プロセス中にユーザーの課金エラーが発生したことを示しています。発生するケースの例: 1. ユーザーのデバイス上の Play Store アプリが古い。 2. ユーザーがサポートされていない国にいる。 3. ユーザーがエンタープライズユーザーであり、エンタープライズ管理者が購入を無効にしている。 4. Google Play がユーザーの支払い方法に課金できない(例:クレジットカードの有効期限切れ)。 5. ユーザーが Play Store アプリにログインしていない。 |
| developerError | 105 | API の誤った使用を示す致命的なエラーです。 |
| billingError | 106 | Google Play 内部の問題を示す致命的なエラーです。 |
| itemAlreadyOwned | 107 | 消耗型アイテムはすでに購入済みです。 |
| itemNotOwned | 108 | このエラーは、アイテムに対するリクエストされたアクションが失敗したことを示しています。 |
| billingNetworkError | 112 | このエラーは、デバイスと Play システム間のネットワーク接続に問題があったことを示しています。 |
カスタムStoreKitコード
| エラー | コード | 解決策 |
|---|---|---|
| noProductIDsFound | 1000 | このエラーは、ペイウォールでリクエストしたプロダクトが App Store に登録されているにもかかわらず、購入可能な状態にないことを示します。 このエラーが発生している場合は、Code-1000 |
| productRequestFailed | 1002 | 現在、利用可能なプロダクトを取得できません。考えられる原因: - キャッシュがまだ作成されておらず、かつインターネット接続もない状態。 |
| cantMakePayments | 1003 | このデバイスではアプリ内課金が許可されていません。トラブルシューティング ガイドをご覧ください。 |
| noPurchasesToRestore | 1004 | Adapty React Native SDK 4.0.3 で非推奨:restorePurchases() はこのエラーを返さなくなりました。復元するものがない場合、メソッドは現在のプロファイルで解決されるため、その中のアクセスレベルのステータスを確認してください。それ以前の SDK バージョンでは、Google Play が復元する購入を見つけられなかったことを示します。 |
| cantReadReceipt | 1005 | デバイス上に有効なレシートがありません。サンドボックステスト中に発生することがあります。 対応は不要ですが、ビジネスロジックの観点から、ユーザーに割引を提供したり、後で案内したりすることができます。 |
| productPurchaseFailed | 1006 | プロダクトの購入に失敗しました。このエラーは内部の StoreKit エラーをラップしています。実際の原因を確認するには、ラップされたエラーを読むか(または詳細ログを有効にしてコンソールで確認してください)。ラップされたエラーは通常、上記の表にある StoreKit コード 0〜14 のいずれかで、最も多いのは paymentCancelled、paymentInvalid、paymentNotAllowed、invalidOfferPrice です。原因を特定できない場合は、新しいサンドボックスプロファイルで試してみてください。それでも失敗する場合は Apple サポートにお問い合わせください。 |
| refreshReceiptFailed | 1010 | レシートが受信されなかったことを示すエラーです。StoreKit 1 のみに適用されます。 |
| receiveRestoredTransactionsFailed | 1011 | 購入の復元に失敗しました。 |
カスタムネットワークコード
| エラー | コード | 解決策 |
|---|---|---|
| notActivated | 2002 | Adapty SDK が有効化されていません。 スプラッシュスクリーンや初期の UI フックが adapty.activate の完了前に Adapty のメソッドを呼び出している場合によく発生します。この症状は断続的に起こり、実機とシミュレーターではタイミングが異なるため再現しないことがあります。他の SDK 呼び出しをスケジューリングする前に activate を await してください。詳細な順序については React Native SDK の呼び出し順序 を参照してください。 |
| badRequest | 2003 | リクエストが不正です。 App Store との連携 に必要なすべての手順を完了しているか確認してください。 |
| serverError | 2004 | サーバーエラーです。 しばらく時間をおいてから再試行してください。問題が解決しない場合は、Adapty サポートチームにお問い合わせください。 |
| networkFailed | 2005 | ユーザーのデバイスのネットワーク接続に問題があることを示すエラーです。 VPN を無効にするか、モバイル通信から Wi-Fi に切り替える(またはその逆)をお試しください。 |
| decodingFailed | 2006 | レスポンスのデコードに失敗したことを示すエラーです。 コードを確認し、送信するパラメーターが正しいことを確認してください。たとえば、このエラーは無効な API キーを使用していることを示している場合があります。 |
| encodingFailed | 2009 | リクエストのエンコードに失敗したことを示すエラーです。 |
| analyticsDisabled | 3000 | 外部アナリティクスをオプトアウトしているため、アナリティクスイベントを処理できません。 |
| wrongParam | 3001 | 一部のパラメーターが正しくないことを示すエラーです。 Adapty のペイウォールビルダーを使用していてこのエラーによりペイウォールを表示できない場合は、ペイウォールビルダーで Show on device をオンにしてください。 また、ローカルのフォールバックファイルのバージョンが SDK のバージョンと一致していないことも考えられます。ダッシュボードから新しいファイルをダウンロードしてください。 |
| activateOnceError | 3005 | .activate メソッドは複数回呼び出すことはできません。 |
| profileWasChanged | 3006 | 操作中にユーザープロファイルが変更されました。 これは、 adapty.identify の実行中にメソッドが呼び出された場合に発生します。実行中の呼び出しが入れ替わり直前のプロファイルに対して行われ、SDK がそれを拒否します。ユーザーアクションの呼び出しを行う前に必ず identify を await してください。詳細については React Native SDK の呼び出し順序 を参照してください。 |
| unsupportedData | 3007 | データ形式が SDK でサポートされていないことを示すエラーです。 |
| persistingDataError | 3100 | データの保存中にエラーが発生しました。 |
| fetchTimeoutError | 3101 | フェッチ操作がタイムアウトしたことを示すエラーです。 |
| operationInterrupted | 9000 | この操作はシステムによって中断されました。 再度お試しください。 |
その他の問題
まだ解決策が見つからない場合は、以下の手順をお試しください。
- SDKを最新バージョンにアップグレードする: 最新のSDKバージョンはより安定しており、既知の問題の修正が含まれているため、常に最新版へのアップグレードをお勧めします。
- サポートチームに連絡するか、サポートフォーラムで他の開発者に助けを求める。
- support@adapty.ioまたはチャットでサポートチームに連絡する: SDKのアップグレードができない場合や、アップグレードしても解決しない場合は、サポートチームにお問い合わせください。詳細ログを有効にしてログをチームと共有することで、問題の解決が早まります。関連するコードスニペットも添付できます。