iOS SDK'da remote config paywallları için paywall ve ürün bilgilerini çekme

Remote config ve özel paywallları göstermeden önce, bunlara ait bilgileri çekmeniz gerekir. Bu konunun yalnızca remote config ve özel paywall’larla ilgili olduğunu unutmayın. Paywall Builder ile özelleştirilmiş paywalllar için bilgi çekme adımlarına ulaşmak istiyorsanız guides on how to fetch Paywall Builder paywalls in your app belgelerine bakın.

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 ve ürün bilgilerini çekmeye başlamadan önce (genişletmek için tıklayın)
  1. Adapty Kontrol Paneli’nde ürünlerinizi oluşturun.

  2. Adapty Kontrol Paneli’nde bir paywall oluşturun ve ürünleri bu paywall’a ekleyin.

  3. Adapty Kontrol Paneli’nde placement’lar oluşturun ve paywall’ınızı bir placement’a ekleyin.

  4. Mobil uygulamanıza Adapty SDK’yı kurun.

Paywall bilgilerini çekme

Adapty’de bir ürün, hem App Store hem de Google Play’den ürünlerin birleşimini temsil eder. Bu çapraz platform ürünler, belirli mobil uygulama placement’larında gösterebilmek için paywallara entegre edilir.

Ürünleri gösterebilmek için getPaywall metodunu kullanarak placement’larınızdan birinden bir Paywall almanız gerekir.

Ürün ID’lerini koda gömmayın. Koda gömmeniz 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önetebilmeli; bugün iki ürün döndüren bir paywall yarın üç ürün döndürüyorsa, kod değişikliğine gerek kalmadan hepsini göstermelidir.

ParametreZorunlulukAçıklama
placementIdzorunluPlacement’ın tanımlayıcısı. Adapty Kontrol Paneli’nde placement oluştururken belirttiğiniz değerdir.
locale

isteğe bağlı

varsayılan: en

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 dili, ikincisi ise bölgeyi belirtir.

Örnek: en İngilizce anlamına gelir; pt-br Brezilya Portekizcesini temsil eder.

Yerel ayar kodları ve kullanım önerileri hakkında daha fazla bilgi için Yerelleştirmeler ve yerel ayar kodları sayfasına bakın.

fetchPolicyvarsayılan: .reloadRevalidatingCacheData

SDK varsayılan olarak sunucudan veri yüklemeye çalışır; başarısız olursa önbellekteki veriyi döndürür. Kullanıcılarınızın her zaman en güncel veriye ulaşmasını sağladığından bu seçeneği öneriyoruz.

Ancak kullanıcılarınızın internet bağlantısının kararsız olduğunu düşünüyorsanız, önbellekte veri varsa onu döndürmek için .returnCacheDataElseLoad seçeneğini kullanabilirsiniz. Bu durumda kullanıcılar en güncel veriye her zaman ulaşamayabilir, ancak internet bağlantısından bağımsız olarak daha hızlı yükleme süreleri yaşarlar. Önbellek düzenli olarak güncellenir; bu nedenle oturum sırasında gereksiz ağ isteklerinden kaçınmak için güvenle kullanılabilir.

Önbelleğin uygulama yeniden başlatıldığında silinmediğini, yalnızca uygulama yeniden yüklendiğinde veya manuel temizlik yapıldığında temizlendiğini unutmayın.

Adapty SDK, paywallları iki katmanda depolar: yukarıda açıklanan düzenli olarak güncellenen önbellek ve yedek paywalllar. Paywallları daha hızlı çekmek için CDN, CDN’e ulaşılamadığı durumlarda ise bağımsız bir yedek sunucu kullanılır. Bu sistem, internet bağlantısının zayıf olduğu durumlarda bile paywalllarınızın en güncel sürümünü almanızı sağlamak için tasarlanmıştır.

loadTimeoutvarsayılan: 5 sn

