Unity SDK'da flow'lara veri aktarma
Özel etiket, uygulamanızdan gelen bir değere sahip özel bir değişkendir. Bir değişkenin ayarlarında Value comes from outside the app seçeneğini belirledikten sonra, uygulamanız bu değeri Adapty SDK aracılığıyla ayarlayabilir. Örneğin, bir metin öğesi “Coins:” ifadesini ve bir özel etiket içeriyorsa, uygulamanız etiket için “120” değerini aktardığında kullanıcılar “Coins: 120” görür.
Başlamadan önce
Adapty SDK v4 veya daha yenisine ihtiyacınız var. v4’ten önceki sürümler flow’ları görüntülemez.
Flow’a özel etiketler ekleyin
Uygulamanızın değerlerini bir flow’da göstermek için builder’da özel etiketler oluşturun:
-
Uygulamanızın ilettiği her değer için özel bir etiket oluşturun.
-
Her etiketin grubu dahil tam adını not edin. Uygulamanızın kodu her değeri bu ad altında iletir. Örneğin,
usergrubu içindestreakadlı bir etiket varsa, etiketin tam adıuser.streakolur.
Özel etiket değerlerini iletme
Uygulamanızın değerlerini, bir AdaptyUICreateFlowViewParameters nesnesinin SetCustomTags metoduna, Dictionary<string, string> gibi string’ten string’e bir sözlük olarak iletin ve o nesneyle birlikte AdaptyUI.CreateFlowView metodunu çağırın:
- Her anahtar,
user.streakgibi özel etiketin tam adıdır. - Her değer, kullanıcıların etiket yerine gördüğü string’tir.
- Her değer, “1250.0” değil “1,250” gibi okunabilir olmalıdır. Adapty bu değeri biçimlendirmez veya çevirmez.
SDK, değerleri yalnızca view oluşturulduğunda bir kez okur; bu nedenle flow açıkken değişmezler.
var parameters = new AdaptyUICreateFlowViewParameters()
.SetCustomTags(new Dictionary<string, string> {
{ "username", "DragonSlayer42" },
{ "coins", "1,250" }
});
AdaptyUI.CreateFlowView(flow, parameters, (view, error) => {
if (error != null) {
// handle the error
return;
}
// present the view
});
Özel etiketlerinizi test etmek için, değerlerini ayarlayan kodu ekledikten sonra uygulamanızda flow’u açın. Builder canvas ve cihazlarda önizleme yalnızca Başlangıç değerlerini gösterir: Adapty mobil uygulaması özel etiket değerlerini ayarlamaz.
Uygulamanız eski Paywall Builder paywallları için zaten özel etiket değerleri ayarlıyorsa, flow’lardaki özel etiketlerin nasıl farklılaştığını inceleyin.
Kullanıcılar değer olmadığında ne görür
Kullanıcılar, aşağıdaki durumlarda özel etiketin Başlangıç değerini yedek olarak görür:
- Uygulamanız etikete herhangi bir değer geçmez.
- Kullanıcı, değeri geçen sürüme uygulamayı güncellememiştir.
- Uygulama kodunuzdaki ad, büyük/küçük harf dahil etiketin tam adıyla eşleşmez.
- Aynı metin öğesindeki başka bir özel etiketin değeri yoktur. Bu durumda o metin öğesindeki tüm özel etiketler Başlangıç değerini gösterir.
Etiketin yerine hiçbir şey göstermek için boş bir dize geçin. Adapty boş dizeyi bir değer olarak kabul eder; dolayısıyla yedek değer görünmez.
Örnek: onboarding yanıtlarından VKİ gösterme
Bir flow kullanıcılardan yanıtlar toplayabilir; özel bir tag ise uygulamanızdaki bir değeri gösterebilir. Kullanıcılara, uygulamanızın yanıtlarından hesapladığı bir skoru, önerilen bir planı veya bir sağlık metriğini göstermek için ikisini birleştirebilirsiniz:
- Bir flow yanıtları toplar ve uygulamanıza gönderir.
- Uygulamanız sonucu hesaplar.
- Uygulamanız sonucu bir sonraki flow’a özel tag değeri olarak iletir.
Bu örnekte bir onboarding flow’u kullanıcının kilosunu ve boyunu toplar. Kullanıcı onboarding flow’unu son ekranından kapattığında uygulamanız vücut kitle indeksini (VKİ) hesaplar. Ardından VKİ’yi gösteren bir paywall flow’u açar.
Flow’ları ayarlayın
-
İki flow oluşturun: kullanıcının kilosunu ve boyunu toplayan bir onboarding flow’u ve BMI’sini gösteren bir paywall flow’u.
-
Onboarding flow’una iki Number (Sayı) girişi ekleyin:
- Kilogram cinsinden ağırlık için Element ID
weightolan bir girişi. - Santimetre cinsinden boy için Element ID
heightolan bir girişi.
Her iki girişin Format ayarını da Integer olarak belirleyin. Bir girişi, kullanıcının yazdığı gibi değerini metin olarak gönderir; örnek kod “70.5” ile “70,5” değerlerini aynı şekilde okumaz. Tam sayılarda ondalık ayraç olmadığından kod, bunları her yerel ayarda aynı şekilde okur.
- Kilogram cinsinden ağırlık için Element ID
-
Uygulamanızın her iki değeri de aldığından emin olmak için onboarding flow’unu hiç girişi olmayan bir ekranla bitirin. O ekrana Close flow eylemi olan bir düğme ekleyin. Girişler, odağı kaybettiklerinde veya kullanıcı başka bir ekrana geçtiğinde değerlerini gönderir. Close flow eylemi bunları göndermez. Örnek kod, yalnızca kullanıcı son ekrana ulaştıysa paywall’ı açar.
-
Paywall flow’unda
bmiadında bir özel etiket oluşturun. Initial value alanına bir tire (—) girin. Uygulamanız BMI değeri iletmezse kullanıcılar bu tireyi görür. -
Paywall flow’una “Your BMI:” yazan bir metin öğesi ekleyin. Bu kelimelerin ardından
bmiözel etiketini ekleyin. -
Onboarding flow’unu
onboardinggibi bir placement’a ekleyin. Paywall flow’unu isebmi_paywallID’sine sahip bir placement’a ekleyin. Pass the BMI to the paywall bölümündeki kod, paywall’ı bu ID ile çeker.
BMI’yi paywall’a iletme
Onboarding flow’unun flow_user_input event’lerinden kullanıcının ağırlık ve boyunu toplayın; bunun nasıl yapıldığını Flow’lardan veri işleme bölümünde bulabilirsiniz. Kullanıcının son ekrana ulaştığını anlamak için is_last_screen değeri true olarak ayarlanmış bir flow_screen_showed event’ini izleyin; bununla ilgili ayrıntılar Flow ekran görüntülemelerini takip etme bölümündedir. Kullanıcı bu ekrandan sonra onboarding flow’unu kapattığında BMI’yi hesaplayın. Ardından paywall’ın view’ını oluşturun ve bmi özel etiketi için BMI değerini iletin.
Adapty.SetFlowsEventsListener ile kaydettiğiniz listener üzerinde aşağıdaki metodları uygulayın. FlowViewDidDisappear yalnızca uygulamanız onboarding flow’unu kapattıktan sonra tetiklenir; bu nedenle listener, Flow ve paywall’ları kapatma bölümünde açıklandığı gibi Close flow eylemini de işlemelidir:
private readonly Dictionary<string, string> bodyAnswers = new Dictionary<string, string>();
private bool reachedLastScreen;
public void FlowViewDidReceiveAnalyticEvent(
AdaptyUIFlowView view,
string name,
IReadOnlyDictionary<string, object> parameters
) {
if (name == "flow_screen_showed") {
if (parameters.TryGetValue("is_last_screen", out var lastScreen)
&& lastScreen is bool isLast && isLast) {
reachedLastScreen = true;
}
return;
}
if (name != "flow_user_input") return;
if (!parameters.TryGetValue("value", out var raw) || !(raw is string value)) return;
if (!parameters.TryGetValue("element_id", out var idRaw) || !(idRaw is string elementId)) return;
bodyAnswers[elementId] = value;
}
public void FlowViewDidDisappear(AdaptyUIFlowView view) {
// The listener receives events from every flow. Reset `bodyAnswers` and
// `reachedLastScreen` whenever a flow disappears, so that the paywall
// doesn't open again when the user closes it.
var answers = new Dictionary<string, string>(bodyAnswers);
var finished = reachedLastScreen;
bodyAnswers.Clear();
reachedLastScreen = false;
// Number inputs send their values as strings.
if (!finished) return;
if (!answers.TryGetValue("weight", out var weightText)
|| !double.TryParse(weightText, out var weight)) return;
if (!answers.TryGetValue("height", out var heightText)
|| !double.TryParse(heightText, out var height)
|| height <= 0) return;
var heightInMeters = height / 100;
var bmi = weight / (heightInMeters * heightInMeters);
ShowBmiPaywall(bmi.ToString("0.0"));
}
private void ShowBmiPaywall(string bmi) {
Adapty.GetFlow("bmi_paywall", (flow, flowError) => {
if (flowError != null) {
// handle the error
return;
}
var parameters = new AdaptyUICreateFlowViewParameters()
.SetCustomTags(new Dictionary<string, string> { { "bmi", bmi } });
AdaptyUI.CreateFlowView(flow, parameters, (view, viewError) => {
if (viewError != null) {
// handle the error
return;
}
view.Present((presentError) => {
if (presentError != null) {
// handle the error
}
});
});
});
}
ToString("0.0") geçerli kültürün ondalık ayracını kullanır: İngilizce’de “22.7”, Almanca’da “22,7”.
BMI’yi kullanıcı profiline kaydetme
Kullanıcılara BMI’lerine göre farklı flow’lar göstermek için bunu profillerinin özel özelliği olarak kaydedin. Adapty Kontrol Paneli’nde bmi anahtarıyla bir Number özel özelliği oluşturun. Ardından her flow’u bu özellikten oluşturulan bir kitleye göre gösterin.
FlowViewDidDisappear içinde, bmi’yi hesaplayan satırın hemen ardından Adapty.UpdateProfile metodunu çağırın. Bir segmentin BMI’yi bir eşik değeriyle karşılaştırabilmesi için biçimlendirilmiş string’i değil, double değerini geçin:
var parameters = new AdaptyProfileParameters.Builder()
.SetCustomDoubleAttribute("bmi", bmi)
.Build();
Adapty.UpdateProfile(parameters, (error) => {
if (error != null) {
// handle the error
}
});