アプリ内課金の仕組みについて非常に混乱しています。私はドキュメントを読みましたが、これを機能させるためにアプリケーションに実装する必要がある最終ステップを理解していないため、何かを見落としているに違いありません。アプリ内課金はうまく機能しますが、ユーザーがアプリをアンインストールし、後日再度インストールした場合、アプリはアプリ内購入が以前に行われたかどうかを判断する方法を知りません。これは、これらすべてを処理しようとするメイン クラスのスニペットです。
@Override
public void onCreate(Bundle savedInstanceState)
{
mContext = this;
startService(new Intent(mContext, BillingService.class));
BillingHelper.setCompletedHandler(mTransactionHandler);
}
dungeons サンプル プロジェクトのサンプル クラスを使用しています。私が理解していないのは、購入時に以下のコードがどのように機能するかですが、再実行しても、何かが既に購入されているかどうかを確認するために機能しません。私はこの部分で約1か月間立ち往生しており、非常に不満を感じています.
public Handler mTransactionHandler = new Handler()
{
public void handleMessage(android.os.Message msg)
{
Log.i(TAG, "Transaction complete");
Log.i(TAG, "Transaction status: "
+ BillingHelper.latestPurchase.purchaseState);
Log.i(TAG, "Item purchased is: "
+ BillingHelper.latestPurchase.productId);
if (BillingHelper.latestPurchase.isPurchased())
{
new Message("Thank you!", getApplicationContext());
PAY_VERSION = true;
SharedPreferences purchasePreferences = getSharedPreferences(PURCHASE_PREFERENCES, Activity.MODE_PRIVATE);
Editor purchaseEditor = purchasePreferences.edit();
purchaseEditor.putBoolean("purchased", PAY_VERSION);
purchaseEditor.commit();
Intent intent = getIntent();
finish();
startActivity(intent);
}
};
私が必要としているのは、このアイテムが購入されたかどうかをサーバーに問い合わせる方法です。PURCHASE_STATE_CHANGED
どこかに何かがあることは理解していますが、状態が変化したと判断したときに何かを行う方法や、チェックを開始する方法がわかりません。私は道に迷っており、今のところ私は完全に道に迷っているので、必要なのは正しい方向へのプッシュだけです。
編集:
また、JSON を解析する必要があると聞いたことがありますが、それを開始する方法さえわかりません。
編集2:
これを電話して確認する必要がありますか?
BillingHelper.restoreTransactionInformation(BillingSecurity.generateNonce());
BillingHelper.getPurchaseInformation(new String[] {"myItem"});
そのコードは以前、私の姉妹の電話 ( SGS3
、ICS
) でクラッシュしましたが、私の ( GN
、ICS
、およびJB
職場) ではクラッシュしませんでした。onCreate()
私は最初の活動でそれを呼んでいました。呼び出された後、何をすべきか本当にわかりませんgetPurchaseInformation(...)
。戻り値がないので、JSON
やるべきことを解析できるかどうかわかりません...
また、これらの2行は私にこれを与えます:
08-27 11:54:04.271: E/BillingService(17702): BillingHelper not fully instantiated
08-27 11:54:04.271: E/BillingService(17702): BillingHelper not fully instantiated