Harici fırsatlar programı için uygulama içi entegrasyon kılavuzu

Bu kılavuzda, harici teklifleri desteklemek için API'lerle nasıl entegrasyon sağlanacağı açıklanmaktadır. uygun uygulama ve bölgelerde kullanabilirsiniz. Harici teklif programı hakkında daha fazla bilgi edinin. ve coğrafi kapsam dahil olmak üzere program şartlarına tabidir.

Play Faturalandırma Kitaplığı kurulumu

Harici teklif API'lerini kullanmak için: Play Faturalandırma Kitaplığı bağımlılığının 6.2.1 veya sonraki bir sürümünü ekleyin bağlayın. Önceki bir sürümden taşıma işlemi gerçekleştirmeniz gerekiyorsa kullanmayı denemeden önce taşıma rehberindeki talimatları hariç tutmanızı öneririz.

Google Play'e bağlanın

Entegrasyon sürecindeki ilk adımlar aşağıda açıklananlarla aynıdır: faturalandırma entegrasyon kılavuzunu kullanarak BillingClient cihazınız başlatılıyor:

  • Harici harici reklam kullanmak istediğinizi belirtmek için yeni bir yöntem çağırmanız gerekir teklifler: enableExternalOffer.

Aşağıdaki örnekte, bu yapılandırmalarla bir BillingClient'nin ilk kullanıma hazırlanması gösterilmektedir değişiklikler:

Kotlin

var billingClient = BillingClient.newBuilder(context)
  .enableExternalOffer()
  .build()

Java

private BillingClient billingClient = BillingClient.newBuilder(context)
    .enableExternalOffer()
    .build();

BillingClient uygulamasını başlattıktan sonra, şurayla bağlantı kurmanız gerekir: Google Play'i etkinleştirin.

Müsaitlik durumunu kontrol edin

Uygulamanız, harici tekliflerin kullanılabilir olduğunu telefon ederek onaylamalıdır isExternalOfferAvailableAsync.

Harici teklifler varsa bu API, BillingResponseCode.OK değerini döndürür. Uygulamanızın nasıl olması gerektiğiyle ilgili ayrıntılar için yanıt işleme bölümüne bakın diğer yanıt kodlarına yanıt verebilirsiniz.

Kotlin


