1

Android のアプリ内購入メッセージ フローの最後の部分で「サービスを利用できません」というエラーが表示されますが、その理由はわかりません。

Android のアプリ内課金を実装しましたが、メッセージ シーケンスをほぼ最後までやり遂げるのに十分なほどうまく機能しています。

1) REQUEST_PURCHASE メッセージを送信し、0 の RESPONSE_CODE を取得します。

2) com.android.vending.billing.IN_APP_NOTIFY を受け取ります

3) GET_PURCHASE_INFORMATION メッセージを送信し、0 の RESPONSE_CODE も取得します。

4) com.android.vending.billing.PURCHASE_STATE_CHANGED を受け取ります

5) CONFIRM_NOTIFICATIONS を送信します。

Google が提供するサンプル アプリ (com.android.vending.billing) を見てきましたが、CONFIRM_NOTIFICATIONS メッセージで指定する必要があるのは、通知 ID の文字列配列だけです。この最後のメッセージから受け取る応答は、BroadcastReceiver の com.android.vending.billing.RESPONSE_CODE メッセージで、応答コード値 2 (「サービスを利用できません」にマップされます) が含まれています。この最後のメッセージからエラーが発生するのはなぜですか? 違いがある場合は、静的アイテム ID android.test.purchased を使用しています。

Android のログ メッセージは次のとおりです。

06-29 14:20:12.054: DEBUG/iapReceive(21391): 通知、notificationId android.test.purchased

06-29 14:20:12.054: DEBUG/iapSend(21391): notificationId android.test.purchased で GET_PURCHASE_INFORMATION を送信

06-29 14:20:13.994: DEBUG/iapReceive(21391): inapp_signed_data は {"nonce":5454,"orders":[{"notificationId":"android.test.purchased","orderId":"transactionId. android.test.purchased","packageName":"com.shinyandroid","productId":"android.test.purchased","purchaseTime":1309382399381,"purchaseState":0}]}

06-29 14:20:13.994: DEBUG/iapReceive(21391): 購入状態が変更されました、notificationId android.test.purchased、SKU android.test.purchased

06-29 14:20:13.994: DEBUG/iapSend(21391): notificationId android.test.purchased で CONFIRM_NOTIFICATIONS を送信しています

06-29 14:20:14.845: DEBUG/vending(18344): [51] RequestRunnable.run(): 非同期要求から ApiException を取得しました: バックエンドからのエラーです。リクエスト=com.android.vending.model.AckNotificationsRequest、レスポンス=BAD_REQUEST

06-29 14:20:16.104: DEBUG/vending(18344): [51] RequestRunnable.run(): 非同期要求から ApiException を取得しました: バックエンドからのエラーです。リクエスト=com.android.vending.model.AckNotificationsRequest、レスポンス=BAD_REQUEST

06-29 14:20:18.274: DEBUG/vending(18344): [51] RequestRunnable.run(): 非同期要求から ApiException を取得しました: バックエンドからのエラーです。リクエスト=com.android.vending.model.AckNotificationsRequest、レスポンス=BAD_REQUEST

06-29 14:20:20.824: DEBUG/vending(18344): [51] RequestRunnable.run(): 非同期要求から ApiException を取得しました: バックエンドからのエラーです。リクエスト=com.android.vending.model.AckNotificationsRequest、レスポンス=BAD_REQUEST

06-29 14:20:26.854: DEBUG/vending(18344): [51] RequestRunnable.run(): 非同期要求から ApiException を取得しました: バックエンドからのエラーです。リクエスト=com.android.vending.model.AckNotificationsRequest、レスポンス=BAD_REQUEST

06-29 14:20:26.854: WARN/vending(18344): [51] AsynchInAppAckNotifications.onException(): InAppAckNotificationsRequest のサーバー エラー: com.android.vending.api.ApiException: バックエンドからのエラー。リクエスト=com.android.vending.model.AckNotificationsRequest、レスポンス=BAD_REQUEST

06-29 14:20:26.904: DEBUG/iapReceive (21391): 非同期応答コード、requestId 5225550415890630760、responseCodeIndex 2

4

1 に答える 1

1

数週間が経過したため、修正のために何をしたかは 100% わかりませんが、(テスト モードで) アップロードしたアプリの署名に使用したキーが Android に不一致だったことが問題だったと思います。市場と、電話で実行したアプリに署名するために使用していたキー。

于 2011-08-20T19:03:45.413 に答える