Bu değer, metodun zaman aşımı süresini 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 metod, işlem arka planda farklı isteklerden oluşabileceğinden loadTimeout’ta belirtilenden biraz daha geç zaman aşımına uğrayabilir.

Ürün ID’lerini koda gömmayı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ı ele aldığından 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 geliyorsa, 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:

ParametreAçıklama
PaywallÜrün ID’leri listesi, paywall tanımlayıcısı, remote config ve diğer çeşitli özellikler içeren bir AdaptyPaywall nesnesi.

Ürünleri çekme

Paywall’ı aldıktan sonra, ona karşılık gelen ürün dizisini sorgulayabilirsiniz:

Yanıt parametreleri:

ParametreAçıklama
ProductsÜrün tanımlayıcısı, ürün adı, fiyat, para birimi, abonelik süresi ve diğer çeşitli özellikler içeren AdaptyPaywallProduct nesnelerinin listesi.

Kendi paywall tasarımınızı uygularken AdaptyPaywallProduct nesnesindeki bu özelliklere ihtiyaç duyacaksınız. Aşağıda en sık kullanılan özellikler açıklanmaktadır; tüm mevcut özellikler için bağlantılı belgeye bakın.

ÖzellikAçıklama
TitleÜrünün başlığını göstermek için product.localizedTitle kullanın. Yerelleştirmenin cihazın dilini değil, kullanıcının seçtiği mağaza ülkesini baz aldığını unutmayın.
PriceFiyatın yerelleştirilmiş sürümünü göstermek için product.localizedPrice kullanın. Bu yerelleştirme cihazın yerel ayar bilgisine göre yapılır. Fiyata sayısal olarak product.price üzerinden de erişebilirsiniz. Değer yerel para biriminde verilir. İlgili para birimi sembolünü almak için product.currencySymbol kullanın.
Subscription PeriodPeriyodu (hafta, ay, yıl vb.) göstermek için product.localizedSubscriptionPeriod kullanın. Bu yerelleştirme cihazın yerel ayarına göre yapılır. Abonelik periyoduna programatik olarak erişmek için product.subscriptionPeriod kullanın. Buradan süreyi almak için unit enum’una (gün, hafta, ay, yıl veya bilinmiyor) erişebilirsiniz. numberOfUnits değeri, periyot birimi sayısını verir. Örneğin üç aylık bir abonelik için unit özelliğinde .month, numberOfUnits’te ise 3 görürsünüz.
Introductory OfferBir aboneliğin başlangıç teklifi içerip içermediğini göstermek için product.subscriptionOffer özelliğine bakın. Bu nesne aşağıdaki yararlı özellikleri içerir:
offerType: introductory, promotional ve winBack değerlerini alan bir enum. Ücretsiz denemeler ve başlangıç indirimli abonelikler introductory türündedir.
price: İndirimli fiyat, sayısal olarak. Ücretsiz denemeler için burada 0 değerini arayın.
localizedPrice: Kullanıcının yerel ayarına göre biçimlendirilmiş indirim fiyatı.
localizedNumberOfPeriods: Teklifin süresini cihazın yerel ayarıyla yerelleştirilmiş olarak açıklayan bir dize. Örneğin üç günlük deneme teklifi bu alanda 3 days olarak görünür.
subscriptionPeriod: Teklif periyodunun ayrıntılarına bu özellik aracılığıyla da erişebilirsiniz; önceki bölümde açıklandığı gibi çalışır.
localizedSubscriptionPeriod: Kullanıcının yerel ayarına göre biçimlendirilmiş indirim abonelik periyodu.

iOS’ta başlangıç teklifi uygunluğunu kontrol etme

getPaywallProducts metodu varsayılan olarak başlangıç, promosyon ve geri kazanma teklifleri için uygunluğu kontrol eder. SDK teklif uygunluğunu belirlemeden önce ürünleri göstermeniz gerekiyorsa, bunun yerine getPaywallProductsWithoutDeterminingOffer metodunu kullanın.

