Google Play Faturalandırma eklentisi, Unity'nin uygulama içi satın alma işlemleri için yerleşik hizmetlerini ve öğelerini (Unity IAP) genişleterek oyununuza Google Play Faturalandırma Kitaplığı'nın en yeni özelliklerinin tümünü sunar. Bu kılavuzda, projenizi eklentiyi kullanacak şekilde nasıl ayarlayacağınız açıklanmaktadır. Bu kılavuzda, Google Play Faturalandırma Kitaplığı özelliklerinin Unity'de oyununuza nasıl uygulanacağı da açıklanmaktadır.
Google Play Faturalandırma eklentisini ayarlama
Eklentiyi ayarlamak için aşağıdaki bağlantılı bölümlerin her birindeki adımları tamamlayın:
- Unity IAP soyutlama katmanını etkinleştirin.
- Eklentiyi indirip içe aktarın.
- Eklentinin derleme ayarlarını yapılandırın.
- Eklentiyi etkinleştirin.
Unity IAP soyutlama katmanını etkinleştirme
Google Play Faturalandırma eklentisi, Unity IAP ile birlikte sağlanan bir soyutlama katmanı üzerine kuruludur. Bu nedenle, eklentiyi indirip içe aktarmadan önce bu soyutlama katmanını etkinleştirmeniz gerekir. Unity IAP soyutlama katmanını etkinleştirmek için aşağıdakileri yapın:
- Aşağıdaki Unity eğitimindeki tüm adımları tamamlayın: Unity Hizmetleri için projenizi ayarlama.
- Aşağıdaki Unity eğitimindeki tüm adımları tamamlayın: Unity IAP hizmetini etkinleştirme.
Eklentiyi indirip içe aktarma
Eklenti, .unitypackage
biçiminde bir Unity paketi olarak gönderilir. Eklentiyi indirip içe aktarmak için aşağıdaki adımları uygulayın:
- Unity'ye özel Google Play eklentilerinin en son sürümünü, deponun GitHub'daki sürümler sayfasından indirin.
Unity menü çubuğundan Öğeler > Paket İçe Aktar > Özel Paket'i tıklayın.
.unitypackage
dosyasını indirdiğiniz yeri bulun ve dosyayı seçin.Unity Paketini İçe Aktar iletişim kutusunda tüm öğeleri seçili bırakın ve İçe Aktar'ı tıklayın.
Paket içe aktarıldıktan sonra projenizin öğelerine GooglePlayPlugins adlı yeni bir klasör (Öğeler klasörünün kökünde) eklenir. Bu klasör, eklentiye ait tüm Google Play Faturalandırma Kitaplığı öğelerini içerir.
Derleme ayarlarını yapılandırma
Eklenti, Unity IAP'yi genişlettiğinden Unity, Unity IAP'deki bazı eski ve çakışan bağımlılıklar derlemeden kaldırılmadığı sürece anlaşmazlıklarla karşılaşır ve Android APK oluşturamaz. Bu eklenti, çakışan kitaplıkları projenizden kaldırmanın otomatik bir yolunu sunar. Bu çakışmalarla ilgili olarak aşağıdaki adımları uygulayın:
Unity menü çubuğundan Google > Play Faturalandırma > Derleme Ayarları'nı seçin.
Play Faturalandırma Derleme Ayarları penceresinde Düzelt'i tıklayın. Bu işlem, çakışmayı çözer ve çakışan Unity IAP dosyalarını bir yedek dizine taşır. Düzelt'i tıkladıktan sonra düğme Geri yükle olarak değişir. Bu düğmeyi tıklayarak çakışan orijinal dosyaları geri yükleyebilirsiniz.
Eklentiyi etkinleştirme
Eklentiyi etkinleştirmek için Unity IAP'nin Google Play uygulamasını Google Play Faturalandırma eklentisiyle değiştirin. Örneğin, Unity IAP Satın Alma Komut Dosyası'nı kullanırken IAP oluşturucuya iletilen StandardPurchaseModule
değerini Google.Play.Billing.GooglePlayStoreModule
olarak değiştirirsiniz:
// Create a builder using the GooglePlayStoreModule.
var configurationBuilder =
ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());
Oyununuz birden fazla platform için aynı Satın Alma Komut Dosyası'nı kullanıyorsa Unity'nin diğer platformlar için kendi IAP çözümünü kullanmaya devam etmesini sağlamak amacıyla bir platform kontrolü eklemeniz gerekir:
ConfigurationBuilder builder;
if (Application.platform == RuntimePlatform.Android)
{
builder = ConfigurationBuilder.Instance(
Google.Play.Billing.GooglePlayStoreModule.Instance());
}
else
{
builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
}
Oyununuzu Google Play Store dışındaki diğer Android uygulama mağazalarında yayınlarsanız varsayılan Unity IAP uygulamasını yalnızca Google Play Store'u seçtiğinizde değiştirmeniz gerekir:
ConfigurationBuilder builder;
if (Application.platform == RuntimePlatform.Android
&& SelectedAndoidAppStore == AppStore.GooglePlay)
{
builder = ConfigurationBuilder.Instance(
Google.Play.Billing.GooglePlayStoreModule.Instance());
}
else
{
builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
}
Oyununuza Google Play Faturalandırma Kitaplığı özelliklerini uygulama
Google Play Faturalandırma eklentisi, Unity IAP hizmetlerini genişletir. Böylece, ortak satın alma iş akışlarını yönetmek için aynı Unity API'lerini kullanabilirsiniz. Google Play Faturalandırma Kitaplığı ile Unity'nin diğer uygulama mağazaları için standart IAP uygulaması arasındaki farklılıklar nedeniyle API davranışında bazı küçük değişiklikler olduğunu unutmayın. Unity IAP API'lerini kullanmaya yeni başladıysanız temel satın alma akışlarının nasıl uygulanacağına dair örnek için Unity IAP eğitimindeki "Satın Alma Komut Dosyası Oluşturma" bölümüne bakın.
Google Play Faturalandırma Kitaplığı, Google Play Store'a özgü bazı özellikler de içerir. Bu özelliklere genişletilmiş bir arayüz üzerinden erişebilirsiniz. Bu bölümün geri kalanında, bu benzersiz Google Play Faturalandırma Kitaplığı özelliklerinin oyununuza nasıl uygulanacağı açıklanmaktadır.
Ertelenen satın alımları etkinleştirme
Google Play, kullanıcıların satın alma işlemi oluşturup daha sonra mağazada nakit kullanarak tamamlayabileceği ertelenen satın alma işlemlerini (beklemedeki işlemler veya beklemedeki satın alma işlemleri olarak da bilinir) destekler.
Ertelenen satın alma işlemlerini etkinleştirmek için EnableDeferredPurchase()
yöntemini çağırarak modülünüzün yapılandırmasını değiştirmek üzere UİSA oluşturucunuzu kullanın:
// Create a builder using a GooglePlayStoreModule.
var configurationBuilder =
ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());
// Enable deferred purchases
configurationBuilder.Configure<Google.Play.Billing.IGooglePlayConfiguration>()
.EnableDeferredPurchase();
Ardından, Play Store uzantılarını kullanarak ertelenen satın alma işlemleri geri çağırma işlevi uygulayın:
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
// Set the deferred purchases callback.
_playStoreExtensions.SetDeferredPurchaseListener(
delegate(Product product)
{
// Do not grant the item here. Instead, record the purchase and remind
// the user to complete the transaction in the Play Store.
});
Kod karartılmış hesap kimliklerini Google Play'e iletme
Kötüye kullanım tespitini kolaylaştırmak için (ör. kısa süre içinde aynı hesaptan çok sayıda cihazla satın alma işlemi yapılıp yapılmadığını tespit etmek) karartılmış kullanıcı hesabı kimliklerini Google Play'e iletebilirsiniz.
Kodu karartılmış bir hesap kimliği iletmek için uzantılar API'sinden SetObfuscatedAccountId()
yöntemini çağırın:
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
// Pass an obfuscated account ID.
_playStoreExtensions.SetObfuscatedAccountId(obfuscatedAccountId);
Kod karartılmış profil kimliklerini Google Play'e iletme
Sahtekarlığı tespit etmeyi kolaylaştırmak için (ör. kısa süre içinde aynı hesaptan çok sayıda cihazla satın alma işlemi yapılıp yapılmadığını tespit etmek) Google Play'e karartılmış bir profil kimliği iletebilirsiniz. Bu, gizlenmiş bir kullanıcı hesabı kimliği göndermeye benzer. Her iki durumda da kimlik tek bir kullanıcıyı temsil eder ancak profil kimliği, tek bir kullanıcının tek bir uygulamadaki birden fazla profilini benzersiz bir şekilde tanımlamanıza olanak tanır. Google Play'e karartılmış bir profil kimliği gönderdikten sonra bu kimliği daha sonra bir satın alma makbuzundan alabilirsiniz.
Kodu karartılmış bir profil kimliği iletmek için SetObfuscatedProfileId()
yöntemini çağırarak modülünüzün yapılandırmasını değiştirmek üzere IAP derleyicinizi kullanın:
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
// Pass an obfuscated profile ID.
_playStoreExtensions.SetObfuscatedProfileId(obfuscatedProfileId);
Abonelikler için fiyat değişikliklerini onaylama
Google Play, etkin bir aboneliğin fiyatını değiştirmenize olanak tanır. Oyununuzdaki kullanıcıların, fiyat değişikliğinin geçerli olabilmesi için değişikliği onaylaması gerekir. Kullanıcılardan aboneliklerindeki fiyat değişikliğini onaylamalarını istemek için ConfirmSubscriptionPriceChange()
yöntemini çağırın:
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
_playStoreExtensions.ConfirmSubscriptionPriceChange(productId,
delegate (bool success)
{
// Returns whether the user has accepted the new price or not.
});
Unity API davranışında yapılan değişiklikler
Google Play Faturalandırma eklentisini kullandığınızda API'lerin çoğu, Unity'nin diğer uygulama mağazaları için standart IAP uygulamasıyla aynı şekilde çalışır. Ancak API'lerin farklı davranacağı bazı durumlar vardır. Bu bölümde, bu davranış farklılıkları açıklanmaktadır.
Geliştirici yükü desteklenmiyor
Google Play, geliştirici yükü için desteği sonlandırdı ve bu özelliği daha anlamlı ve bağlama uygun alternatiflerle değiştiriyor. Bu nedenle geliştirici yükü desteklenmez. Alternatifler hakkında daha fazla bilgi için Geliştirici yükü ile ilgili sayfaya bakın.
IStoreController
dahil olmak üzere diğer uygulama mağazaları için Unity'nin standart uygulama içi satın alma özelliği tarafından tanımlanan aynı arayüzleri kullanmaya devam edebilirsiniz. Bir satın alma işlemi başlattığınızda IStoreController
'ü kullanmaya ve InitiatePurchase()
yöntemini çağırmaya devam edebilirsiniz:
public void InitiatePurchase(Purchasing.Product product, string payload);
Ancak ilettiğiniz yük geçerli olmaz (nihai makbuzda görünmez).
SubscriptionManager desteklenmiyor
Unity IAP, abonelikleri yönetmek için SubscriptionManager
sınıfını sağlar. Unity'nin bu sınıfın standart IAP uygulaması geliştirici yükü kullandığından bu sınıf desteklenmez. Bu sınıfı oluşturmaya devam edebilirsiniz ancak sınıfın alıcı yöntemlerinden herhangi birini kullanırken güvenilir olmayan veriler alabilirsiniz.
UpdateSubscription API'sinde küçük değişiklikler yapıldı
Google Play Faturalandırma eklentisi, aboneliklerinizi yükseltmek ve düşürmek için SubscriptionManager.UpdateSubscription()
ve SubscriptionManager.UpdateSubscriptionInGooglePlayStore()
yöntemlerinin kullanılmasını desteklemez. Oyununuz bu yöntemleri çağırırsa bir GooglePlayStoreUnsupportedException
atılır.
Google Play Faturalandırma Kitaplığı, bu yöntemlerin yerine kullanılacak alternatif bir API sağlar. Bir aboneliği yükseltmek veya düşürmek için oranlama modunu kullanarak UpdateSubscription()
yöntemini çağırın:
void UpdateSubscription(Product oldProduct, Product newProduct,
GooglePlayStoreProrationMode prorationMode = GooglePlayStoreProrationMode.Unknown);
Bu yöntem çağrısını, GooglePlayStoreUnsupportedException
yakalandığında bir platform kontrolü veya yakalama bloğuyla sarabilirsiniz.
Oranlama modunun nasıl kullanılacağına dair daha fazla bilgi ve örnekler için Oranlama modunu ayarlama başlıklı makaleyi inceleyin.