billingClient.isExternalOfferAvailableAsync(
  object : ExternalOfferAvailabilityListener {
    override fun onExternalOfferAvailabilityResponse(
      billingResult: BillingResult) {
        if (billingResult.responseCode !=  BillingResponseCode.OK) {
            // Handle failures such as retrying due to network errors,
            // handling external offers unavailable, etc.
            return
        }

        // External offers are available. Continue with steps in the
        // guide.
})

Java


billingClient.isExternalOfferAvailableAsync(
  new ExternalOfferAvailabilityListener() {
    @Override
    public void onExternalOfferAvailabilityResponse(
      BillingResult billingResult) {
        if (billingResult.getResponseCode() != BillingResponseCode.OK) {
            // Handle failures such as retrying due to network errors,
            // handling external offers being unavailable, etc.
            return;
        }
        // External offers are available. Continue with steps in the
        // guide.
      }

});

Harici işlem jetonu hazırlama

Harici bir işlemi Google Play'e bildirmek için harici bir işleminiz olması gerekir Play Faturalandırma Kitaplığı'ndan oluşturulan işlem jetonu. Yeni bir harici işlem jetonu, kullanıcı harici bir web sitesini her ziyaret ettiğinde oluşturulmalıdır web sitesini ziyaret edin. Bu işlem, createExternalOfferReportingDetailsAsync API. Bu jeton, Kullanıcı uygulamanın dışına yönlendirilmeden hemen önce oluşturulur. Uygulama hiçbir zaman önbelleğe alınmaz ve kullanıcı her yönlendirildiğinde yeni bir tane oluşturulmalıdır. pek çok olanağı vardır.

Kotlin


billingClient.createExternalOfferReportingDetailsAsync(
  object : ExternalOfferReportingDetailsListener {
    override fun onExternalOfferReportingDetailsResponse(
      billingResult: BillingResult,
      externalOfferReportingDetails: ExternalOfferReportingDetails?) {
        if (billingResult.responseCode !=  BillingResponseCode.OK) {
            // Handle failures such as retrying due to network errors.
            return
        }
        val externalTransactionToken =
            externalOfferReportingDetails?.externalTransactionToken
        // Persist the transaction token locally. Pass it to the external
        // website when showExternalOfferInformationDialog is called.
    }
})

Java


billingClient.createExternalOfferReportingDetailsAsync(
  new ExternalOfferReportingDetailsListener() {
    @Override
    public void onExternalOfferReportingDetailsResponse(
      BillingResult billingResult,
      @Nullable ExternalOfferReportingDetails
        externalOfferReportingDetails) {
        if (billingResult.getResponseCode() != BillingResponseCode.OK) {
            // Handle failures such as retrying due to network errors.
            return;
        }

        String transactionToken =
          externalOfferReportingDetails.getExternalTransactionToken();

        // Persist the external transaction token locally. Pass it to the
        // external website when showExternalOfferInformationDialog is
        // called.
      }
});

Kullanıcılar için bilgi iletişim kutusu

Harici tekliflerle entegrasyon için uygun uygulamanızda bir bilgi gösterilmelidir Bu ekran, kullanıcıların dışarı yönlendirilmek üzere olduklarını anlamalarını sağlar. harici bir web sitesine gönderebiliriz. Bilgi ekranı, kullanıcılara birshowExternalOfferInformationDialog her seferinde harici teklife denk geliyor.

Kotlin


// An activity reference from which the external offers information dialog
// will be launched.
val activity : Activity = ...;

val listener : ExternalOfferInformationDialogListener =
  ExternalOfferInformationDialogListener {
      override fun onExternalOfferInformationDialogResponse(
        billingResult: BillingResult){
        // Check billingResult
    }
}

val billingResult = billingClient.showExternalOfferInformationDialog(
  activity, listener)

Java


// An activity reference from which the external offers information dialog
// will be launched.
Activity activity = ...;

ExternalOfferInformationDialogListener listener =
  new ExternalOfferInformationDialogListener() {
    @Override
    public void onExternalOfferInformationDialogResponse(
      BillingResult billingResult) {
        if (billingResult.responseCode !=  BillingResponseCode.OK) {
          // Handle failures such as retrying due to network errors.
        }
        // Open the external website, passing along the external transaction
        // token as a URL parameter. If the user purchases an item, be sure
        // to report the transaction to Google Play.
      }
}

BillingResult billingResult =
  billingClient.showExternalOfferInformationDialog(activity, listener);

Bu yöntem BillingResponseCode.OK döndürürse uygulamanız Kullanıcıyı harici web sitesine yönlendirmek. Yöntem, BillingResponseCode.USER_CANCELED, uygulamanız web sitesi.

İşlemleri Google Play'e bildirme

Tüm harici işlemler Google Play'e bildirilmelidir. Google Play Geliştirici API'sini çağırarak erişebilirsiniz. Harici işlemler Aynı zamanda externalTransactionToken, createExternalOfferReportingDetailsAsync API. Bir kullanıcı birden fazla kullanıyorsanız, yine aynı Her satın alma işlemini bildirmek için externalTransactionToken. Bir işlemi için arka uç entegrasyon kılavuzuna bakın.

Yanıt işleme

Bir hata oluştuğunda isExternalOfferAvailableAsync, createExternalOfferReportingDetailsAsync ve showExternalOfferInformationDialog, şundan farklı yanıtlar döndürebilir: BillingResponseCode.OK. Bu yanıt kodlarını aşağıdaki şekilde ele alabilirsiniz:

  • ERROR: Bu dahili bir hatadır. İşleme devam etmeyin veya Harici web sitesini açma. Şu numarayı arayarak tekrar deneyin: Bilgileri görüntülemek için showExternalOfferInformationDialog() tekrar denediğinizde kullanıcıya gösterilen iletişim kutusunu uygulamasını indirin.
  • FEATURE_NOT_SUPPORTED: Harici teklif API'leri şu kuruluş tarafından desteklenmiyor: Play Store'a gidin. İşleme devam etmeyin veya Harici web sitesini açma.
  • USER_CANCELED: Harici web sitesini açma işlemine devam etmeyin. Telefonla arama Bilgileri göstermek için showExternalOfferInformationDialog() tekrar yönlendirme girişiminde bulunduğunuzda kullanıcıya iletişim kutusunu görebilirsiniz.
  • BILLING_UNAVAILABLE: İşlem harici teklifler için uygun değil bu nedenle bu programa katılmamanız gerekir. Bunun nedeni, Kullanıcı bu program için uygun bir ülkede değildir veya hesabınız Programa başarıyla kaydettirilmedi. İkincisiyse kontrol edin. kayıt durumunuz hakkında bilgi edinin.
  • DEVELOPER_ERROR: İstekle ilgili bir hata var. Hata ayıklama mesajını kullanma inceleyin.
  • NETWORK_ERROR, SERVICE_DISCONNECTED, SERVICE_UNAVAILABLE: Bunlar uygun bir yeniden deneme politikasıyla ele alınması gereken geçici hatalar içerir. SERVICE_DISCONNECTED durumunda, Google Play'e bakın.

Harici teklifleri test etme

Lisans test kullanıcıları, harici teklif entegrasyonunuzu test etmek için kullanılmalıdır. Siz Lisans test kullanıcısı tarafından başlatılan işlemler için faturalandırılmayacaktır. hesaplar. Daha fazla bilgi için Uygulama içi faturalandırmayı uygulama lisanslama ile test etme başlıklı makaleye bakın. lisans test kullanıcılarını yapılandırma hakkında bilgi edinin.

Sonraki adımlar

Uygulama içi entegrasyonu tamamladıktan sonra, uygulamanızı arka uç.