アプリ内のいくつかのアプリ内製品を定義しました。 APKをGooglePlayにアップロードし、アプリ内購入商品をGooglePlayに追加しました。
ServiceConnection
を次のように定義しました。
_ServiceConnection mServiceConn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
mService = null;
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
mService = IInAppBillingService.Stub.asInterface(service);
connect();
}
};
_
onServiceConnected
関数が呼び出され、bindService
はtrueを返します。
次はconnect
関数です。
_public void connect() {
new Thread(new Runnable() {
public void run() {
try {
// Purchase type is "inapp", as required by API v3
Bundle skuDetails = mService.getSkuDetails(3, PACKET, "inapp", querySkus);
}
int response = skuDetails.getInt("RESPONSE_CODE");
Log.e("IAP connect", response + "");
if (response == 0) {
ArrayList<String> responseList = skuDetails.getStringArrayList("DETAILS_LIST");
Log.e("size list", responseList.size()+"");
...
}
}
} catch (RemoteException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
}).start();
}
_
ここでのPACKETはgetPackageName()
に設定されています。応答コードは0ですが、ログにはリストのサイズが0であると出力されます。GooglePlayに合計5つのアイテムを入力し、それぞれがアクティブであるため、リストが空である理由がわかりません。 2日間待って、3つのデバイスでテストしましたが、まだアイテムが通過しません。
私は考えられるすべてのことをほとんど試したので、どんな提案も歓迎します。
アプリ内課金機能にアクセスするには、アプリケーションをベータ版/アルファ版に公開する必要があります。最近変更されましたが、発表されていません:)
http://developer.Android.com/google/play/billing/billing_testing.html#draft_apps
テストできるようにするために、すべての新しいビルドをアップロードする必要はないことを言及する価値があります。同じversionCodeとversionNameを使用するだけで、アプリが公開されていれば機能します。
あなたのコードは大丈夫そうです。
必ず適切なSKUを照会してください。 querySkusの単一のアイテムは、アプリ内製品のIDと正確に一致する必要があります。
次に、アイテムの場合は正しいタイプをクエリしてください。 「アプリ内製品」を開発者コンソールで購入する車として構成した場合は、「アプリ内製品」を使用します。サブスクリプションをお持ちの場合は、GooglePlayに対するクエリのタイプとして「subs」を使用してください。
お役に立てれば。
古いデバイスで問題が発生しました。 Play開発者サービスのアプリデータを削除すると、問題が修正されました。
だから私たちは単に悪いレビューの準備をする必要があります...