এই বিষয়ে Google Play বিলিং লাইব্রেরির জন্য রিলিজ নোট রয়েছে৷
Google Play বিলিং লাইব্রেরি 7.0.0 রিলিজ (2024-05-14)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 7.0.0 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
কিস্তি সাবস্ক্রিপশন সমর্থন করতে API যোগ করা হয়েছে।
- ব্যবহারকারীরা কেনার যোগ্য কিস্তির বেস প্ল্যানের জন্য
ProductDetails.InstallmentPlanDetails
যোগ করা হয়েছে। এই API আপনার অ্যাপটিকে কিস্তির পরিকল্পনা এবং ব্যবহারকারীকে সম্পর্কিত তথ্য প্রদানের জন্য এর প্রতিশ্রুতি সেটআপ সনাক্ত করতে সহায়তা করে। আরও জানতে, আমাদের সাবস্ক্রিপশন কিস্তি নির্দেশিকা দেখুন।
- ব্যবহারকারীরা কেনার যোগ্য কিস্তির বেস প্ল্যানের জন্য
BillingClient.Builder.enablePendingPurchases()
প্রতিস্থাপন করার জন্যPendingPurchasesParams
এবংBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
যোগ করা হয়েছে, যা এই রিলিজে অবনমন করা হয়েছে।- অপ্রচলিত
enablePendingPurchases()
কার্যকরীভাবেenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())
এর সমতুল্য।
- অপ্রচলিত
সাবস্ক্রিপশন প্রিপেইড প্ল্যানের জন্য মুলতুবি লেনদেন সমর্থন করার জন্য API যোগ করা হয়েছে:
- সাবস্ক্রিপশন প্রিপেইড প্ল্যানের জন্য মুলতুবি লেনদেন সক্ষম করতে
BillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
সহPendingPurchasesParams.Builder.enablePrepaidPlans()
ব্যবহার করুন। সমর্থন যোগ করার সময়, নিশ্চিত করুন যে আপনার অ্যাপটি সদস্যতা জীবনচক্রগুলিও সঠিকভাবে পরিচালনা করে। আরও জানতে আমাদের মুলতুবি ক্রয় নির্দেশিকা দেখুন। - মুলতুবি থাকা টপ-আপ পুনরুদ্ধার বা বিদ্যমান সাবস্ক্রিপশনে আপগ্রেড বা ডাউনগ্রেড করার জন্য
Purchase.PendingPurchaseUpdate
এবংPurchase.getPendingPurchaseUpdate()
যোগ করা হয়েছে।
- সাবস্ক্রিপশন প্রিপেইড প্ল্যানের জন্য মুলতুবি লেনদেন সক্ষম করতে
সরানো হয়েছে
BillingClient.Builder.enableAlternativeBilling()
,AlternativeBillingListener
, এবংAlternativeChoiceDetails
।- ডেভেলপারদের পরিবর্তে শ্রোতা কলব্যাকে
UserChoiceBillingListener
এবংUserChoiceDetails
সহBillingClient.Builder.enableUserChoiceBilling()
ব্যবহার করা উচিত।
- ডেভেলপারদের পরিবর্তে শ্রোতা কলব্যাকে
BillingFlowParams.ProrationMode
,BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
, এবংBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
সরানো হয়েছে।- ডেভেলপারদের
BillingFlowParams.SubscriptionUpdateParams.ReplacementMode
এর পরিবর্তেBillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int)
ব্যবহার করা উচিত। -
BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
-
BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
- ডেভেলপারদের
সরানো হয়েছে
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken()
।- এর পরিবর্তে বিকাশকারীদের
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)
ব্যবহার করা উচিত।
- এর পরিবর্তে বিকাশকারীদের
BillingClient.queryPurchaseHistoryAsync()
বাতিল করা হয়েছে এবং ভবিষ্যতে রিলিজে সরিয়ে দেওয়া হবে। বিকাশকারীদের পরিবর্তে নিম্নলিখিত বিকল্পগুলি ব্যবহার করা উচিত:- স্বীকৃত এবং মুলতুবি ক্রয়: সক্রিয় ক্রয়গুলি আনতে
BillingClient.queryPurchasesAsync()
ব্যবহার করুন। - গ্রাসকৃত ক্রয়: ডেভেলপারদের উচিত তাদের নিজস্ব সার্ভারে ব্যবহূত কেনাকাটার ট্র্যাক রাখা।
- বাতিল করা কেনাকাটা: অকার্যকর-ক্রয় বিকাশকারী API ব্যবহার করুন।
- আরও বিশদ বিবরণের জন্য, ক্যোয়ারী ক্রয়ের ইতিহাস দেখুন
- স্বীকৃত এবং মুলতুবি ক্রয়: সক্রিয় ক্রয়গুলি আনতে
BillingFlowParams.ProductDetailsParams.setOfferToken()
এখন একটি ব্যতিক্রম ছুঁড়ে দেয় যখন ডেভেলপাররা একটি খালিofferToken
নির্দিষ্ট করে।minSdkVersion
21 এবংtargetSdkVersion
34-এ আপডেট করা হয়েছে।
Google Play বিলিং লাইব্রেরি 6.2.1 রিলিজ (2024-04-16)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 6.2.1 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
-
BillingClient.showAlternativeBillingOnlyInformationDialog()
এ একটি বাগ সংশোধন করা হয়েছে যেখানে ডায়ালগটি সম্পূর্ণ হলে কিছু ক্ষেত্রেAlternativeBillingOnlyInformationDialogListener
কল করা যাবে না।
Google Play বিলিং লাইব্রেরি 6.2.0 রিলিজ (2024-03-06)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 6.2.0 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
- বাহ্যিক অফার সমর্থন করার জন্য API যোগ করা হয়েছে
- বাহ্যিক অফার প্রদান করার ক্ষমতা সক্ষম করতে
BillingClient.Builder.enableExternalOffer()
যোগ করা হয়েছে। - বাহ্যিক অফার কার্যকারিতা প্রদানের উপলব্ধতা পরীক্ষা করতে
BillingClient.isExternalOfferAvailableAsync()
যোগ করা হয়েছে। - যোগ করা হয়েছে
BillingClient.showExternalOfferInformationDialog()
অ্যাপের বাইরে ব্যবহারকারীদের নেতৃত্ব দেওয়ার আগে ব্যবহারকারীদের একটি তথ্য ডায়ালগ দেখানোর জন্য। -
BillingClient.createExternalOfferReportingDetailsAsync()
যোগ করা হয়েছে বহিরাগত অফারগুলির মাধ্যমে করা লেনদেনের রিপোর্ট করার জন্য একটি পেলোড তৈরি করতে।
- বাহ্যিক অফার প্রদান করার ক্ষমতা সক্ষম করতে
Google Play বিলিং লাইব্রেরি 6.1.0 রিলিজ (2023-11-14)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 6.1.0 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
- শুধুমাত্র বিকল্প বিলিং সমর্থন করার জন্য API যোগ করা হয়েছে (যেমন ব্যবহারকারীর পছন্দ ছাড়া)
- শুধুমাত্র বিকল্প বিলিং অফার করার ক্ষমতা কার্যকরীভাবে সক্ষম করতে
BillingClient.Builder.enableAlternativeBillingOnly()
যোগ করা হয়েছে। - শুধুমাত্র বিকল্প বিলিং অফার করার উপলব্ধতা পরীক্ষা করতে
BillingClient.isAlternativeBillingOnlyAvailableAsync()
যোগ করা হয়েছে। - যোগ করা হয়েছে
BillingClient.showAlternativeBillingOnlyInformationDialog()
একটি তথ্য ডায়ালগ দেখানোর জন্য ব্যবহারকারীদের জানানোর জন্য যখন শুধুমাত্র বিকল্প বিলিং ব্যবহার করা হচ্ছে। - যোগ করা হয়েছে
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()
শুধুমাত্র বিকল্প বিলিং এর মাধ্যমে করা লেনদেনের রিপোর্ট করার জন্য একটি পেলোড তৈরি করতে।
- শুধুমাত্র বিকল্প বিলিং অফার করার ক্ষমতা কার্যকরীভাবে সক্ষম করতে
- ব্যবহারকারী পছন্দ বিলিং API আপডেট করা হয়েছে
- অল্টারনেটিভবিলিংলিস্টেনারকে প্রতিস্থাপন করতে
UserChoiceBillingListener
যোগ করা হয়েছে যা অবচয় হিসাবে চিহ্নিত করা হয়েছে। -
AlternativeChoiceDetails
প্রতিস্থাপন করতেUserChoiceDetails
যোগ করা হয়েছে যা অবচয় হিসাবে চিহ্নিত করা হয়েছে। -
BillingClient.Builder.enableUserChoiceBilling()
প্রতিস্থাপন করতেBillingClient.Builder.enableAlternativeBilling()
যোগ করা হয়েছে যা অবচয় হিসাবে চিহ্নিত করা হয়েছে।
- অল্টারনেটিভবিলিংলিস্টেনারকে প্রতিস্থাপন করতে
- Google Play দেশ পুনরুদ্ধার করতে
BillingClient.getBillingConfigAsync()
যোগ করা হয়েছে।
Google Play বিলিং লাইব্রেরি 6.0.1 রিলিজ (2023-06-22)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 6.0.1 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
Android 14 এর সাথে সামঞ্জস্যপূর্ণ হতে Play বিলিং লাইব্রেরি আপডেট করুন।
Google Play বিলিং লাইব্রেরি 6.0 রিলিজ (2023-05-10)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 6.0.0 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
ProrationMode
প্রতিস্থাপন করতে নতুনReplacementMode
enum যোগ করা হয়েছে।অনুগ্রহ করে মনে রাখবেন যে
ProrationMode
এখনও পশ্চাদগামী সামঞ্জস্যতার কারণে উপলব্ধ।PENDING
ক্রয়ের জন্য অর্ডার আইডি সরানো হয়েছে।আগে, ক্রয় মুলতুবি থাকলেও অর্ডার আইডি সবসময় তৈরি করা হতো। সংস্করণ 6.0.0 থেকে শুরু করে, মুলতুবি কেনাকাটার জন্য একটি অর্ডার আইডি তৈরি করা হবে না এবং এই ক্রয়ের জন্য, ক্রয়টি
PURCHASED
অবস্থায় স্থানান্তরিত হওয়ার পরে অর্ডার আইডি তৈরি করা হবে।সরানো হয়েছে
queryPurchases
এবংlaunchPriceConfirmationFlow
পদ্ধতি।queryPurchases
এবংlaunchPriceConfirmationFlow
পদ্ধতিগুলি যেগুলি পূর্বে অপ্রত্যাশিত হিসাবে চিহ্নিত করা হয়েছিল সেগুলি এখন প্লে বিলিং লাইব্রেরি 6.0.0 থেকে সরানো হয়েছে৷ ডেভেলপারদেরqueryPurchases
এর পরিবর্তেqueryPurchasesAsync
ব্যবহার করা উচিত।launchPriceConfirmationFlow
বিকল্পের জন্য, মূল্য পরিবর্তনগুলি দেখুন।নতুন নেটওয়ার্ক ত্রুটি প্রতিক্রিয়া কোড যোগ করা হয়েছে.
একটি নতুন নেটওয়ার্ক ত্রুটি প্রতিক্রিয়া কোড,
NETWORK_ERROR
, PBL সংস্করণ 6.0.0 দিয়ে শুরু করে যোগ করা হয়েছে। নেটওয়ার্ক সংযোগ সমস্যার কারণে একটি ত্রুটি ঘটলে এই কোডটি ফেরত দেওয়া হয়। এই নেটওয়ার্ক সংযোগ ত্রুটিগুলি পূর্বেSERVICE_UNAVAILABLE
হিসাবে রিপোর্ট করা হয়েছিল৷SERVICE_UNAVAILABLE
এবংSERVICE_TIMEOUT
আপডেট করা হয়েছে।PBL সংস্করণ 6.0.0 থেকে শুরু করে, প্রক্রিয়াকরণের সময়সীমার কারণে ত্রুটিগুলি বর্তমান
SERVICE_TIMEOUT
এর পরিবর্তেSERVICE_UNAVAILABLE
হিসাবে ফেরত দেওয়া হবে৷PBL এর আগের সংস্করণে আচরণ পরিবর্তন হয় না।
SERVICE_TIMEOUT
সরানো হয়েছে।PBL সংস্করণ 6.0.0 দিয়ে শুরু করে,
SERVICE_TIMEOUT
আর ফেরত দেওয়া হবে না। PBL এর পূর্ববর্তী সংস্করণগুলি এখনও এই কোডটি ফেরত দেবে।অতিরিক্ত লগিং যোগ করা হয়েছে.
প্লে বিলিং লাইব্রেরি 6 রিলিজে অতিরিক্ত লগিং অন্তর্ভুক্ত রয়েছে, যা API ব্যবহার (যেমন সাফল্য এবং ব্যর্থতা) এবং পরিষেবা সংযোগ সংক্রান্ত সমস্যাগুলির অন্তর্দৃষ্টি প্রদান করে৷ এই তথ্যটি প্লে বিলিং লাইব্রেরির পারফরম্যান্স উন্নত করতে এবং ত্রুটিগুলির জন্য আরও ভাল সমর্থন প্রদান করতে ব্যবহার করা হবে৷
Google Play বিলিং লাইব্রেরি 5.2.1 রিলিজ (2023-06-22)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 5.2.1 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
Android 14 এর সাথে সামঞ্জস্যপূর্ণ হতে Play বিলিং লাইব্রেরি আপডেট করুন।
Google Play বিলিং লাইব্রেরি 5.2 রিলিজ (2023-04-06)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 5.2.0 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
- দক্ষিণ কোরিয়ার ব্যবহারকারীদের জন্য মোবাইল/ট্যাবলেটে বিকল্প বিলিং প্রবাহ সমর্থন করার জন্য ক্লাস যোগ করা হয়েছে:
- মূল সদস্যতার বাহ্যিক লেনদেন আইডি নির্দিষ্ট করতে
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()
পদ্ধতি যোগ করা হয়েছে। - দক্ষিণ কোরিয়ার ব্যবহারকারীদের একটি বিকল্প বিলিং বিকল্প নির্বাচন করার অনুমতি দিতে
BillingClient.Builder.enableAlternativeBilling()
পদ্ধতি যোগ করা হয়েছে।
Google Play বিলিং লাইব্রেরি 5.1 রিলিজ (2022-10-31)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 5.1.0 এখন উপলব্ধ৷
এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
পরিবর্তনের সারসংক্ষেপ
- অফার আইডি পুনরুদ্ধার করতে
ProductDetails.SubscriptionOfferDetails.getOfferId()
পদ্ধতি যোগ করা হয়েছে। - বেস প্ল্যান আইডি পুনরুদ্ধার করতে
ProductDetails.SubscriptionOfferDetails.getBasePlanId()
পদ্ধতি যোগ করা হয়েছে। -
targetSdkVersion
31-এ আপডেট করা হয়েছে।
Google Play বিলিং লাইব্রেরি 5.0 রিলিজ (2022-05-11)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 5.0.0 এখন উপলব্ধ৷
এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
পরিবর্তনের সারসংক্ষেপ
- সাবস্ক্রিপশনের জন্য একটি নতুন মডেল প্রবর্তন করেছে, নতুন সত্তা সহ যা আপনাকে একটি সাবস্ক্রিপশন পণ্যের জন্য একাধিক অফার তৈরি করতে সক্ষম করে। আরও তথ্যের জন্য, মাইগ্রেশন গাইড দেখুন।
-
BillingClient.queryProductDetailsAsync()
প্রতিস্থাপন করতেBillingClient.querySkuDetailsAsync()
যোগ করা হয়েছে। - EU ব্যক্তিগতকৃত মূল্য প্রকাশের প্রয়োজনীয়তার জন্য
setIsOfferPersonalized()
পদ্ধতি যোগ করা হয়েছে। এই পদ্ধতিটি কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও জানতে, একটি ব্যক্তিগতকৃত মূল্য নির্দেশ করুন দেখুন। - সরানো হয়েছে
queryPurchases()
, যেটি আগে অবচ্যুত হয়েছিল এবং Google Play বিলিং লাইব্রেরি 4.0.0-এ চালু করা queryPurchasesAsync দ্বারা প্রতিস্থাপিত হয়েছিল৷ -
launchPriceChangeFlow
বাতিল করা হয়েছে এবং ভবিষ্যতের রিলিজে সরিয়ে দেওয়া হবে। বিকল্প সম্পর্কে আরও জানতে, একটি মূল্য পরিবর্তন নিশ্চিতকরণ প্রবাহ চালু করুন দেখুন। - সরানো হয়েছে
setVrPurchaseFlow()
, যা পূর্বে একটি ক্রয় প্রবাহকে সূচনা করার সময় ব্যবহৃত হত। পূর্ববর্তী সংস্করণগুলিতে, এই পদ্ধতিটি ব্যবহারকারীকে তাদের Android ডিভাইসে কেনাকাটা সম্পূর্ণ করার জন্য পুনঃনির্দেশিত করেছে। একবার আপনি এই পদ্ধতিটি সরিয়ে ফেললে, ব্যবহারকারীরা স্ট্যান্ডার্ড ক্রয় প্রবাহের মাধ্যমে ক্রয়টি সম্পূর্ণ করবে।
Google Play বিলিং লাইব্রেরি 4.1 রিলিজ (2022-02-23)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 4.1.0 এখন উপলব্ধ৷
এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
পরিবর্তনের সারসংক্ষেপ
- সাবস্ক্রিপশন পেমেন্ট অস্বীকৃতি সামলাতে সাহায্য করতে
BillingClient.showInAppMessages()
যোগ করা হয়েছে। সাবস্ক্রিপশন পেমেন্ট ডিকলাইন্স হ্যান্ডলিং করার জন্য অ্যাপ-মধ্যস্থ মেসেজিং কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও জানতে, পেমেন্ট ডিকলাইন্স হ্যান্ডলিং দেখুন।
Google Play বিলিং লাইব্রেরি 4.0 রিলিজ (2021-05-18)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 4.0.0 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
BillingClient.queryPurchasesAsync()
BillingClient.queryPurchases()
করা হয়েছে যা ভবিষ্যতে রিলিজে সরানো হবে।নতুন সদস্যতা প্রতিস্থাপন মোড
IMMEDIATE_AND_CHARGE_FULL_PRICE
যোগ করা হয়েছে।Play বিলিং লাইব্রেরির সংযোগ অবস্থা পুনরুদ্ধার করতে
BillingClient.getConnectionState()
পদ্ধতি যোগ করা হয়েছে।আপডেট করা Javadoc এবং বাস্তবায়ন নির্দেশ করতে কোন থ্রেডে কোন পদ্ধতি কল করা যেতে পারে এবং কোন থ্রেডের ফলাফল পোস্ট করা হবে।
সদস্যতা আপডেট শুরু করার একটি নতুন উপায় হিসাবে
BillingFlowParams.Builder.setSubscriptionUpdateParams()
যোগ করা হয়েছে। এটি প্রতিস্থাপন করেBillingFlowParams#getReplaceSkusProrationMode
,BillingFlowParams#getOldSkuPurchaseToken
,BillingFlowParams#getOldSku
, BillingFlowParams.Builder#BillingFlowParams.Builder#setReplaceSkusProrationMode
,BillingFlowParams.Builder#setOldSku
কে সরিয়ে দেওয়া হয়েছে।Purchase.getQuantity()
এবংPurchaseHistoryRecord.getQuantity()
যোগ করা হয়েছে।Purchase#getSkus()
এবংPurchaseHistoryRecord#getSkus()
যোগ করা হয়েছে। এইগুলিPurchase#getSku
এবংPurchaseHistoryRecord#getSku
প্রতিস্থাপন করে যা সরানো হয়েছে।সরানো হয়েছে
BillingFlowParams#getSku
,BillingFlowParams#getSkuDetails
এবংBillingFlowParams#getSkuType
।
Google Play বিলিং লাইব্রেরি 3.0.3 রিলিজ (2021-03-12)
Google Play বিলিং লাইব্রেরির সংস্করণ 3.0.3, Kotlin এক্সটেনশন এবং ইউনিটি প্লাগইন এখন উপলব্ধ৷
জাভা এবং কোটলিন বাগ ফিক্স
-
endConnection()
কল করা হলে মেমরি লিক ঠিক করুন। - Google Play বিলিং লাইব্রেরি যখন একক টাস্ক লঞ্চ মোড ব্যবহার করে এমন অ্যাপ্লিকেশানগুলি দ্বারা ব্যবহার করা হয় তখন সমস্যার সমাধান করুন৷ একটি
onPurchasesUpdated()
কলব্যাক ট্রিগার হবে যখন Android লঞ্চার থেকে একটি অ্যাপ পুনরায় চালু করা হবে এবং স্থগিত হওয়ার আগে বিলিং ডায়ালগটি দৃশ্যমান ছিল৷
ইউনিটি বাগ ফিক্স
- অ্যান্ড্রয়েড লঞ্চার থেকে একটি অ্যাপ পুনরায় চালু হলে মেমরি লিক ঠিক করতে জাভা সংস্করণ 3.0.3 আপডেট করুন এবং ক্রয় প্রতিরোধের সমস্যা সমাধান করুন এবং স্থগিত হওয়ার আগে বিলিং ডায়ালগটি দৃশ্যমান ছিল৷
Google Play বিলিং লাইব্রেরি 3.0.2 রিলিজ (2020-11-24)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 3.0.2 এখন উপলব্ধ৷
বাগ ফিক্স
- কোটলিন এক্সটেনশনে একটি বাগ সংশোধন করা হয়েছে যেখানে "ইতিমধ্যে পুনরায় শুরু হয়েছে" ত্রুটির সাথে করটিন ব্যর্থ হয়৷
- kotlinx.coroutines লাইব্রেরি সংস্করণ 1.4+ এর সাথে Kotlin এক্সটেনশন ব্যবহার করা হলে অমীমাংসিত রেফারেন্স স্থির করা হয়েছে।
Google Play বিলিং লাইব্রেরি 3.0.1 রিলিজ (2020-09-30)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 3.0.1 এখন উপলব্ধ৷
বাগ ফিক্স
- একটি বাগ সংশোধন করা হয়েছে যেখানে যদি অ্যাপটি বিলিং ফ্লো চলাকালীন মেরে ফেলা হয় এবং পুনরুদ্ধার করা হয় তবে ক্রয় ফলাফলের সাথে
PurchasesUpdatedListener
কল করা যাবে না।
Google Play বিলিং লাইব্রেরি 3.0 রিলিজ (2020-06-08)
Google Play বিলিং লাইব্রেরির সংস্করণ 3.0.0, Kotlin এক্সটেনশন, এবং ইউনিটি প্লাগইন এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
- পুরস্কৃত SKU সমর্থন সরানো হয়েছে।
-
ChildDirected
এবংUnderAgeOfConsent
প্যারামিটারগুলি সরানো হয়েছে৷ - অপসারিত বিকাশকারী পেলোড পদ্ধতিগুলি সরানো হয়েছে৷
- অপসারিত পদ্ধতি
BillingFlowParams.setAccountId()
এবংBillingFlowParams.setDeveloperId()
। - অপসারিত পদ্ধতি
BillingFlowParams.setOldSkus(String oldSku)
এবংBillingFlowParams.addOldSku(String oldSku)
। - শূন্যতা টীকা যোগ করা হয়েছে।
বাগ ফিক্স
-
SkuDetails.getIntroductoryPriceCycles()
এখনString
এর পরিবর্তেint
প্রদান করে। - একটি বাগ সংশোধন করা হয়েছে যেখানে বিলিং ফ্লোকে অতিরিক্ত প্যারাম হিসেবে গণ্য করা হবে এমনকি কোনো অতিরিক্ত প্যারাম সেট না থাকলেও।
Google Play বিলিং লাইব্রেরি 2.2.1 রিলিজ (2020-05-20)
Google Play বিলিং লাইব্রেরির সংস্করণ 2.2.1 এখন উপলব্ধ৷
বাগ ফিক্স
- জাভা প্লে বিলিং লাইব্রেরির ডিফল্ট সংস্করণ আপডেট করা হয়েছে যার উপর কোটলিন এক্সটেনশন নির্ভর করে।
Google Play বিলিং লাইব্রেরি 2.2.0 রিলিজ এবং ইউনিটি সমর্থন (2020-03-23)
Google Play বিলিং-এর সংস্করণ 2.2.0 কার্যকারিতা প্রদান করে যা ডেভেলপারদের নিশ্চিত করতে সাহায্য করে যে কেনাকাটা সঠিক ব্যবহারকারীর জন্য দায়ী করা হয়েছে। এই পরিবর্তনগুলি ডেভেলপার পেলোডের উপর ভিত্তি করে কাস্টম সমাধান তৈরি করার প্রয়োজনীয়তা প্রতিস্থাপন করে। এই আপডেটের অংশ হিসেবে, ডেভেলপার পেলোড কার্যকারিতা বাতিল করা হয়েছে এবং ভবিষ্যতের রিলিজে সরিয়ে দেওয়া হবে। প্রস্তাবিত বিকল্প সহ আরও তথ্যের জন্য, বিকাশকারী পেলোড দেখুন।
একতার জন্য গুগল প্লে বিলিং বিলিং লাইব্রেরি 2
Google Play বিলিং লাইব্রেরি 2 এর বর্তমান জাভা এবং কোটলিন সংস্করণগুলি ছাড়াও, আমরা ইউনিটির সাথে ব্যবহারের জন্য লাইব্রেরির একটি সংস্করণ প্রকাশ করেছি৷ Unity ইন-অ্যাপ ক্রয় API ব্যবহার করে গেম ডেভেলপাররা Google Play বিলিং লাইব্রেরি 2 বৈশিষ্ট্যগুলির সুবিধা নিতে এবং Google Play বিলিং লাইব্রেরির ভবিষ্যত সংস্করণগুলিতে পরবর্তী আপগ্রেডগুলিকে আরও সহজ করতে এখনই আপগ্রেড করতে পারেন৷
আরও জানতে, ইউনিটির সাথে Google Play বিলিং ব্যবহার করুন দেখুন।
পরিবর্তনের সারসংক্ষেপ
- জাভা গুগল প্লে বিলিং লাইব্রেরি
-
AcknowledgePurchaseParams
এ,setDeveloperPayload()
এবংgetDeveloperPayload()
পদ্ধতি অবমূল্যায়িত করা হয়েছে। -
ConsumeParams
এ,setDeveloperPayload()
এবংgetDeveloperPayload()
পদ্ধতি অবচয় করা হয়েছে। -
BillingFlowParams
এ,setAccountId()
নাম পরিবর্তন করেsetObfuscatedAccountId()
করা হয়েছে, এবং 64টি অক্ষরের নথিভুক্ত দৈর্ঘ্যের সীমাবদ্ধতা এবং এই ক্ষেত্রে ব্যক্তিগতভাবে শনাক্তকরণযোগ্য তথ্য (PII) অনুমোদন না করে।setAccountId()
অবচয় হিসাবে চিহ্নিত করা হয়েছে এবং ভবিষ্যতের লাইব্রেরি সংস্করণে সরানো হবে। -
BillingFlowParams
এ,setObfuscatedProfileId()
যোগ করা হয়েছে যাsetObfuscatedAccountId()
এর মতই কাজ করে। আরও তথ্যের জন্য, বিকাশকারী পেলোড আপডেট এবং বিকল্পগুলি দেখুন। -
Purchase
-এ,BillingFlowParams
এ সেট করা অস্পষ্ট অ্যাকাউন্ট শনাক্তকারী ফেরত দিতেgetAccountIdentifiers()
পদ্ধতি যোগ করুন। -
BillingClient
এ,loadRewardedSku()
পদ্ধতিটি পুরস্কৃত SKU-গুলিকে অবমূল্যায়ন করার অংশ হিসাবে অপ্রচলিত হিসাবে চিহ্নিত করা হয়েছে। আপনি Play Console সহায়তা কেন্দ্রে অবচয় সম্পর্কে আরও তথ্য পেতে পারেন৷
-
গুগল প্লে বিলিং লাইব্রেরি 2.1.0 রিলিজ এবং কোটলিন এক্সটেনশন 2.1.0 রিলিজ (2019-12-10)
Google Play বিলিং লাইব্রেরির সংস্করণ 2.1.0 এবং নতুন Kotlin এক্সটেনশন এখন উপলব্ধ৷ প্লে বিলিং লাইব্রেরি কোটলিন এক্সটেনশনটি কোটলিন ব্যবহারের জন্য বাহাদুরী API বিকল্পগুলি প্রদান করে, যেখানে আরও ভাল নাল-নিরাপত্তা এবং কোরোটিনগুলি রয়েছে৷ কোড উদাহরণের জন্য, Google Play বিলিং লাইব্রেরি ব্যবহার করুন দেখুন।
এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
পরিবর্তনের সারসংক্ষেপ
-
BillingFlowParams
এ,setOldSku(String oldSku)
অবমূল্যায়িত করা হয়েছে এবংsetOldSku(String oldSku, String purchaseToken)
দিয়ে প্রতিস্থাপিত হয়েছে, যখন ডিভাইসে একাধিক অ্যাকাউন্ট একই স্কুর মালিক হয় তখন দ্ব্যর্থতা নিরসন করতে।
Google Play বিলিং লাইব্রেরি 2.0.3 রিলিজ (2019-08-05)
Google Play বিলিং লাইব্রেরির সংস্করণ 2.0.3 এখন উপলব্ধ৷
বাগ ফিক্স
- একটি বাগ সংশোধন করা হয়েছে যেখানে
querySkuDetailsAsync()
মাঝে মাঝে একটি সফল ফলাফল ফেরত দেওয়ার পরিবর্তেDEVELOPER_ERROR
কোডের সাথে ব্যর্থ হবে৷
Google Play বিলিং লাইব্রেরি 2.0.2 রিলিজ (2019-07-08)
Google Play বিলিং লাইব্রেরির সংস্করণ 2.0.2 এখন উপলব্ধ৷ এই রিলিজে রেফারেন্স ডকুমেন্টেশনের আপডেট রয়েছে এবং লাইব্রেরির কার্যকারিতা পরিবর্তন করে না।
Google Play বিলিং লাইব্রেরি 2.0.1 রিলিজ (2019-06-06)
Google Play বিলিং লাইব্রেরির সংস্করণ 2.0.1 এখন উপলব্ধ৷ এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
বাগ ফিক্স
- একটি বাগ সংশোধন করা হয়েছে যেখানে কিছু ক্ষেত্রে ডিবাগ বার্তা
null
হিসাবে ফেরত দেওয়া হচ্ছে। - একটি সম্ভাব্য মেমরি লিক সমস্যা সংশোধন করা হয়েছে.
Google Play বিলিং লাইব্রেরি 2.0 রিলিজ (2019-05-07)
Google Play বিলিং লাইব্রেরির সংস্করণ 2.0 এখন উপলব্ধ৷ এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
ক্রয় তিন দিনের মধ্যে স্বীকার করতে হবে
Google Play আপনার অ্যাপের ভিতর থেকে (অ্যাপ-এর মধ্যে) বা আপনার অ্যাপের বাইরে (অ্যাপ-এর বাইরে) পণ্য কেনাকে সমর্থন করে। ব্যবহারকারী আপনার পণ্য যেখানেই ক্রয় করুক না কেন Google Play একটি ধারাবাহিক ক্রয়ের অভিজ্ঞতা নিশ্চিত করার জন্য, ব্যবহারকারীকে এনটাইটেলমেন্ট দেওয়ার পরে যত তাড়াতাড়ি সম্ভব Google Play বিলিং লাইব্রেরির মাধ্যমে প্রাপ্ত সমস্ত কেনাকাটা স্বীকার করতে হবে। আপনি যদি তিন দিনের মধ্যে একটি ক্রয় স্বীকার না করেন, তাহলে ব্যবহারকারী স্বয়ংক্রিয়ভাবে একটি অর্থ ফেরত পাবেন এবং Google Play ক্রয়টি প্রত্যাহার করে। মুলতুবি লেনদেনের জন্য (সংস্করণ 2.0 এ নতুন), তিন দিনের উইন্ডো শুরু হয় যখন ক্রয়টি PURCHASED
অবস্থায় চলে যায় এবং ক্রয়টি PENDING
থাকা অবস্থায় প্রযোজ্য হয় না।
সাবস্ক্রিপশনের জন্য, আপনাকে অবশ্যই নতুন ক্রয়ের টোকেন আছে এমন যেকোনো ক্রয় স্বীকার করতে হবে। এর মানে হল যে সমস্ত প্রাথমিক কেনাকাটা, পরিকল্পনা পরিবর্তন, এবং পুনরায় সাইনআপগুলি স্বীকার করতে হবে, তবে আপনাকে পরবর্তী পুনর্নবীকরণগুলি স্বীকার করতে হবে না। একটি ক্রয়ের স্বীকৃতির প্রয়োজন কিনা তা নির্ধারণ করতে, আপনি ক্রয়ের স্বীকৃতি ক্ষেত্রটি পরীক্ষা করতে পারেন।
Purchase
বস্তুতে এখন একটি isAcknowledged()
পদ্ধতি রয়েছে যা নির্দেশ করে যে একটি ক্রয় স্বীকার করা হয়েছে কিনা। এছাড়াও, Google Play বিকাশকারী API-এ Purchases.products
এবং Purchases.subscriptions
উভয়ের জন্য স্বীকৃতি বুলিয়ান মান অন্তর্ভুক্ত রয়েছে। ক্রয় স্বীকার করার আগে, ক্রয়টি ইতিমধ্যেই স্বীকার করা হয়েছে কিনা তা নির্ধারণ করতে এই পদ্ধতিগুলি ব্যবহার করতে ভুলবেন না।
আপনি নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করে একটি ক্রয় স্বীকার করতে পারেন:
- ভোগ্য পণ্যের জন্য, ক্লায়েন্ট এপিআই-তে পাওয়া
consumeAsync()
ব্যবহার করুন। - যে পণ্যগুলি ব্যবহার করা হয় না তাদের জন্য, ক্লায়েন্ট API-এ পাওয়া
acknowledgePurchase()
ব্যবহার করুন। - সার্ভার API-এ একটি নতুন
acknowledge()
পদ্ধতিও উপলব্ধ।
BillingFlowParams.setSku() সরানো হয়েছে
এই রিলিজে পূর্বে-বঞ্চিত BillingFlowParams#setSku()
পদ্ধতিটি সরানো হয়েছে। একটি ক্রয় প্রবাহে পণ্য রেন্ডার করার আগে, আপনাকে এখন BillingClient.querySkuDetailsAsync()
কল করতে হবে, ফলে SkuDetails
অবজেক্টটি BillingFlowParams.Builder.setSkuDetails()
এ পাস করতে হবে।
কোড উদাহরণের জন্য, Google Play বিলিং লাইব্রেরি ব্যবহার করুন দেখুন।
বিকাশকারী পেলোড সমর্থিত
Google Play বিলিং লাইব্রেরির সংস্করণ 2.0 ডেভেলপার পেলোডের জন্য সমর্থন যোগ করে — ইচ্ছামত স্ট্রিং যা ক্রয়ের সাথে সংযুক্ত করা যেতে পারে। আপনি একটি ক্রয়ের সাথে একটি বিকাশকারী পেলোড প্যারামিটার সংযুক্ত করতে পারেন, কিন্তু শুধুমাত্র যখন ক্রয় স্বীকার করা হয় বা ব্যবহার করা হয়। এটি AIDL-এ ডেভেলপার পেলোডের বিপরীতে, যেখানে ক্রয় প্রবাহ চালু করার সময় পেলোড নির্দিষ্ট করা যেতে পারে। যেহেতু কেনাকাটাগুলি এখন আপনার অ্যাপের বাইরে থেকে শুরু করা যেতে পারে, এই পরিবর্তনটি নিশ্চিত করে যে আপনার কাছে সর্বদা কেনাকাটায় একটি পেলোড যোগ করার সুযোগ রয়েছে৷
নতুন লাইব্রেরিতে পেলোড অ্যাক্সেস করতে, Purchase
বস্তুতে এখন একটি getDeveloperPayload()
পদ্ধতি অন্তর্ভুক্ত রয়েছে।
ধারাবাহিক অফার
আপনি যখন একটি ছাড়যুক্ত SKU অফার করেন, তখন Google Play এখন SKU-এর আসল মূল্য ফেরত দেয় যাতে আপনি ব্যবহারকারীদের দেখাতে পারেন যে তারা একটি ছাড় পাচ্ছেন।
SkuDetails
মূল SKU মূল্য পুনরুদ্ধার করার জন্য দুটি নতুন পদ্ধতি রয়েছে:
-
getOriginalPriceAmountMicros()
- ডিসকাউন্টের আগে SKU-এর বিন্যাসহীন মূল মূল্য ফেরত দেয়। -
getOriginalPrice()
- অতিরিক্ত মুদ্রা বিন্যাস সহ মূল মূল্য প্রদান করে।
মুলতুবি লেনদেন
Google Play বিলিং লাইব্রেরির সংস্করণ 2.0 সহ, আপনাকে অবশ্যই ক্রয় সমর্থন করতে হবে যেখানে এনটাইটেলমেন্ট দেওয়ার আগে অতিরিক্ত পদক্ষেপের প্রয়োজন হয়৷ উদাহরণ স্বরূপ, একজন ব্যবহারকারী নগদ ব্যবহার করে আপনার অ্যাপ-মধ্যস্থ পণ্য একটি ফিজিক্যাল স্টোর থেকে কেনার জন্য বেছে নিতে পারেন। এর মানে হল আপনার অ্যাপের বাইরে লেনদেন সম্পন্ন হয়েছে। এই পরিস্থিতিতে, ব্যবহারকারীর লেনদেন সম্পূর্ণ করার পরেই আপনার এনটাইটেলমেন্ট দেওয়া উচিত।
মুলতুবি কেনাকাটা সক্ষম করতে, আপনার অ্যাপ শুরু করার অংশ হিসাবে enablePendingPurchases()
কল করুন।
ক্রয় অবস্থা PURCHASED
বা PENDING
কিনা তা নির্ধারণ করতে Purchase.getPurchaseState()
ব্যবহার করুন। মনে রাখবেন যে আপনি এনটাইটেলমেন্ট মঞ্জুর করা উচিত শুধুমাত্র যখন রাজ্য PURCHASED
হয়। আপনাকে নিম্নলিখিতগুলি করে Purchase
স্থিতি আপডেটগুলি পরীক্ষা করা উচিত:
- আপনার অ্যাপ শুরু করার সময়, ব্যবহারকারীর সাথে যুক্ত অব্যবহৃত পণ্যের তালিকা পুনরুদ্ধার করতে
BillingClient.queryPurchases()
এ কল করুন। - প্রতিটি ফেরত
Purchase
বস্তুতেPurchase.getPurchaseState()
কল করুন। -
Purchase
বস্তুর পরিবর্তনের প্রতিক্রিয়া জানাতেonPurchasesUpdated()
পদ্ধতিটি প্রয়োগ করুন।
এছাড়াও, Google Play Developer API-এ Purchases.products
এর জন্য একটি PENDING
অবস্থা অন্তর্ভুক্ত রয়েছে। মুলতুবি লেনদেন সাবস্ক্রিপশনের জন্য সমর্থিত নয়।
এই রিলিজটি একটি নতুন রিয়েল-টাইম ডেভেলপার বিজ্ঞপ্তি টাইপ, OneTimeProductNotification
ও প্রবর্তন করে। এই বিজ্ঞপ্তি প্রকারে একটি একক বার্তা রয়েছে যার মান হয় ONE_TIME_PRODUCT_PURCHASED
বা ONE_TIME_PRODUCT_CANCELED
। এই বিজ্ঞপ্তি প্রকারটি শুধুমাত্র বিলম্বিত অর্থপ্রদানের ফর্মগুলির সাথে সম্পর্কিত কেনাকাটার জন্য পাঠানো হয়, যেমন নগদ৷
মুলতুবি কেনাকাটা স্বীকার করার সময়, শুধুমাত্র যখন ক্রয় অবস্থা ক্রয় PURCHASED
হয় এবং PENDING
না হয় তখনই স্বীকার করতে ভুলবেন না।
এপিআই পরিবর্তন
Google Play বিলিং লাইব্রেরির সংস্করণ 2.0-এ নতুন বৈশিষ্ট্য সমর্থন করতে এবং বিদ্যমান কার্যকারিতা স্পষ্ট করতে বেশ কয়েকটি API পরিবর্তন রয়েছে৷
consumeAsync
consumeAsync()
এখন একটি purchaseToken
এর পরিবর্তে একটি ConsumeParams
অবজেক্ট নেয়। ConsumeParams
purchaseToken
পাশাপাশি একটি ঐচ্ছিক বিকাশকারী পেলোড রয়েছে৷
consumeAsync()
এর আগের সংস্করণটি এই রিলিজে সরিয়ে দেওয়া হয়েছে।
queryPurchaseHistoryAsync
বিভ্রান্তি কমাতে, queryPurchaseHistoryAsync()
এখন একটি Purchase
বস্তুর পরিবর্তে একটি PurchaseHistoryRecord
অবজেক্ট প্রদান করে। PurchaseHistoryRecord
অবজেক্টটি একটি Purchase
অবজেক্টের মতোই, এটি শুধুমাত্র queryPurchaseHistoryAsync()
দ্বারা প্রত্যাবর্তিত মানগুলিকে প্রতিফলিত করে এবং এতে autoRenewing
, orderId
, এবং packageName
ক্ষেত্রগুলি থাকে না৷ উল্লেখ্য যে প্রত্যাবর্তিত ডেটার সাথে কিছুই পরিবর্তিত হয়নি— queryPurchaseHistoryAsync()
আগের মতো একই ডেটা প্রদান করে।
BillingResult ফেরত মান
যে APIগুলি পূর্বে একটি BillingResponse
পূর্ণসংখ্যার মান প্রদান করেছিল এখন একটি BillingResult
অবজেক্ট প্রদান করে। BillingResult
BillingResponse
পূর্ণসংখ্যার পাশাপাশি একটি ডিবাগ স্ট্রিং রয়েছে যা আপনি ত্রুটি নির্ণয় করতে ব্যবহার করতে পারেন। ডিবাগ স্ট্রিং একটি en-US লোকেল ব্যবহার করে এবং এটি শেষ ব্যবহারকারীদের দেখানোর জন্য নয়।
বাগ ফিক্স
-
SkuDetails.getIntroductoryPriceAmountMicros()
এখন একটিString
এর পরিবর্তে একটিlong
প্রদান করে।
Google Play বিলিং লাইব্রেরি 1.2.2 রিলিজ (2019-03-07)
Google Play বিলিং লাইব্রেরির সংস্করণ 1.2.2 এখন উপলব্ধ৷ এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
বাগ ফিক্স
- v1.2.1 এ প্রবর্তিত একটি থ্রেডিং সমস্যা সমাধান করা হয়েছে। ব্যাকগ্রাউন্ড কল আর মূল থ্রেড ব্লক করে না।
অন্যান্য পরিবর্তন
- যদিও মূল থ্রেড ব্যবহার করার জন্য এখনও সুপারিশ করা হয়, আপনি এখন একটি ব্যাকগ্রাউন্ড থ্রেড থেকে Google Play বিলিং লাইব্রেরি চালু করতে পারেন।
- ANR হওয়ার সম্ভাবনা কমাতে ইনস্ট্যান্টেশন সম্পূর্ণরূপে পটভূমির থ্রেডে স্থানান্তরিত হয়েছে।
প্লে বিলিং লাইব্রেরি 1.2.1 রিলিজ (2019-03-04)
Google Play বিলিং লাইব্রেরির সংস্করণ 1.2.1 এখন উপলব্ধ৷ এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
প্রধান পরিবর্তন
- পুরস্কৃত পণ্যের জন্য সমর্থন যোগ করা হয়েছে। নগদীকরণ বিকল্প সম্পর্কে আরও তথ্যের জন্য, পুরস্কৃত-পণ্য-নির্দিষ্ট বৈশিষ্ট্য যুক্ত করুন দেখুন।
অন্যান্য পরিবর্তন
- পরীক্ষাকে সহজ করার জন্য
PurchasesResult
এবংSkuDetailsResult
জন্য পাবলিক কনস্ট্রাক্টর যোগ করা হয়েছে। -
SkuDetails
অবজেক্ট একটি নতুন পদ্ধতি ব্যবহার করতে পারে,getOriginalJson()
। - সমস্ত AIDL পরিষেবা কল এখন ব্যাকগ্রাউন্ড থ্রেড দ্বারা পরিচালিত হয়৷
বাগ ফিক্স
- নাল কলব্যাক শ্রোতাদের আর পাবলিক API-এ পাস করা হয় না।
Google Play বিলিং লাইব্রেরি 1.2 রিলিজ (2018-10-18)
Google Play বিলিং লাইব্রেরির সংস্করণ 1.2 এখন উপলব্ধ৷ এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
পরিবর্তনের সারসংক্ষেপ
- Google Play বিলিং লাইব্রেরি এখন Android সফটওয়্যার ডেভেলপমেন্ট কিট লাইসেন্স চুক্তির অধীনে লাইসেন্সপ্রাপ্ত।
-
launchPriceChangeConfirmationFlow
API যোগ করা হয়েছে, যা ব্যবহারকারীদের সাবস্ক্রিপশন মূল্যে একটি মুলতুবি পরিবর্তন পর্যালোচনা করতে অনুরোধ করে। - ব্যবহারকারীর সাবস্ক্রিপশন আপগ্রেড বা ডাউনগ্রেড করার সময় একটি নতুন প্রেশন মোডের জন্য সমর্থন যোগ করা হয়েছে,
DEFERRED
। -
BillingFlowParams
ক্লাসে,setSku()
এর পরিবর্তেsetSkuDetails()
। - ছোটখাট বাগ ফিক্স এবং কোড অপ্টিমাইজেশান।
মূল্য পরিবর্তন নিশ্চিতকরণ
আপনি এখন Google Play Console-এ সাবস্ক্রিপশনের মূল্য পরিবর্তন করতে পারেন এবং ব্যবহারকারীরা যখন আপনার অ্যাপে প্রবেশ করেন তখন তাদের নতুন মূল্য পর্যালোচনা ও গ্রহণ করার জন্য অনুরোধ জানান।
এই API ব্যবহার করতে, সাবস্ক্রিপশন পণ্যের skuDetails
ব্যবহার করে একটি PriceChangeFlowParams
অবজেক্ট তৈরি করুন এবং তারপর launchPriceChangeConfirmationFlow()
কে কল করুন। মূল্য পরিবর্তন নিশ্চিতকরণ প্রবাহ শেষ হলে ফলাফল পরিচালনা করতে PriceChangeConfirmationListener
প্রয়োগ করুন, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:
কোটলিন
val priceChangeFlowParams = PriceChangeFlowParams.newBuilder() .setSkuDetails(skuDetailsOfThePriceChangedSubscription) .build() billingClient.launchPriceChangeConfirmationFlow(activity, priceChangeFlowParams, object : PriceChangeConfirmationListener() { override fun onPriceChangeConfirmationResult(responseCode: Int) { // Handle the result. } })
জাভা
PriceChangeFlowParams priceChangeFlowParams = PriceChangeFlowParams.newBuilder() .setSkuDetails(skuDetailsOfThePriceChangedSubscription) .build(); billingClient.launchPriceChangeConfirmationFlow(activity, priceChangeFlowParams, new PriceChangeConfirmationListener() { @Override public void onPriceChangeConfirmationResult(int responseCode) { // Handle the result. } });
মূল্য পরিবর্তন নিশ্চিতকরণ প্রবাহ নতুন মূল্যের তথ্য সম্বলিত একটি ডায়ালগ প্রদর্শন করে, ব্যবহারকারীদের নতুন মূল্য গ্রহণ করতে বলে। এই প্রবাহটি BillingClient.BillingResponse
ধরনের একটি প্রতিক্রিয়া কোড প্রদান করে।
নতুন প্রেশন মোড
একটি ব্যবহারকারীর সদস্যতা আপগ্রেড বা ডাউনগ্রেড করার সময়, আপনি একটি নতুন প্রেশন মোড ব্যবহার করতে পারেন, DEFERRED
। এই মোড ব্যবহারকারীর সদস্যতা আপডেট করে যখন এটি পরবর্তী পুনর্নবীকরণ হয়। কিভাবে এই প্ররেশন মোড সেট করতে হয় সে সম্পর্কে আরও জানতে, সেট প্রেশন মোড দেখুন।
SKU বিবরণ সেট করার জন্য নতুন পদ্ধতি
BillingFlowParams
ক্লাসে, setSku()
পদ্ধতিটি অবমূল্যায়িত করা হয়েছে। এই পরিবর্তনটি Google Play বিলিং প্রবাহকে অপ্টিমাইজ করতে কাজ করে।
আপনার অ্যাপ-মধ্যস্থ বিলিং ক্লায়েন্টে BillingFlowParams
এর একটি নতুন উদাহরণ তৈরি করার সময়, আমরা সুপারিশ করি যে আপনি JSON অবজেক্টের সাথে সরাসরি setSkuDetails()
ব্যবহার করে কাজ করুন, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:
BillingFlowParams
বিল্ডার ক্লাসে, setSku()
পদ্ধতিটি বাতিল করা হয়েছে। পরিবর্তে, নিম্নলিখিত কোড স্নিপেটে দেখানো হিসাবে setSkuDetails()
পদ্ধতি ব্যবহার করুন। setSkuDetails()
অবজেক্টে পাস করা বস্তুটি querySkuDetailsAsync()
পদ্ধতি থেকে আসে।
কোটলিন
private lateinit var mBillingClient: BillingClient private val mSkuDetailsMap = HashMap<String, SkuDetails>() private fun querySkuDetails() { val skuDetailsParamsBuilder = SkuDetailsParams.newBuilder() mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build() ) { responseCode, skuDetailsList -> if (responseCode == 0) { for (skuDetails in skuDetailsList) { mSkuDetailsMap[skuDetails.sku] = skuDetails } } } } private fun startPurchase(skuId: String) { val billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(mSkuDetailsMap[skuId]) .build() }
জাভা
private BillingClient mBillingClient; private Map<String, SkuDetails> mSkuDetailsMap = new HashMap<>(); private void querySkuDetails() { SkuDetailsParams.Builder skuDetailsParamsBuilder = SkuDetailsParams.newBuilder(); mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build(), new SkuDetailsResponseListener() { @Override public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) { if (responseCode == 0) { for (SkuDetails skuDetails : skuDetailsList) { mSkuDetailsMap.put(skuDetails.getSku(), skuDetails); } } } }); } private void startPurchase(String skuId) { BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(mSkuDetailsMap.get(skuId)) .build(); }
প্লে বিলিং লাইব্রেরি 1.1 রিলিজ (2018-05-07)
Google Play বিলিং লাইব্রেরির সংস্করণ 1.1 এখন উপলব্ধ৷ এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
পরিবর্তনের সারসংক্ষেপ
- একটি বিদ্যমান সাবস্ক্রিপশন আপগ্রেড/ডাউনগ্রেড করার সময়
BillingFlowParams
এ একটি proration মোড নির্দিষ্ট করতে সমর্থন যোগ করা হয়েছে। -
BillingFlowParams
এreplaceSkusProration
বুলিয়ান পতাকা আর সমর্থিত নয়। পরিবর্তেreplaceSkusProrationMode
ব্যবহার করুন। -
launchBillingFlow()
এখন ব্যর্থ প্রতিক্রিয়াগুলির জন্য একটি কলব্যাক ট্রিগার করে।
আচরণ পরিবর্তন
Google Play বিলিং লাইব্রেরির সংস্করণ 1.1-এ নিম্নলিখিত আচরণ পরিবর্তনগুলি রয়েছে৷
বিকাশকারীরা BillingFlowParams
ক্লাসে replaceSkusProrationMode
সেট করতে পারেন
একটি ProrationMode
একটি ব্যবহারকারীর সাবস্ক্রিপশন আপগ্রেড বা ডাউনগ্রেড করার সময় proration এর প্রকার সম্পর্কে আরও বিশদ প্রদান করে।
কোটলিন
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build()
জাভা
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build();
বর্তমানে, Google Play নিম্নলিখিত প্রেশন মোড সমর্থন করে:
IMMEDIATE_WITH_TIME_PRORATION | প্রতিস্থাপন অবিলম্বে কার্যকর হয়, এবং নতুন মেয়াদ শেষ হওয়ার সময় সমানুপাতিক এবং ক্রেডিট করা হবে বা ব্যবহারকারীকে চার্জ করা হবে। এটি বর্তমান ডিফল্ট আচরণ। |
IMMEDIATE_AND_CHARGE_PRORATED_PRICE | প্রতিস্থাপন অবিলম্বে কার্যকর হয়, এবং বিলিং চক্র একই থাকে। অবশিষ্ট সময়ের জন্য মূল্য চার্জ করা হবে. দ্রষ্টব্য : এই বিকল্পটি শুধুমাত্র সাবস্ক্রিপশন আপগ্রেডের জন্য উপলব্ধ। |
IMMEDIATE_WITHOUT_PRORATION | প্রতিস্থাপন অবিলম্বে কার্যকর হয়, এবং নতুন মূল্য পরবর্তী পুনরাবৃত্তির সময় চার্জ করা হবে৷ বিলিং চক্র একই থাকে। |
BillingFlowParams
ক্লাসে replaceSkusProration
আর সমর্থিত নয়
ডেভেলপাররা সাবস্ক্রিপশন আপগ্রেড অনুরোধের জন্য আনুপাতিক পরিমাণ চার্জ করার জন্য একটি বুলিয়ান পতাকা সেট করতে সক্ষম হতেন। প্রদত্ত যে আমরা ProrationMode
সমর্থন করছি, যেটিতে আরো বিস্তারিত proration নির্দেশ রয়েছে, এই বুলিয়ান পতাকা আর সমর্থিত নয়৷
launchBillingFlow()
এখন ব্যর্থ প্রতিক্রিয়াগুলির জন্য একটি কলব্যাক ট্রিগার করে
বিলিং লাইব্রেরি সর্বদা PurhcasesUpdatedListener
কলব্যাক ট্রিগার করবে এবং অ্যাসিঙ্ক্রোনাসভাবে একটি BillingResponse
ফেরত দেবে। BillingResponse
এর সিঙ্ক্রোনাস রিটার্ন মানও রাখা হয়।
বাগ ফিক্স
- যখন পরিষেবা সংযোগ বিচ্ছিন্ন হয় তখন সঠিকভাবে অ্যাসিঙ্ক পদ্ধতিতে প্রথম দিকে প্রস্থান করে।
-
Builder
প্যারাম অবজেক্ট আর বিল্ট অবজেক্টকে পরিবর্তন করে না। - ইস্যু 68087141 :
launchBillingFlow()
এখন ব্যর্থ প্রতিক্রিয়ার জন্য কলব্যাক ট্রিগার করে।
Google Play বিলিং লাইব্রেরি 1.0 রিলিজ (2017-09-19, ঘোষণা )
Google Play বিলিং লাইব্রেরির সংস্করণ 1.0 এখন উপলব্ধ৷ এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
গুরুত্বপূর্ণ পরিবর্তন
- লাইব্রেরির ম্যানিফেস্টের ভিতরে এমবেডেড বিলিং অনুমতি। Android ম্যানিফেস্টের ভিতরে
com.android.vending.BILLING
অনুমতি যোগ করার আর প্রয়োজন নেই। -
BillingClient.Builder
ক্লাসে নতুন নির্মাতা যোগ করা হয়েছে। - এসকিউএসকে জিজ্ঞাসা করার পদ্ধতিগুলিতে ব্যবহার করার জন্য
SkuDetailsParams
ক্লাসের জন্য বিল্ডার প্যাটার্ন প্রবর্তিত। - ধারাবাহিকতার জন্য বেশ কয়েকটি এপিআই পদ্ধতি আপডেট করা হয়েছিল (একই রিটার্ন আর্গুমেন্টের নাম এবং ক্রম)।
আচরণ পরিবর্তন
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ 1.0 এ নিম্নলিখিত আচরণের পরিবর্তনগুলি রয়েছে।
বিলিংক্লিয়েন্ট.বিল্ডার ক্লাস
BillingClient.Builder
এখন নতুন বিল্ডার প্যাটার্নের মাধ্যমে শুরু করা হয়েছে:
কোটলিন
billingClient = BillingClient.newBuilder(context).setListener(this).build()
জাভা
billingClient = BillingClient.newBuilder(context).setListener(this).build();
লঞ্চবিলিংফ্লো পদ্ধতিটি এখন একটি বিলিংফ্লোপ্রামস ক্লাস ব্যবহার করে বলা হয়
কোনও ক্রয় বা সাবস্ক্রিপশনের জন্য বিলিং প্রবাহ শুরু করার জন্য, launchBillingFlow()
পদ্ধতিটি অনুরোধের জন্য নির্দিষ্ট পরামিতিগুলির সাথে শুরু করা একটি BillingFlowParams
উদাহরণ গ্রহণ করে:
কোটলিন
BillingFlowParams.newBuilder().setSku(skuId) .setType(billingType) .setOldSku(oldSku) .build() // Then, use the BillingFlowParams to start the purchase flow val responseCode = billingClient.launchBillingFlow(builder.build())
জাভা
BillingFlowParams.newBuilder().setSku(skuId) .setType(billingType) .setOldSku(oldSku) .build(); // Then, use the BillingFlowParams to start the purchase flow int responseCode = billingClient.launchBillingFlow(builder.build());
উপলভ্য পণ্য জিজ্ঞাসা করার নতুন উপায়
queryPurchaseHistoryAsync()
এবং querySkuDetailsAsync()
পদ্ধতিগুলির জন্য যুক্তিগুলি একটি বিল্ডার প্যাটার্নে আবৃত ছিল:
কোটলিন
val params = SkuDetailsParams.newBuilder() params.setSkusList(skuList) .setType(itemType) billingClient.querySkuDetailsAsync(params.build(), object : SkuDetailsResponseListener() { ... })
জাভা
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder(); params.setSkusList(skuList) .setType(itemType); billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {...})
ফলাফলটি এখন আপনার সুবিধার জন্য পূর্ববর্তী মোড়ক শ্রেণীর পরিবর্তে এবং আমাদের এপিআই জুড়ে সামঞ্জস্যপূর্ণ হওয়ার পরিবর্তে ফলাফল কোড এবং SkuDetails
অবজেক্টগুলির একটি তালিকা দিয়ে ফিরে আসে:
কোটলিন
fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)
জাভা
public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)
onConsumeResponse()
পদ্ধতিতে প্যারামিটার অর্ডার পরিবর্তিত হয়েছে
ConsumeResponseListener
ইন্টারফেস থেকে onConsumeResponse
জন্য যুক্তিগুলির ক্রমটি আমাদের এপিআই জুড়ে সামঞ্জস্যপূর্ণ হতে পরিবর্তিত হয়েছে:
কোটলিন
fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)
জাভা
public void onConsumeResponse(@BillingResponse int responseCode, String outToken)
আবদ্ধ ক্রেতারসাল্ট অবজেক্ট
আমাদের এপিআই জুড়ে সামঞ্জস্যপূর্ণ হওয়ার জন্য PurchaseResult
মুছে ফেলা হয়েছে:
কোটলিন
fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)
জাভা
void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)
বাগ ফিক্স
- ক্রয়_আপডেটেড বান্ডিলটিতে কোনও প্রতিক্রিয়া কোড নেই
- ডিভাইস ঘূর্ণনের সময় প্রক্সিবিলিং্যাকটিভিটি এবং ক্রয়সআপডেটেডলিস্টনার ইস্যুগুলি ঠিক করুন
বিকাশকারী পূর্বরূপ 1 প্রকাশ (2017-06-12, ঘোষণা )
বিকাশকারী পূর্বরূপ চালু করা হয়েছিল, যখন বিলিংয়ের ক্ষেত্রে এটি বিকাশের প্রক্রিয়াটি সহজ করার লক্ষ্যে বিকাশকারীদের অ্যান্ড্রয়েড অ্যাপ্লিকেশন যেমন অ্যাপ্লিকেশন আর্কিটেকচার এবং নেভিগেশন কাঠামোর মতো নির্দিষ্ট যুক্তি প্রয়োগের ক্ষেত্রে তাদের প্রচেষ্টা ফোকাস করার অনুমতি দেয়।
গুগল প্লে বিলিং এপিআইয়ের সাথে আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলিকে সংহত করার সময় লাইব্রেরিতে আপনার ব্যবহারের জন্য বেশ কয়েকটি সুবিধাজনক ক্লাস এবং বৈশিষ্ট্য অন্তর্ভুক্ত রয়েছে। লাইব্রেরিটি অ্যান্ড্রয়েড ইন্টারফেস সংজ্ঞা ভাষা (এইডএল) পরিষেবার শীর্ষে একটি বিমূর্ত স্তরও সরবরাহ করে, বিকাশকারীদের অ্যাপ্লিকেশন এবং গুগল প্লে বিলিং এপিআইয়ের মধ্যে ইন্টারফেসটি সংজ্ঞায়িত করা সহজ করে তোলে।