2017-10-24 8 views
2

次のコードでサブスクリプションステータスを照会しています。これで私はこのサブスクリプションに関するブール値のステータスを得ることができます。この結果は、ネットワークの状態やパッケージのアンインストール/再インストール、その他の基準によって影響を受けますか?サブスクリプションのステータスを見つける方法はありますか?ユーザーが購読しているかどうかを確認する正しい方法はありますか?

mHelper = new IabHelper(this, PUBLIC_KEY); 
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { 
public void onIabSetupFinished(IabResult result) { 
     if (! result.isSuccess()) { 
      return; 
     } 
     if (QueryInventoryListner.mHelper == null){ 
      return; 
     } 
     mHelper.queryInventoryAsync(mGotInventoryListener); 
     } 
    }); 

&クエリインベントリ完了LISTNER

mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() { 
@Override 
public void onQueryInventoryFinished(final IabResult result, final Inventory inventory) { 
    Purchase subscriptionForFullVersion = inventory.getPurchase(SKU_SUBSCRIPTION); 
    boolean isSubscribe = subscriptionForFullVersion != null ; 
     if(isSubscribe) { 
     //User is subscribed to SKU_SUBSCRIPTION 
     } 
} 

答えて

1

このコードの例でも、アプリケーションを再インストールした後に動作します。

あなたはtry\catchブロックを追加することを忘れ:

public void onIabSetupFinished(IabResult result) {  
     if (!result.isSuccess()) { 
      return; 
     } 
     if (QueryInventoryListner.mHelper == null){ 
      return; 
     } 
     try { 
      mHelper.queryInventoryAsync(mGotInventoryListener); 
     } catch (IabAsyncInProgressException e) { 
      complain(context.getResources().getString(R.string.subscription_error_subscription_error_to_query_inventory_another_async)); 
     } 
    } 

と、このように私のmGotInventoryListener:

// Listener that's called when we finish querying the items and subscriptions we own 
private QueryInventoryFinishedListener mGotInventoryListener = new QueryInventoryFinishedListener() { 
    public void onQueryInventoryFinished(IabResult result, Inventory inventory) { 
     Logging.d(TAG, "Query inventory finished."); 

     // Have we been disposed of in the meantime? If so, quit. 
     if (mHelper == null) return; 

     // Is it a failure? 
     if (result.isFailure()) { 
      complain(context.getResources().getString(R.string.subscription_error_subscription_error_to_query_inventory) + " " + result); 
      return; 
     } 

     Logging.d(TAG, "Query inventory was successful."); 

     // First find out which subscription is auto renewing 
     Purchase subscriptionMonthly = inventory.getPurchase(SKU_SUBSRIPTION_MONTHLY); 

     // The user is subscribed if either subscription exists, even if neither is auto 
     // renewing 
     mSubscribedToFreeAds = (subscriptionMonthly != null); 
     Logging.d(TAG, "User " + (mSubscribedToFreeAds ? "HAS" : "DOES NOT HAVE") 
       + " monthly subscription."); 
     if (mSubscribedToFreeAds) { 
      putPurchase(subscriptionMonthly);//save purchase 
      isSubscribed = true; 
     } else { 
      clearPurchase(); 
      isSubscribed = false; 
     } 

     updateUi(); 
     setWaitScreen(false); 
     Logging.d(TAG, "Initial inventory query finished; enabling main UI."); 
    } 
}; 

また、あなたは、リリース前にサブスクリプションをテストすることができます。 Setting Up for Test Purchases

関連する問題