Google의 새로운 Play Billing Library 1.0을 구현하려고하는데 연결이 끊어 질 수 있습니다. 그것은 오래된 Trivial Drive 클래스와 함께 작업했습니다.Play 빌링 라이브러리 1.0 - 연결 없음
난 항상 얻을 응답 코드 = 3/I는 구글 플레이에서 알파 테스터로 다운로드 실제 장치에서 응용 프로그램을 실행
사용할 수 없습니다. 아이디어가 있으십니까?
public BillingManager(Activity activity, final BillingUpdatesListener updatesListener) {
mActivity = activity;
mBillingUpdatesListener = updatesListener;
mBillingClient = BillingClient.newBuilder(mActivity).setListener(this).build();
startServiceConnection(new Runnable() {
@Override
public void run() {
mBillingUpdatesListener.onBillingClientSetupFinished();
queryPurchases();
}
});
}
public void startServiceConnection(final Runnable executeOnSuccess) {
mBillingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(@BillingClient.BillingResponse int responseCode) {
if (responseCode == BillingClient.BillingResponse.OK) {
mIsServiceConnected = true;
if (executeOnSuccess != null) {
executeOnSuccess.run();
}
}
mBillingClientResponseCode = responseCode;
}
@Override
public void onBillingServiceDisconnected() {
mIsServiceConnected = false;
}
});
}
public void initiatePurchaseFlow(final String skuId, final ArrayList<String> oldSkus, final @BillingClient.SkuType String billingType) {
Runnable purchaseFlowRequest = new Runnable() {
@Override
public void run() {
BillingFlowParams.Builder mParams = BillingFlowParams.newBuilder().setSku(skuId).setType(billingType).setOldSkus(oldSkus);
mBillingClient.launchBillingFlow(mActivity, mParams.build());
}
};
executeServiceRequest(purchaseFlowRequest);
}
private void executeServiceRequest(Runnable runnable) {
if (mIsServiceConnected) {
runnable.run();
} else {
startServiceConnection(runnable);
}
}
@Override
public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {
if (responseCode == BillingClient.BillingResponse.OK) {
for (Purchase purchase : purchases) {
handlePurchases(purchase);
}
mBillingUpdatesListener.onPurchasesUpdated(mPurchases);
} else if (responseCode == BillingClient.BillingResponse.USER_CANCELED) {
} else {
}
}
}
편집 : 문제는 내가 ArrayList를 oldSkus로 null을 전달하는 것이였다. 낡은 Skus가 없다면 다른 사람이 무엇을 건지 말해 줄 수 있습니까? 그것은 .setOldSkus를 제거하면 작동하지만, 여전히 올바른 접근 방법이 무엇인지 알고 싶습니다.
하고 그것이 잘 작동, 당신의 skuId 구글의 제품 ID가 연주 일치인가? –
이봐 요, 그 이유는 단순히 에뮬레이터에서 실행했기 때문입니다 ... –