İlk ürünleri gösterdikten sonra, ürünleri doğru teklif uygunluk bilgileriyle güncellemek için normal getPaywallProducts metodunu çağırmayı unutmayın.

Varsayılan kitle paywall’ı ile paywall çekmeyi hızlandırma

Paywalllar genellikle neredeyse anında çekilir, bu yüzden bu süreci hızlandırma konusunda 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, paywall çekme işlemi beklenenden daha uzun sürebilir. Böyle durumlarda hiç paywall göstermemek yerine kullanıcı deneyimini sorunsuz tutmak için varsayılan bir paywall görüntülemek isteyebilirsiniz.

Bu sorunu çözmek için All Users kitlesine ait belirtilen placement’ın paywall’ını çeken getPaywallForDefaultAudience metodunu kullanabilirsiniz. Ancak önerilen yaklaşımın, yukarıdaki Paywall Bilgilerini Çekme bölümünde açıklandığı gibi getPaywall metodunu kullanmak olduğunu bilmeniz önemlidir.

Neden getPaywall kullanmanızı öneriyoruz

getPaywallForDefaultAudience metodunun bazı önemli dezavantajları vardır:

  • Geriye dönük uyumluluk sorunları: Farklı uygulama sürümleri için farklı paywalllar göstermeniz gerekiyorsa zorluklarla karşılaşabilirsiniz. Ya mevcut (eski) sürümü destekleyen paywalllar tasarlamanız ya da mevcut (eski) sürümdeki kullanıcıların düzgün render edilemeyen paywalllarla karşılaşabileceğini kabul etmeniz gerekir.
  • Hedefleme kaybı: Tüm kullanıcılar All Users kitlesi için tasarlanmış aynı paywall’ı görür; bu da ülkeye, pazarlama attribution’ına veya kendi özel niteliklerinize dayalı kişiselleştirilmiş hedeflemeyi kaybetmeniz anlamına gelir.

Bu dezavantajları kabul ederek daha hızlı paywall çekme avantajından yararlanmak istiyorsanız getPaywallForDefaultAudience metodunu aşağıdaki gibi kullanabilirsiniz. Aksi hâlde yukarıda açıklanan getPaywall metodunu kullanmaya devam edin.

getPaywallForDefaultAudience metodu iOS SDK 2.11.2 sürümünden itibaren kullanılabilir.

ParametreZorunlulukAçıklama
placementIdzorunluPlacement’ın tanımlayıcısı. Adapty Kontrol Paneli’nde placement oluştururken belirttiğiniz değerdir.
locale

isteğe bağlı

varsayılan: en

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 dili, ikincisi ise bölgeyi belirtir.

Örnek: en İngilizce anlamına gelir; pt-br Brezilya Portekizcesini temsil eder.

Yerel ayar kodları ve kullanım önerileri hakkında daha fazla bilgi için Yerelleştirmeler ve yerel ayar kodları sayfasına bakın.

fetchPolicyvarsayılan: .reloadRevalidatingCacheData

SDK varsayılan olarak sunucudan veri yüklemeye çalışır; başarısız olursa önbellekteki veriyi döndürür. Kullanıcılarınızın her zaman en güncel veriye ulaşmasını sağladığından bu seçeneği öneriyoruz.

Ancak kullanıcılarınızın internet bağlantısının kararsız olduğunu düşünüyorsanız, önbellekte veri varsa onu döndürmek için .returnCacheDataElseLoad seçeneğini kullanabilirsiniz. Bu durumda kullanıcılar en güncel veriye her zaman ulaşamayabilir, ancak internet bağlantısından bağımsız olarak daha hızlı yükleme süreleri yaşarlar. Önbellek düzenli olarak güncellenir; bu nedenle oturum sırasında gereksiz ağ isteklerinden kaçınmak için güvenle kullanılabilir.

Önbelleğin uygulama yeniden başlatıldığında silinmediğini, yalnızca uygulama yeniden yüklendiğinde veya manuel temizlik yapıldığında temizlendiğini unutmayın.