React Native SDK'da remote config paywall'ları için paywall'ları ve ürünleri getirme
Remote config ve özel paywall’ları sergilemeden önce, onlar hakkındaki bilgileri getirmeniz gerekir. Lütfen bu konunun remote config ve özel paywall’lara atıfta bulunduğunu unutmayın. Flow Builder veya Paywall Builder’da özelleştirilen flow’ları veya paywall’ları getirmeyle ilgili yönergeler için Flow Builder flow’larını ve Paywall Builder paywall’larını ve yapılandırmalarını getirme bölümüne başvurun.
Adapty SDK’nın bir mobil uygulamaya nasıl entegre edildiğini gerçek bir örnekle görmek ister misiniz? Tam kurulumu, paywall’ların gösterimini, satın alma işlemlerini ve diğer temel işlevleri içeren örnek uygulamalarımıza göz atın.
Mobil uygulamanızda flow’ları ve ürünleri getirmeye başlamadan önce (genişletmek için tıklayın)
-
Adapty Kontrol Paneli’nde ürünlerinizi oluşturun.
-
Adapty Kontrol Paneli’nde bir flow veya paywall oluşturun ve ürünleri ona dahil edin.
-
Adapty Kontrol Paneli’nde placement’lar oluşturun ve flow’unuzu veya paywall’ınızı placement’a dahil edin.
-
Mobil uygulamanızda Adapty SDK’yı yükleyin.
Flow bilgilerini getirme
Adapty’de bir ürün, hem App Store hem de Google Play’deki ürünlerin bir kombinasyonu olarak işlev görür. Bu platformlar arası ürünler flow’lara ve paywall’lara entegre edilir; böylece onları belirli mobil uygulama placement’larında sergileyebilirsiniz.
Ürünleri görüntülemek için, getFlow metoduyla placement’larınızdan birinden bir AdaptyFlow almanız gerekir.
Ürün ID’lerini koda gömmeyin (hardcode). Koda gömmeniz gereken tek ID, placement ID’sidir. Flow’lar uzaktan yapılandırılır, bu yüzden ürünlerin sayısı ve mevcut teklifler her an değişebilir. Uygulamanız bu değişiklikleri dinamik olarak yönetmelidir—bir flow bugün iki, yarın üç ürün döndürürse, kod değişikliği olmadan hepsini gösterin.
try {
const id = 'YOUR_PLACEMENT_ID';
const flow = await adapty.getFlow(id);
// the requested flow
} catch (error) {
// handle the error
}
| Parametre | Zorunlu | Açıklama |
|---|---|---|
| placementId | gerekli | Placement’ın tanımlayıcısı. Bu, Adapty Kontrol Paneli’nizde bir placement oluştururken belirttiğiniz değerdir. |
| fetchPolicy | varsayılan: .reloadRevalidatingCacheData | Varsayılan olarak SDK, verileri sunucudan yüklemeye çalışır ve başarısızlık durumunda önbelleğe alınmış verileri döndürür. Bu varyantı öneririz çünkü kullanıcılarınızın her zaman en güncel verileri almasını sağlar. Ancak kullanıcılarınızın istikrarsız internetle uğraştığını düşünüyorsanız, önbelleğe alınmış veriler varsa onları döndürmek için Uygulamayı yeniden başlattığınızda önbelleğin bozulmadan kaldığını ve yalnızca uygulama yeniden yüklendiğinde veya manuel temizlik yoluyla temizlendiğini unutmayın. Adapty SDK, flow’ları ve paywall’ları iki katmanda saklar: yukarıda açıklanan düzenli olarak güncellenen önbellek ve yedek paywall’lar . Ayrıca flow’ları ve paywall’ları daha hızlı getirmek için CDN’i ve CDN erişilemez olduğunda bağımsız bir yedek sunucuyu kullanırız. Bu sistem, internet bağlantısının zayıf olduğu durumlarda bile güvenilirliği sağlarken her zaman flow’larınızın en son sürümünü almanızı garanti etmek için tasarlanmıştır. |
| loadTimeoutMs | varsayılan: 5 sn | Bu değer, bu metodun zaman aşımını sınırlar. Zaman aşımına ulaşılırsa, önbelleğe alınmış veriler veya yerel yedek döndürülür. Nadir durumlarda bu metodun, işlem alt katmanda farklı isteklerden oluşabileceği için |
v4’te getFlow artık locale parametresi almaz. Özel paywall’lar için, mevcut tüm locale’ler flow’un remote config’inde (flow.remoteConfigs) döndürülür—kullanıcının cihazına veya uygulama ayarına uyanı seçin.
Ürün ID’lerini koda gömmeyin (hardcode)! Flow’lar uzaktan yapılandırıldığından, mevcut ürünler, ürün sayısı ve özel teklifler (ücretsiz denemeler gibi) zaman içinde değişebilir. Kodunuzun bu senaryoları yönettiğinden emin olun. Örneğin, başlangıçta 2 ürün getirirseniz, uygulamanız bu 2 ürünü göstermelidir. Ancak daha sonra 3 ürün getirirseniz, uygulamanız herhangi bir kod değişikliği gerektirmeden 3’ünü de göstermelidir. Koda gömmeniz gereken tek şey placement ID’sidir.
Yanıt parametreleri:
| Parametre | Açıklama |
|---|---|
| Flow | Placement’ı, tanımlayıcıları (id, variationId), adı, paywall varyasyonlarını (paywalls) ve bir remoteConfigs dizisini (yapılandırılmış her locale için bir girdi) içeren bir AdaptyFlow nesnesi. Flow için ürünleri getirmek üzere getPaywallProducts(flow) çağırın. |
Ürünleri getirme
Flow’a sahip olduğunuzda, ona karşılık gelen ürün dizisini sorgulayabilirsiniz:
try {
// ...flow
const products = await adapty.getPaywallProducts(flow);
// the requested products list
} catch (error) {
// handle the error
}Yanıt parametreleri:
| Parametre | Açıklama |
|---|---|
| Products | Ürün tanımlayıcısı, ürün adı, fiyat, para birimi, abonelik süresi ve diğer birkaç özelliği içeren AdaptyPaywallProduct nesnelerinin listesi. |
Kendi paywall tasarımınızı uygularken AdaptyPaywallProduct nesnesindeki bu özelliklere erişmeniz gerekecektir. Aşağıda en sık kullanılan özellikler gösterilmektedir; mevcut tüm özellikler için bağlantılı belgeye başvurun.
| Özellik | Açıklama |
|---|---|
| Title | Ürünün başlığını görüntülemek için product.localizedTitle kullanın. Yerelleştirmenin, cihazın locale’inden ziyade kullanıcıların seçtiği mağaza ülkesine dayandığını unutmayın. |
| Price | Fiyatın yerelleştirilmiş bir sürümünü görüntülemek için product.price?.localizedString kullanın. Bu yerelleştirme, cihazın locale bilgisine dayanır. Fiyata product.price?.amount kullanarak bir sayı olarak da erişebilirsiniz. Değer yerel para biriminde sağlanır. İlgili para birimi sembolünü almak için product.price?.currencySymbol kullanın. |
| Subscription Period | Süreyi (örneğin hafta, ay, yıl vb.) görüntülemek için product.subscription?.localizedSubscriptionPeriod kullanın. Bu yerelleştirme, cihazın locale’ine dayanır. Abonelik süresini programatik olarak getirmek için product.subscription?.subscriptionPeriod kullanın. Oradan, uzunluğu almak için unit özelliğine erişebilirsiniz (yani ‘day’, ‘week’, ‘month’, ‘year’ veya ‘unknown’). numberOfUnits değeri size süre birimi sayısını verir. Örneğin, üç aylık bir abonelik için, unit özelliğinde 'month' ve numberOfUnits özelliğinde 3 görürsünüz. |
| Introductory Offer | Bir aboneliğin başlangıç teklifi içerdiğini gösteren bir rozet veya başka bir gösterge görüntülemek için, product.subscription?.offer?.phases özelliğine göz atın. Bu, en fazla iki indirim aşaması içerebilen bir listedir: ücretsiz deneme aşaması ve başlangıç fiyatı aşaması. Her aşama nesnesinde şu yararlı özellikler bulunur:• paymentMode: 'free_trial', 'pay_as_you_go', 'pay_up_front' ve 'unknown' değerlerine sahip bir dize. Ücretsiz denemeler 'free_trial' türünde olur.• price: Bir sayı olarak indirimli fiyat. Ücretsiz denemeler için burada 0 arayın.• localizedNumberOfPeriods: Teklifin uzunluğunu açıklayan, cihazın locale’i kullanılarak yerelleştirilmiş bir dize. Örneğin, üç günlük bir deneme teklifi bu alanda '3 days' gösterir.• subscriptionPeriod: Alternatif olarak, teklif döneminin ayrıntılarını bu özellikle ayrı ayrı alabilirsiniz. Teklifler için önceki bölümde açıklandığı şekilde çalışır.• localizedSubscriptionPeriod: Kullanıcının locale’i için biçimlendirilmiş bir indirim abonelik süresi. |
Varsayılan kitle flow’uyla flow getirmeyi hızlandırma
Genellikle flow’lar neredeyse anında getirilir, bu yüzden bu süreci hızlandırma konusunda endişelenmenize gerek yoktur. Ancak çok sayıda kitleniz ve placement’ınız olduğu ve kullanıcılarınızın zayıf internet bağlantısı olduğu durumlarda, bir flow’u getirmek istediğinizden daha uzun sürebilir. Bu tür durumlarda, hiçbir şey göstermemek yerine sorunsuz bir kullanıcı deneyimi sağlamak için varsayılan bir flow görüntülemek isteyebilirsiniz.
Bunu çözmek için, belirtilen placement’ın flow’unu All Users kitlesi için getiren getFlowForDefaultAudience metodunu kullanabilirsiniz. Ancak, önerilen yaklaşımın yukarıdaki Flow bilgilerini getirme bölümünde ayrıntılı olarak açıklandığı gibi flow’u getFlow metoduyla getirmek olduğunu anlamak çok önemlidir.
getFlow kullanmanızı neden öneriyoruz
getFlowForDefaultAudience metodu birkaç önemli dezavantajla birlikte gelir:
- Olası geriye dönük uyumluluk sorunları: Farklı uygulama sürümleri (mevcut ve gelecekteki) için farklı flow’lar göstermeniz gerekiyorsa, zorluklarla karşılaşabilirsiniz. Ya mevcut (eski) sürümü destekleyen flow’lar tasarlamanız ya da mevcut (eski) sürüme sahip kullanıcıların render edilmemiş flow’larla sorun yaşayabileceğini kabul etmeniz gerekir.
- Hedefleme kaybı: Tüm kullanıcılar All Users kitlesi için tasarlanmış aynı flow’u görür; bu da kişiselleştirilmiş hedeflemeyi kaybettiğiniz anlamına gelir (ülkelere, pazarlama attribution’ına veya kendi özel niteliklerinize dayalı olanlar dahil).
Daha hızlı flow getirmeden yararlanmak için bu dezavantajları kabul etmeye istekliyseniz, getFlowForDefaultAudience metodunu aşağıdaki gibi kullanın. Aksi takdirde, yukarıda açıklanan getFlow’a bağlı kalın.
try {
const id = 'YOUR_PLACEMENT_ID';
const flow = await adapty.getFlowForDefaultAudience(id);
// the requested flow
} catch (error) {
// handle the error
}
| Parametre | Zorunlu | Açıklama |
|---|---|---|
| placementId | gerekli | Placement’ın tanımlayıcısı. Bu, Adapty Kontrol Paneli’nizde bir placement oluştururken belirttiğiniz değerdir. |
| fetchPolicy | varsayılan: .reloadRevalidatingCacheData | Varsayılan olarak SDK, verileri sunucudan yüklemeye çalışır ve başarısızlık durumunda önbelleğe alınmış verileri döndürür. Bu varyantı öneririz çünkü kullanıcılarınızın her zaman en güncel verileri almasını sağlar. Ancak kullanıcılarınızın istikrarsız internetle uğraştığını düşünüyorsanız, önbelleğe alınmış veriler varsa onları döndürmek için Uygulamayı yeniden başlattığınızda önbelleğin bozulmadan kaldığını ve yalnızca uygulama yeniden yüklendiğinde veya manuel temizlik yoluyla temizlendiğini unutmayın. |
Remote config ve özel paywall’ları sergilemeden önce, onlar hakkındaki bilgileri getirmeniz gerekir. Lütfen bu konunun remote config ve özel paywall’lara atıfta bulunduğunu unutmayın. Paywall Builder ile özelleştirilen paywall’lar için paywall getirmeyle ilgili yönergeler için Paywall Builder paywall’larını ve yapılandırmalarını getirme bölümüne başvurun.
Adapty SDK’nın bir mobil uygulamaya nasıl entegre edildiğini gerçek bir örnekle görmek ister misiniz? Tam kurulumu, paywall’ların gösterimini, satın alma işlemlerini ve diğer temel işlevleri içeren örnek uygulamalarımıza göz atın.
Mobil uygulamanızda paywall’ları ve ürünleri getirmeye başlamadan önce (genişletmek için tıklayın)
-
Adapty Kontrol Paneli’nde ürünlerinizi oluşturun.
-
Adapty Kontrol Paneli’nde bir paywall oluşturun ve ürünleri paywall’ınıza dahil edin.
-
Adapty Kontrol Paneli’nde placement’lar oluşturun ve paywall’ınızı placement’a dahil edin.
-
Mobil uygulamanızda Adapty SDK’yı yükleyin.
Paywall bilgilerini çekme
Adapty’de bir ürün, App Store ve Google Play’deki ürünlerin bir kombinasyonudur. Bu çapraz platform ürünler paywallara entegre edilerek belirli mobil uygulama placement’larında gösterilmesini sağlar.
Ürünleri görüntüleyebilmek için getPaywall metoduyla placement’larınızdan birinden bir Paywall almanız gerekir.
Ürün ID’lerini doğrudan koda yazmayın. Doğrudan koda yazmanız gereken tek ID, placement ID’sidir. Paywalllar uzaktan yapılandırıldığından ürün sayısı ve mevcut teklifler her an değişebilir. Uygulamanız bu değişiklikleri dinamik olarak yönetmelidir; bugün iki ürün döndüren bir paywall yarın üç ürün döndürüyorsa, kod değişikliği yapmadan hepsini göstermelisiniz.
try {
const id = 'YOUR_PLACEMENT_ID';
const locale = 'en';
const paywall = await adapty.getPaywall(id, locale);
// the requested paywall
} catch (error) {
// handle the error
}
| Parametre | Zorunluluk | Açıklama |
|---|---|---|
| placementId | zorunlu | Placement’ın tanımlayıcısı. Adapty Kontrol Paneli’nde placement oluştururken belirttiğiniz değerdir. |
| locale | isteğe bağlı varsayılan: | Paywall yerelleştirmesinin tanımlayıcısı. Bu parametre, eksi (-) karakteriyle ayrılmış bir veya daha fazla alt etiket içeren bir dil kodu olmalıdır. İlk alt etiket dil, ikincisi bölge içindir. Örnek: Yerel kod hakkında daha fazla bilgi için Yerelleştirmeler ve yerel kodlar sayfasına bakın. |
| fetchPolicy | varsayılan: .reloadRevalidatingCacheData | SDK varsayılan olarak sunucudan veri yüklemeye çalışır ve başarısız olursa önbelleğe alınmış veriyi döndürür. Kullanıcılarınızın her zaman en güncel verilere erişmesini sağladığı için bu seçeneği öneriyoruz. Ancak kullanıcılarınızın kararsız bir internet bağlantısıyla uğraştığını düşünüyorsanız, önbelleğe alınmış veri mevcutsa onu döndürmek için Önbelleğin uygulama yeniden başlatıldığında bozulmadan kaldığını ve yalnızca uygulama yeniden yüklendiğinde veya manuel temizlik yapıldığında temizlendiğini unutmayın. Adapty SDK, paywallları iki katmanda saklar: yukarıda açıklanan düzenli güncellenen önbellek ve yedek paywalllar. Paywallları daha hızlı çekmek için CDN ve CDN’e ulaşılamadığında bağımsız bir yedek sunucu da kullanıyoruz. Bu sistem, internet bağlantısının yetersiz olduğu durumlarda bile güvenilirliği sağlarken her zaman en güncel paywall sürümünü almanızı garantilemek için tasarlanmıştır. |
| loadTimeoutMs | varsayılan: 5 sn | Bu değer, metodun zaman aşımını sınırlar. Zaman aşımına ulaşılırsa önbelleğe alınmış veri veya yerel yedek döndürülür. Nadir durumlarda bu metodun |
Ürün ID’lerini doğrudan koda yazmayın! Paywalllar uzaktan yapılandırıldığından mevcut ürünler, ürün sayısı ve özel teklifler (ücretsiz deneme gibi) zaman içinde değişebilir. Kodunuzun bu senaryoları yönettiğinden emin olun.
Örneğin, başlangıçta 2 ürün alıyorsanız uygulamanız o 2 ürünü göstermelidir. Ancak daha sonra 3 ürün alırsanız uygulamanız herhangi bir kod değişikliği gerektirmeden 3 ürünü de göstermelidir. Doğrudan koda yazmanız gereken tek şey placement ID’sidir.
Yanıt parametreleri:
| Parametre | Açıklama |
|---|---|
| Paywall | Ürün ID’leri listesi, paywall tanımlayıcısı, remote config ve diğer birkaç özelliği içeren AdaptyPaywall nesnesi. |
Ürünleri çekme
Paywall’ı aldıktan sonra ona karşılık gelen ürün dizisini sorgulayabilirsiniz:
try {
// ...paywall
const products = await adapty.getPaywallProducts(paywall);
// the requested products list
} catch (error) {
// handle the error
}Yanıt parametreleri:
| Parametre | Açıklama |
|---|---|
| Products | Şunları içeren AdaptyPaywallProduct nesnelerinin listesi: ürün tanımlayıcısı, ürün adı, fiyat, para birimi, abonelik uzunluğu ve diğer birkaç özellik. |
Kendi paywall tasarımınızı uygularken, muhtemelen AdaptyPaywallProduct nesnesindeki bu özelliklere erişmeniz gerekecek. Aşağıda en yaygın kullanılan özellikler gösterilmiştir, ancak mevcut tüm özelliklerle ilgili tam ayrıntılar için bağlantılı belgeye bakın.
| Özellik | Açıklama |
|---|---|
| Title | Ürünün başlığını görüntülemek için product.localizedTitle kullanın. Yerelleştirmenin, cihazın locale’inden ziyade kullanıcıların seçtiği mağaza ülkesine dayandığını unutmayın. |
| Price | Fiyatın yerelleştirilmiş bir sürümünü görüntülemek için product.price?.localizedString kullanın. Bu yerelleştirme, cihazın locale bilgisine dayanır. Fiyata product.price?.amount kullanarak bir sayı olarak da erişebilirsiniz. Değer yerel para biriminde sağlanır. İlgili para birimi sembolünü almak için product.price?.currencySymbol kullanın. |
| Subscription Period | Süreyi (örneğin hafta, ay, yıl vb.) görüntülemek için product.subscription?.localizedSubscriptionPeriod kullanın. Bu yerelleştirme, cihazın locale’ine dayanır. Abonelik süresini programatik olarak getirmek için product.subscription?.subscriptionPeriod kullanın. Oradan, uzunluğu almak için unit özelliğine erişebilirsiniz (yani ‘day’, ‘week’, ‘month’, ‘year’ veya ‘unknown’). numberOfUnits değeri size süre birimi sayısını verir. Örneğin, üç aylık bir abonelik için, unit özelliğinde 'month' ve numberOfUnits özelliğinde 3 görürsünüz. |
| Introductory Offer | Bir aboneliğin başlangıç teklifi içerdiğini gösteren bir rozet veya başka bir gösterge görüntülemek için, product.subscription?.offer?.phases özelliğine göz atın. Bu, en fazla iki indirim aşaması içerebilen bir listedir: ücretsiz deneme aşaması ve başlangıç fiyatı aşaması. Her aşama nesnesinde şu yararlı özellikler bulunur:• paymentMode: 'free_trial', 'pay_as_you_go', 'pay_up_front' ve 'unknown' değerlerine sahip bir dize. Ücretsiz denemeler 'free_trial' türünde olur.• price: Bir sayı olarak indirimli fiyat. Ücretsiz denemeler için burada 0 arayın.• localizedNumberOfPeriods: Teklifin uzunluğunu açıklayan, cihazın locale’i kullanılarak yerelleştirilmiş bir dize. Örneğin, üç günlük bir deneme teklifi bu alanda '3 days' gösterir.• subscriptionPeriod: Alternatif olarak, teklif döneminin ayrıntılarını bu özellikle ayrı ayrı alabilirsiniz. Teklifler için önceki bölümde açıklandığı şekilde çalışır.• localizedSubscriptionPeriod: Kullanıcının locale’i için biçimlendirilmiş bir indirim abonelik süresi. |
Varsayılan kitle paywall’ıyla paywall çekmeyi hızlandırma
Normalde paywalllar neredeyse anında çekilir, bu nedenle bu süreci hızlandırmak için endişelenmenize gerek yoktur. Ancak çok sayıda kitle ve paywall’ınız varsa ve kullanıcılarınızın internet bağlantısı zayıfsa, bir paywall çekme işlemi istediğinizden daha uzun sürebilir. Bu durumlarda, hiç paywall göstermemek yerine sorunsuz bir kullanıcı deneyimi sağlamak için varsayılan bir paywall görüntülemek isteyebilirsiniz.
Bunu çözmek için, belirtilen placement’ın Tüm Kullanıcılar kitlesi için paywall’ını çeken getPaywallForDefaultAudience metodunu kullanabilirsiniz. Ancak önerilen yaklaşımın, yukarıdaki Paywall Bilgilerini Çekme bölümünde açıklandığı gibi getPaywall metoduyla paywall çekmek olduğunu anlamak önemlidir.
Neden getPaywall kullanmanızı öneriyoruz
getPaywallForDefaultAudience metodunun birkaç önemli dezavantajı vardır:
- Potansiyel geriye dönük uyumluluk sorunları: Farklı uygulama sürümleri (mevcut ve gelecekteki) için farklı paywalllar göstermeniz gerekiyorsa sorunlarla karşılaşabilirsiniz. Ya mevcut (eski) sürümü destekleyen paywalllar tasarlamak zorunda kalırsınız ya da mevcut (eski) sürüme sahip kullanıcıların render edilmeyen paywalllarla karşılaşabileceğini kabul edersiniz.
- Hedefleme kaybı: Tüm kullanıcılar Tüm Kullanıcılar kitlesi için tasarlanmış aynı paywall’ı görür; bu da kişiselleştirilmiş hedeflemeyi (ülkelere, pazarlama attribution’ına veya kendi özel özelliklerinize göre hedefleme dahil) kaybettiğiniz anlamına gelir.
Daha hızlı paywall çekme avantajından yararlanmak için bu dezavantajları kabul etmeye hazırsanız, aşağıdaki gibi getPaywallForDefaultAudience metodunu kullanın. Aksi takdirde yukarıda açıklanan getPaywall metoduna bağlı kalın.
try {
const id = 'YOUR_PLACEMENT_ID';
const locale = 'en';
const paywall = await adapty.getPaywallForDefaultAudience(id, locale);
// the requested paywall
} catch (error) {
// handle the error
}getPaywallForDefaultAudience metodu React Native SDK 2.11.2 sürümünden itibaren kullanılabilir.
| Parametre | Zorunluluk | Açıklama |
|---|---|---|
| placementId | zorunlu | Placement’ın tanımlayıcısı. Adapty Kontrol Paneli’nde placement oluştururken belirttiğiniz değerdir. |
| locale | isteğe bağlı varsayılan: | Paywall yerelleştirmesinin tanımlayıcısı. Bu parametre, eksi (-) karakteriyle ayrılmış bir veya daha fazla alt etiket içeren bir dil kodu olmalıdır. İlk alt etiket dil, ikincisi bölge içindir. Örnek: Yerel kod hakkında daha fazla bilgi için Yerelleştirmeler ve yerel kodlar sayfasına bakın. |
| fetchPolicy | varsayılan: .reloadRevalidatingCacheData | SDK varsayılan olarak sunucudan veri yüklemeye çalışır ve başarısız olursa önbelleğe alınmış veriyi döndürür. Kullanıcılarınızın her zaman en güncel verilere erişmesini sağladığı için bu seçeneği öneriyoruz. Ancak kullanıcılarınızın kararsız bir internet bağlantısıyla uğraştığını düşünüyorsanız, önbelleğe alınmış veri mevcutsa onu döndürmek için Önbelleğin uygulama yeniden başlatıldığında bozulmadan kaldığını ve yalnızca uygulama yeniden yüklendiğinde veya manuel temizlik yapıldığında temizlendiğini unutmayın. |