1

アプリにアプリ内課金を実装しています。REQUEST_PURCHASE、CONFIRM_NOTIFICATION、CHECK_BILLING を実装したところ、問題なく動作しました。

今、REQUEST_TRANSACTIONS メソッドを実装しようとしていますが、問題があります。sendBIllingRequest でリクエストを送信すると、RESULT_DEVELOPER_ERROR (5) で RESPONSE_CODE 応答を受け取ります。

これは私がリクエストを行う方法です:

    Log.d(TAG, "Action equals RESTORE_TRANSACTIONS");
Bundle request = makeRequestBundle("RESTORE_TRANSACTIONS");
request.putLong("NONCE", BillingSecurity.newNonce());
try {
    Bundle response = mService.sendBillingRequest(request);
    int response_code = response.getInt("RESPONSE_CODE", -1);
    Log.d(TAG, "RESPONSE Restore: " + response_code);
    restored=true;
} catch (RemoteException e) {
    e.printStackTrace();
}

デバッグモードが無効になっているときにRESTORE_TRANSACTIONSを起動する必要があるという他の質問を読みました。私はマニフェストからそれを無効にしました (false を入れた場合、LogCat がデバッグ印刷を表示しなかったため、フィールドをクリアしました)、これが私の Android マニフェストです:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="resistorcalc.main"
  android:versionName="3.0" android:versionCode="9">
<uses-sdk android:minSdkVersion="8"></uses-sdk>

<uses-permission android:name="com.android.vending.BILLING" />

<application android:label="@string/app_name" android:name=".App" android:icon="@drawable/resistoricon">
    <activity android:name=".launchActivity"
              android:label="@string/app_name" android:screenOrientation="portrait" android:clearTaskOnLaunch="true" android:finishOnTaskLaunch="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:launchMode="standard" android:label="@string/app_name" android:name="SupportusActivity" android:finishOnTaskLaunch="true" android:clearTaskOnLaunch="true" android:screenOrientation="portrait"></activity>
    <activity android:launchMode="standard" android:label="@string/app_name" android:name="OhmLawActivity" android:finishOnTaskLaunch="true" android:clearTaskOnLaunch="true" android:screenOrientation="portrait"></activity>
    <activity android:launchMode="standard" android:label="@string/app_name" android:name="ResistorSumActivity" android:finishOnTaskLaunch="true" android:clearTaskOnLaunch="true" android:screenOrientation="portrait"></activity>               
    <activity android:name="com.google.ads.AdActivity"
          android:configChanges="keyboard|keyboardHidden|orientation" android:clearTaskOnLaunch="true" android:finishOnTaskLaunch="true"/>
    <service android:name=".billing.BillingService" />

    <receiver android:name=".billing.BillingReceiver">
        <intent-filter>
            <action android:name="com.android.vending.billing.IN_APP_NOTIFY" />
            <action android:name="com.android.vending.billing.RESPONSE_CODE" />
            <action android:name="com.android.vending.billing.PURCHASE_STATE_CHANGED" />
        </intent-filter>
    </receiver>               
</application>

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

今私の質問は次のとおりです。

  1. マニフェストのデバッグ可能フラグに false を設定する必要がありますか? または、アプリケーションを実行する必要があります。
  2. debuggable が false に設定されている場合、logcat が Log.* メッセージを表示しないのはなぜですか? これは通常の動作です(Eclipse内でlogcatを使用しています)
  3. android.test.purchased のような静的リクエストを使用すると、RESTOrE_TRANSACTIONS を使用して取得できますか?
  4. その方法を機能させるには、マーケットにドラフトをアップロードする必要がありますか?

ありがとう、イヴァン

4

1 に答える 1

5

マニフェストのデバッグ フラグはこれとは関係ありません。リリース キーでアプリに署名し、下書きを Play ストアにアップロードする必要があります。それもアクティブになるまで1時間ほど待たなければならない場合があります. いいえ、RESTORE_TRANSACTIONS はテスト項目では機能しません。独自の公開済み項目を使用する必要があります。これらはすべてリファレンスに記載されているので、それに従えば問題ありません。

于 2012-06-06T02:47:12.203 に答える