Adapty Unity SDK'yı v3.3'e Geçirme
Adapty SDK 3.3.0, bazı iyileştirmeler getiren büyük bir sürümdür; ancak bu iyileştirmeler sizin tarafınızdan bazı geçiş adımları gerektirebilir.
- Adapty SDK v3.3.x sürümüne yükseltin.
- Adapty SDK’nın Adapty ve AdaptyUI modüllerindeki birden fazla sınıf, özellik ve yöntem yeniden adlandırıldı.
- Artık
SetLogLevelyöntemi bir callback’i argüman olarak kabul etmektedir. - Artık
PresentCodeRedemptionSheetyöntemi bir callback’i argüman olarak kabul etmektedir. - Paywall görünümünün oluşturulma şeklini değiştirin.
GetProductsIntroductoryOfferEligibilityyöntemini kaldırın.- Yedek paywallları
Assets/StreamingAssets/dizininde ayrı dosyalara (platform başına bir tane) kaydedin ve dosya adlarınıSetFallbackPaywallsyöntemine iletin. - Satın alma işlemini güncelleyin.
- Paywall Builder olaylarının işlenmesini güncelleyin.
- Paywall Builder paywall hatalarının işlenmesini güncelleyin.
- Adjust, Amplitude, AppMetrica, Appsflyer, Branch, Firebase ve Google Analytics, Mixpanel, OneSignal, Pushwoosh için entegrasyon yapılandırmalarını güncelleyin.
- Observer modu uygulamasını güncelleyin.
- Unity eklentisi başlatmasını açık bir
Activateçağrısıyla güncelleyin.
Adapty Unity SDK’yı 3.3.x Sürümüne Yükseltin
Bu sürüme kadar Adapty SDK, uygulamanızda Adapty’nin düzgün çalışması için zorunlu olan temel SDK’ydi; AdaptyUI SDK ise yalnızca Adapty Paywall Builder kullanıyorsanız gerekli hale gelen isteğe bağlı bir SDK’ydı.
3.3.0 sürümüyle birlikte AdaptyUI SDK kullanımdan kaldırılmış ve AdaptyUI, Adapty SDK’ya bir modül olarak dahil edilmiştir. Bu değişiklikler nedeniyle AdaptyUI SDK’yı kaldırıp AdaptySDK’yı yeniden yüklemeniz gerekmektedir.
- AdaptySDK ve AdaptyUISDK paket bağımlılıklarını projenizden kaldırın.
- AdaptySDK ve AdaptyUISDK klasörlerini silin.
- AdaptySDK paketini Unity için Adapty SDK kurulumu ve yapılandırması sayfasında açıklandığı gibi yeniden içe aktarın.
Yeniden Adlandırmalar
-
Adapty modülünde yeniden adlandır:
Eski sürüm Yeni sürüm Adapty.sdkVersion Adapty.SDKVersion Adapty.LogLevel AdaptyLogLevel Adapty.Paywall AdaptyPaywall Adapty.PaywallFetchPolicy AdaptyPaywallFetchPolicy PaywallProduct AdaptyPaywallProduct Adapty.Profile AdaptyProfile Adapty.ProfileParameters AdaptyProfileParameters ProfileGender AdaptyProfileGender Error AdaptyError -
AdaptyUI modülünde yeniden adlandırmalar:
Eski versiyon Yeni versiyon CreatePaywallView CreateView PresentPaywallView PresentView DismissPaywallView DismissView AdaptyUI.View AdaptyUIView AdaptyUI.Action AdaptyUIUserAction
SetLogLevel Metodunu Güncelleme
Artık SetLogLevel metodu bir callback kabul etmektedir.
- Adapty.SetLogLevel(Adapty.LogLevel.Verbose);
+ Adapty.SetLogLevel(Adapty.LogLevel.Verbose, null); // or you can pass the callback to handle the possible error
PresentCodeRedemptionSheet Metodunu Güncelleme
Artık PresentCodeRedemptionSheet metodu bir callback kabul etmektedir.
- Adapty.PresentCodeRedemptionSheet();
+ Adapty.PresentCodeRedemptionSheet(null); // or you can pass the callback to handle the possible error
Paywall Görünümünün Oluşturulma Şeklini Değiştirme
Tam kod örneği için Paywall Builder ile tasarlanan paywall’ın görünüm yapılandırmasını getirme bölümüne bakın.
+ var parameters = new AdaptyUICreateViewParameters()
+ .SetPreloadProducts(true);
- AdaptyUI.CreatePaywallView(
+ AdaptyUI.CreateView(
paywall,
- preloadProducts: true,
+ parameters,
(view, error) => {
// use the view
});
GetProductsIntroductoryOfferEligibility Metodunu Kaldırma
Adapty iOS SDK 3.3.0 öncesinde, ürün nesnesi kullanıcının uygun olup olmadığından bağımsız olarak her zaman teklifleri içeriyordu. Teklifi kullanmadan önce uygunluğu manuel olarak kontrol etmeniz gerekiyordu.
Artık ürün nesnesi yalnızca kullanıcı uygunsa teklif içermektedir. Bu sayede uygunluğu ayrıca kontrol etmenize gerek kalmaz; bir teklif mevcutsa kullanıcı zaten uygundur.
Yedek paywall sağlama yöntemi güncellendi
Bu sürüme kadar yedek paywall’lar serileştirilmiş JSON olarak iletiliyordu. v 3.3.0 itibarıyla mekanizma değişti:
- Yedek paywall’ları
/Assets/StreamingAssets/dizinindeki dosyalara kaydedin; Android için bir dosya, iOS için ayrı bir dosya. - Dosya adlarını
SetFallbackPaywallsmetoduna geçirin.
Kodunuz şu şekilde değişecek:
using AdaptySDK;
void SetFallBackPaywalls() {
+ #if UNITY_IOS
+ var assetId = "adapty_fallback_ios.json";
+ #elif UNITY_ANDROID
+ var assetId = "adapty_fallback_android.json";
+ #else
+ var assetId = "";
+ #endif
- Adapty.SetFallbackPaywalls("FALLBACK_PAYWALLS_JSON_STRING", (error) => {
+ Adapty.SetFallbackPaywalls(assetId, (error) => {
// handle the error
});
}
Son kod örneğini Unity’de yedek paywall kullanımı sayfasında inceleyebilirsiniz.
Satın alma güncelleme
Daha önce iptal edilen ve beklemedeki satın almalar hata olarak değerlendirilir ve sırasıyla PaymentCancelled ve PendingPurchase kodlarını döndürürdü.
Artık iptal edilen, başarılı ve beklemedeki satın almaları işlemek için yeni bir AdaptyPurchaseResultType sınıfı kullanılıyor. Satın alma kodunu aşağıdaki şekilde güncelleyin:
using AdaptySDK;
void MakePurchase(AdaptyPaywallProduct product) {
- Adapty.MakePurchase(product, (profile, error) => {
- // handle successfull purchase
+ Adapty.MakePurchase(product, (result, error) => {
+ switch (result.Type) {
+ case AdaptyPurchaseResultType.Pending:
+ // handle pending purchase
+ break;
+ case AdaptyPurchaseResultType.UserCancelled:
+ // handle purchase cancellation
+ break;
+ case AdaptyPurchaseResultType.Success:
+ var profile = result.Profile;
+ // handle successful purchase
+ break;
+ default:
+ break;
}
});
}
Lütfen çevirmek istediğiniz MDX belgesini paylaşın.
Paywall Builder olaylarının işlenmesini güncelleme
İptal edilen ve bekleyen satın almalar artık hata olarak değerlendirilmiyor; tüm bu durumlar PaywallViewDidFinishPurchase metodu ile işleniyor.
-
İptal edilen satın alma olayının işlenmesini silin.
-
Başarılı satın alma olayının işlenmesini aşağıdaki şekilde güncelleyin:
- public void OnFinishPurchase(
- AdaptyUI.View view,
- Adapty.PaywallProduct product,
- Adapty.Profile profile
- ) { }
+ public void PaywallViewDidFinishPurchase(
+ AdaptyUIView view,
+ AdaptyPaywallProduct product,
+ AdaptyPurchaseResult purchasedResult
+ ) { }
-
Aksiyon işlemeyi güncelleyin:
- public void OnPerformAction( - AdaptyUI.View view, - AdaptyUI.Action action - ) { + public void PaywallViewDidPerformAction( + AdaptyUIView view, + AdaptyUIUserAction action + ) { switch (action.Type) { - case AdaptyUI.ActionType.Close: + case AdaptyUIUserActionType.Close: view.Dismiss(null); break; - case AdaptyUI.ActionType.OpenUrl: + case AdaptyUIUserActionType.OpenUrl: var urlString = action.Value; if (urlString != null { Application.OpenURL(urlString); } default: // handle other events break; } } -
Başlatılan satın alma işleminin yönetimini güncelleyin:
- public void OnSelectProduct( - AdaptyUI.View view, - Adapty.PaywallProduct product - ) { } + public void PaywallViewDidSelectProduct( + AdaptyUIView view, + string productId + ) { } -
Başarısız satın alma işleminin yönetimini güncelleyin:
- public void OnFailPurchase(
- AdaptyUI.View view,
- Adapty.PaywallProduct product,
- Adapty.Error error
- ) { }
+ public void PaywallViewDidFailPurchase(
+ AdaptyUIView view,
+ AdaptyPaywallProduct product,
+ AdaptyError error
+ ) { }
- Başarılı geri yükleme olayının işlenmesini güncelleyin: Check out the final code example in the Handle paywall events page.
Paywall Builder paywall hatalarının işlenmesini güncelleyin
Hata işleme yöntemi de değiştirildi; lütfen aşağıdaki rehbere göre kodunuzu güncelleyin.
-
Ürün yükleme hatalarının işlenmesini güncelleyin:
- public void OnFailLoadingProducts( - AdaptyUI.View view, - Adapty.Error error - ) { } + public void PaywallViewDidFailLoadingProducts( + AdaptyUIView view, + AdaptyError error + ) { } -
Render hatalarının işlenmesini güncelleyin:
- public void OnFailRendering( - AdaptyUI.View view, - Adapty.Error error - ) { } + public void PaywallViewDidFailRendering( + AdaptyUIView view, + AdaptyError error + ) { }
Üçüncü Taraf Entegrasyon SDK Yapılandırmasını Güncelleme
Adapty Unity SDK 3.3.0’dan itibaren updateAttribution metodunun genel API’si güncellendi. Daha önce [AnyHashable: Any] sözlüğü kabul ediyordu ve attribution nesnelerini çeşitli servislerden doğrudan geçirmenize olanak tanıyordu. Artık [String: any Sendable] gerektirmektedir, bu nedenle attribution nesnelerini geçirmeden önce dönüştürmeniz gerekecektir.
Aşağıdaki entegrasyonların Adapty Unity SDK 3.3.0 ve sonrasıyla düzgün çalışmasını sağlamak için SDK yapılandırmalarınızı aşağıdaki bölümlerde açıklandığı şekilde güncelleyin.
Adjust
Mobil uygulama kodunuzu aşağıdaki gibi güncelleyin. Tam kod örneği için Adjust entegrasyonu için SDK yapılandırması sayfasına bakın.
- using static AdaptySDK.Adapty;
using AdaptySDK;
Adjust.GetAdid((adid) => {
- Adjust.GetAttribution((attribution) => {
- Dictionary<String, object> data = new Dictionary<String, object>();
-
- data["network"] = attribution.Network;
- data["campaign"] = attribution.Campaign;
- data["adgroup"] = attribution.Adgroup;
- data["creative"] = attribution.Creative;
-
- String attributionString = JsonUtility.ToJson(data);
- Adapty.UpdateAttribution(attributionString, AttributionSource.Adjust, adid, (error) => {
- // handle the error
- });
+ if (adid != null) {
+ Adapty.SetIntegrationIdentifier(
+ "adjust_device_id",
+ adid,
+ (error) => {
+ // handle the error
+ });
}
});
Adjust.GetAttribution((attribution) => {
Dictionary<String, object> data = new Dictionary<String, object>();
data["network"] = attribution.Network;
data["campaign"] = attribution.Campaign;
data["adgroup"] = attribution.Adgroup;
data["creative"] = attribution.Creative;
String attributionString = JsonUtility.ToJson(data);
- Adapty.UpdateAttribution(attributionString, AttributionSource.Adjust, adid, (error) => {
+ Adapty.UpdateAttribution(attributionString, "adjust", (error) => {
// handle the error
});
});
Amplitude
Mobil uygulama kodunuzu aşağıda gösterildiği gibi güncelleyin. Tam kod örneği için Amplitude entegrasyonu için SDK yapılandırması sayfasına bakın.
using AdaptySDK;
- var builder = new Adapty.ProfileParameters.Builder();
- builder.SetAmplitudeUserId("YOUR_AMPLITUDE_USER_ID");
- builder.SetAmplitudeDeviceId(amplitude.getDeviceId());
- Adapty.UpdateProfile(builder.Build(), (error) => {
- // handle error
- });
+ Adapty.SetIntegrationIdentifier(
+ "amplitude_user_id",
+ "YOUR_AMPLITUDE_USER_ID",
+ (error) => {
+ // handle the error
+ });
+ Adapty.SetIntegrationIdentifier(
+ "amplitude_device_id",
+ amplitude.getDeviceId(),
+ (error) => {
+ // handle the error
+ });
AppMetrica
Aşağıda gösterildiği gibi mobil uygulama kodunuzu güncelleyin. Tam kod örneği için AppMetrica entegrasyonu için SDK yapılandırması sayfasına bakın.
using AdaptySDK;
- var deviceId = AppMetrica.GetDeviceId();
- if (deviceId != null {
- var builder = new Adapty.ProfileParameters.Builder();
- builder.SetAppmetricaProfileId("YOUR_ADAPTY_CUSTOMER_USER_ID");
- builder.SetAppmetricaDeviceId(deviceId);
- Adapty.UpdateProfile(builder.Build(), (error) => {
- // handle error
- });
- }
+ var deviceId = AppMetrica.GetDeviceId();
+ if (deviceId != null {
+ Adapty.SetIntegrationIdentifier(
+ "appmetrica_device_id",
+ deviceId,
+ (error) => {
+ // handle the error
+ });
+
+ Adapty.SetIntegrationIdentifier(
+ "appmetrica_profile_id",
+ "YOUR_ADAPTY_CUSTOMER_USER_ID",
+ (error) => {
+ // handle the error
+ });
+ }
AppsFlyer
Mobil uygulama kodunuzu aşağıda gösterildiği şekilde güncelleyin. Tam kod örneği için AppsFlyer entegrasyonunda SDK yapılandırması bölümüne bakın.
using AppsFlyerSDK;
using AdaptySDK;
// before SDK initialization
AppsFlyer.getConversionData(this.name);
// in your IAppsFlyerConversionData
void onConversionDataSuccess(string conversionData) {
// It's important to include the network user ID
- string appsFlyerId = AppsFlyer.getAppsFlyerId();
- Adapty.UpdateAttribution(conversionData, AttributionSource.Appsflyer, appsFlyerId, (error) => {
+ string appsFlyerId = AppsFlyer.getAppsFlyerId();
+
+ Adapty.SetIntegrationIdentifier(
+ "appsflyer_id",
+ appsFlyerId,
+ (error) => {
// handle the error
});
+
+ Adapty.UpdateAttribution(
+ conversionData,
+ "appsflyer",
+ (error) => {
+ // handle the error
+ });
}
Branch
Mobil uygulama kodunuzu aşağıda gösterildiği gibi güncelleyin. Tam kod örneği için Branch entegrasyonu için SDK yapılandırmasına göz atın.
using AdaptySDK;
- class YourBranchImplementation {
- func initializeBranch() {
- Branch.getInstance().initSession(launchOptions: launchOptions) { (data, error) in
- if let data {
- Adapty.updateAttribution(data, source: .branch)
- }
- }
- }
- }
+ Branch.initSession(delegate(Dictionary<string, object> parameters, string error) {
+ string attributionString = JsonUtility.ToJson(parameters);
+
+ Adapty.UpdateAttribution(
+ attributionString,
+ "branch",
+ (error) => {
+ // handle the error
+ });
+ });
Firebase ve Google Analytics
Mobil uygulama kodunuzu aşağıda gösterildiği gibi güncelleyin. Tam kod örneği için Firebase ve Google Analytics entegrasyonu için SDK yapılandırması sayfasına bakın.
// We suppose FirebaseAnalytics Unity Plugin is already installed
using AdaptySDK;
Firebase.Analytics
.FirebaseAnalytics
.GetAnalyticsInstanceIdAsync()
.ContinueWithOnMainThread((task) => {
if (!task.IsCompletedSuccessfully) {
// handle error
return;
}
var firebaseId = task.Result
var builder = new Adapty.ProfileParameters.Builder();
- builder.SetFirebaseAppInstanceId(firebaseId);
-
- Adapty.UpdateProfile(builder.Build(), (error) => {
- // handle error
+ Adapty.SetIntegrationIdentifier(
+ "firebase_app_instance_id",
+ firebaseId,
+ (error) => {
+ // handle the error
});
});
Mixpanel
Mobil uygulama kodunuzu aşağıda gösterildiği gibi güncelleyin. Tam kod örneği için Mixpanel entegrasyonu için SDK yapılandırması bölümüne bakın.
using AdaptySDK;
- var builder = new Adapty.ProfileParameters.Builder();
- builder.SetMixpanelUserId(Mixpanel.DistinctId);
- Adapty.UpdateProfile(builder.Build(), (error) => {
- // handle error
- });
+ var distinctId = Mixpanel.DistinctId;
+ if (distinctId != null) {
+ Adapty.SetIntegrationIdentifier(
+ "mixpanel_user_id",
+ distinctId,
+ (error) => {
+ // handle the error
+ });
+ }
OneSignal
Mobil uygulama kodunuzu aşağıda gösterildiği gibi güncelleyin. Tam kod örneği için OneSignal entegrasyonu için SDK yapılandırması sayfasına bakın.
using AdaptySDK;
- using OneSignalSDK;
- var pushUserId = OneSignal.Default.PushSubscriptionState.userId;
- var builder = new Adapty.ProfileParameters.Builder();
- builder.SetOneSignalPlayerId(pushUserId);
- Adapty.UpdateProfile(builder.Build(), (error) => {
- // handle error
- });
+ var distinctId = Mixpanel.DistinctId;
+ if (distinctId != null) {
+ Adapty.SetIntegrationIdentifier(
+ "mixpanel_user_id",
+ distinctId,
+ (error) => {
+ // handle the error
+ });
+ }
Pushwoosh
Mobil uygulama kodunuzu aşağıdaki şekilde güncelleyin. Tam kod örneği için Pushwoosh entegrasyonu için SDK yapılandırması sayfasına bakın.
using AdaptySDK;
- var builder = new Adapty.ProfileParameters.Builder();
- builder.SetPushwooshHWID(Pushwoosh.Instance.HWID);
- Adapty.UpdateProfile(builder.Build(), (error) => {
- // handle error
- });
+ Adapty.SetIntegrationIdentifier(
+ "pushwoosh_hwid",
+ Pushwoosh.Instance.HWID,
+ (error) => {
+ // handle the error
+ });
Observer mode uygulamasını güncelleyin
Paywall’ları işlemlere bağlama şeklinizi güncelleyin. Daha önce variationId atamak için setVariationId metodunu kullanıyordunuz. Artık yeni reportTransaction metoduyla işlemi kaydederken variationId’yi doğrudan dahil edebilirsiniz. Son kod örneğine Observer modunda paywall’ları satın alma işlemleriyle ilişkilendirme sayfasından bakabilirsiniz.
// every time when calling transaction.finish()
- Adapty.SetVariationForTransaction("<variationId>", "<transactionId>", (error) => {
- if(error != null) {
- // handle the error
- return;
- }
-
- // successful binding
- });
+ Adapty.ReportTransaction(
+ "YOUR_TRANSACTION_ID",
+ "PAYWALL_VARIATION_ID", // optional
+ (error) => {
+ // handle the error
+ });
Unity Eklenti Başlatmasını Güncelleme
Adapty Unity SDK 3.3.0’dan itibaren, eklenti başlatılırken Activate metodunun açıkça çağrılması zorunludur:
Adapty.Activate(builder.Build(), (error) => {
if (error != null) {
// handle the error
return;
}
});