From 3503f6747d8429036915fae9a3391088f4ec6fe7 Mon Sep 17 00:00:00 2001 From: Jeehut Date: Mon, 19 Aug 2024 01:46:04 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20FlineDev?= =?UTF-8?q?/FreemiumKit-Docs@4b29fea58abaeba0de9f7d876a892c7fa36bce4c=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/documentation/freemiumkit.json | 2 +- .../freemiumkit/faq-howitworks.json | 2 +- .../faq-migratefrompaidupfront.json | 2 +- .../freemiumkit/faq-migratefromrevenuecat.json | 2 +- .../freemiumkit/faq-parentalgate.json | 1 + .../documentation/freemiumkit/faq-pricing.json | 2 +- .../documentation/freemiumkit/faq-privacy.json | 2 +- .../freemiumkit/faq-serverlimits.json | 2 +- .../freemiumkit/faq-validation.json | 2 +- data/documentation/freemiumkit/faqs.json | 2 +- data/documentation/freemiumkit/setupguide.json | 2 +- data/documentation/index.json | 2 +- .../freemiumkit/faq-parentalgate/index.html | 1 + images/ParentalGate-Customized.png | Bin 0 -> 231514 bytes index/index.json | 2 +- metadata.json | 2 +- 16 files changed, 15 insertions(+), 13 deletions(-) create mode 100644 data/documentation/freemiumkit/faq-parentalgate.json create mode 100644 documentation/freemiumkit/faq-parentalgate/index.html create mode 100644 images/ParentalGate-Customized.png diff --git a/data/documentation/freemiumkit.json b/data/documentation/freemiumkit.json index fbe7088..02cf988 100644 --- a/data/documentation/freemiumkit.json +++ b/data/documentation/freemiumkit.json @@ -1 +1 @@ -{"schemaVersion":{"minor":3,"major":0,"patch":0},"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit"},"sections":[],"hierarchy":{"paths":[[]]},"variants":[{"paths":["\/documentation\/freemiumkit"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"modules":[{"name":"FreemiumKit"}],"symbolKind":"module","externalID":"FreemiumKit","title":"FreemiumKit","role":"collection","roleHeading":"Framework"},"references":{"doc://FreemiumKit/documentation/FreemiumKit":{"type":"topic","role":"collection","url":"\/documentation\/freemiumkit","abstract":[],"kind":"symbol","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit","title":"FreemiumKit"}}} \ No newline at end of file +{"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/freemiumkit"]}],"metadata":{"symbolKind":"module","modules":[{"name":"FreemiumKit"}],"roleHeading":"Framework","title":"FreemiumKit","role":"collection","externalID":"FreemiumKit"},"schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit"},"sections":[],"hierarchy":{"paths":[[]]},"references":{"doc://FreemiumKit/documentation/FreemiumKit":{"kind":"symbol","title":"FreemiumKit","role":"collection","url":"\/documentation\/freemiumkit","abstract":[],"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit","type":"topic"}}} \ No newline at end of file diff --git a/data/documentation/freemiumkit/faq-howitworks.json b/data/documentation/freemiumkit/faq-howitworks.json index f4de9e3..fa4c0c1 100644 --- a/data/documentation/freemiumkit/faq-howitworks.json +++ b/data/documentation/freemiumkit/faq-howitworks.json @@ -1 +1 @@ -{"schemaVersion":{"minor":3,"major":0,"patch":0},"seeAlsoSections":[{"generated":true,"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits"]}],"abstract":[{"text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app.","type":"text"}],"kind":"article","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks"},"sections":[],"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"]]},"primaryContentSections":[{"content":[{"text":"Short Answer","type":"heading","anchor":"Short-Answer","level":2},{"inlineContent":[{"text":"FreemiumKit is built on top of StoreKit 2 and official App Store Connect APIs. Therefore, most of what FreemiumKit does is following modern Apple best practices, without being dependent on our servers. For the paywall remote configuration, we use a Content Delivery Network (CDN) for fast global distribution – but there’s also a local fallback in your project, in case of downtimes.","type":"text"}],"type":"paragraph"},{"text":"Full Answer","type":"heading","anchor":"Full-Answer","level":2},{"inlineContent":[{"type":"text","text":"FreemiumKit is here to automate the cumbersome and fiddly steps in setting up and maintaining purchases for your app. Our goal is not to cover every possible pricing model, neither is it to support all technological stacks. For example, we will probably never support Android. Instead, we keep the scope focused on the most modern Apple technologies and pricing concepts."}],"type":"paragraph"},{"inlineContent":[{"type":"text","text":"We will always try to support all Apple platforms you can choose as a destination for your target in Xcode and keep up with the latest OS releases. We will always prefer official APIs over private APIs and keep every dependency out that is not absolutely needed. This means, we stick to official Apple APIs wherever possible."}],"type":"paragraph"},{"inlineContent":[{"text":"This is the resulting current tech stack:","type":"text"}],"type":"paragraph"},{"type":"unorderedList","items":[{"content":[{"inlineContent":[{"text":"Native apps for iOS, macOS, and visionOS (tvOS has no biometric authentication)","type":"text"}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"type":"text","text":"App connects to official "},{"type":"reference","identifier":"https:\/\/developer.apple.com\/documentation\/appstoreconnectapi\/","isActive":true},{"type":"text","text":" endpoints to handle purchases"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"isActive":true,"type":"reference","identifier":"https:\/\/developer.apple.com\/xcode\/swiftui\/"},{"type":"text","text":" SDK targeting iOS, macOS, visionOS, and tvOS (coming soon)"}]}]},{"content":[{"inlineContent":[{"type":"text","text":"SDK is built on top of "},{"identifier":"https:\/\/developer.apple.com\/storekit\/","type":"reference","isActive":true},{"type":"text","text":" and SwiftUI 3 (supporting iOS\/tvOS 15+, macOS 12+, visionOS 1+)"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"identifier":"https:\/\/vapor.codes","type":"reference","isActive":true},{"text":"-based server for push notifications when purchases are made (reported by SDK)","type":"text"}]}]},{"content":[{"inlineContent":[{"identifier":"https:\/\/supabase.com","type":"reference","isActive":true},{"type":"text","text":"-based Content Delivery Network (CDN) for remote configuration of paywalls"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"identifier":"https:\/\/developer.apple.com\/icloud\/cloudkit\/","isActive":true,"type":"reference"},{"text":"-based persistence of purchase history in your Apple Account for backup & sync","type":"text"}]}]}]},{"inlineContent":[{"type":"text","text":"The only non-Apple technologies here are our server and CDN. We included these dependencies in a thoughtful manner – let’s suppose the worst case happens and both are offline, then:"}],"type":"paragraph"},{"type":"unorderedList","items":[{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"❌ You would no longer receive "},{"type":"strong","inlineContent":[{"type":"text","text":"live push notifications"}]},{"type":"text","text":" when users make purchases (not mission-critical)"}]}]},{"content":[{"inlineContent":[{"text":"❌ You would no longer be able to ","type":"text"},{"inlineContent":[{"type":"text","text":"remotely configure"}],"type":"strong"},{"text":" your paywall or A\/B test (not mission-critical)","type":"text"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"✅ The "},{"inlineContent":[{"type":"text","text":"Paywall"}],"type":"strong"},{"type":"text","text":" UI would continue to work, using the local “fallback” configuration"}]}]},{"content":[{"inlineContent":[{"type":"text","text":"✅ Users can continue to "},{"inlineContent":[{"text":"make purchases","type":"text"}],"type":"strong"},{"type":"text","text":", as the SDK only needs StoreKit 2 for that"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"text":"✅ Even paying users will continue to ","type":"text"},{"inlineContent":[{"text":"have access to paid features","type":"text"}],"type":"strong"},{"text":" (via StoreKit 2)","type":"text"}]}]}]},{"inlineContent":[{"type":"text","text":"Of course, we don’t expect our servers to be down any significant amount of time. This was just to show you that we have considered all cases when designing FreemiumKit conceptually. And because all the purchases are directly configured on App Store Connect, you could even decide to move away from FreemiumKit entirely if you find our feature set does not fulfill your needs. There are no lock-in features. But beware, you will miss all our built-in conveniences! 😉"}],"type":"paragraph"},{"text":"Contact","type":"heading","anchor":"Contact","level":2},{"inlineContent":[{"text":"Have questions or need support? Reach out to me at ","type":"text"},{"identifier":"mailto:freemiumkit@fline.dev","isActive":true,"type":"reference"},{"text":".","type":"text"}],"type":"paragraph"},{"text":"Legal","type":"heading","anchor":"Legal","level":2},{"inlineContent":[{"type":"text","text":"Cihat Gündüz © 2024. All rights reserved."},{"type":"text","text":" "},{"type":"text","text":"Privacy: No personal data is tracked on this site."},{"type":"text","text":" "},{"type":"reference","isActive":true,"identifier":"https:\/\/www.fline.dev\/imprint\/"}],"type":"small"}],"kind":"content"}],"metadata":{"title":"How does FreemiumKit work? Can I trust it?","roleHeading":"FAQs","role":"sampleCode"},"references":{"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Pricing":{"title":"How does the Pricing work in detail?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"url":"\/documentation\/freemiumkit\/faq-pricing","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromRevenueCat":{"title":"I use RevenueCat, how can I migrate?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"url":"\/documentation\/freemiumkit\/faq-migratefromrevenuecat","type":"topic","kind":"article","role":"sampleCode"},"https://supabase.com":{"identifier":"https:\/\/supabase.com","titleInlineContent":[{"text":"Supabase","type":"text"}],"title":"Supabase","url":"https:\/\/supabase.com","type":"link"},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","identifier":"doc:\/\/FreemiumKit\/documentation\/Index","abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"images":[{"type":"icon","identifier":"FreemiumKit.png"}],"url":"\/documentation\/index","type":"topic","kind":"article","role":"collection"},"https://developer.apple.com/storekit/":{"identifier":"https:\/\/developer.apple.com\/storekit\/","titleInlineContent":[{"type":"text","text":"StoreKit 2"}],"title":"StoreKit 2","url":"https:\/\/developer.apple.com\/storekit\/","type":"link"},"https://vapor.codes":{"identifier":"https:\/\/vapor.codes","titleInlineContent":[{"text":"Vapor","type":"text"}],"title":"Vapor","url":"https:\/\/vapor.codes","type":"link"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Privacy":{"title":"How does FreemiumKit handle User Privacy?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","abstract":[{"type":"text","text":"Learn how FreemiumKit was designed to keep your users data private and reduce the exposure of your purchase data to a minimum."}],"url":"\/documentation\/freemiumkit\/faq-privacy","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromPaidUpFront":{"title":"My app is paid-up-front. How can I make it Freemium?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","abstract":[{"type":"text","text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased."}],"url":"\/documentation\/freemiumkit\/faq-migratefrompaidupfront","type":"topic","kind":"article","role":"sampleCode"},"https://developer.apple.com/icloud/cloudkit/":{"identifier":"https:\/\/developer.apple.com\/icloud\/cloudkit\/","titleInlineContent":[{"type":"text","text":"CloudKit"}],"title":"CloudKit","url":"https:\/\/developer.apple.com\/icloud\/cloudkit\/","type":"link"},"mailto:freemiumkit@fline.dev":{"identifier":"mailto:freemiumkit@fline.dev","titleInlineContent":[{"text":"freemiumkit@fline.dev","type":"text"}],"title":"freemiumkit@fline.dev","url":"mailto:freemiumkit@fline.dev","type":"link"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Validation":{"title":"Does FreemiumKit validate purchases?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","abstract":[{"type":"text","text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!"}],"url":"\/documentation\/freemiumkit\/faq-validation","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs","abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"images":[{"type":"icon","identifier":"FreemiumKit.png"}],"url":"\/documentation\/freemiumkit\/faqs","type":"topic","kind":"article","role":"article"},"https://www.fline.dev/imprint/":{"identifier":"https:\/\/www.fline.dev\/imprint\/","titleInlineContent":[{"type":"text","text":"Imprint"}],"title":"Imprint","url":"https:\/\/www.fline.dev\/imprint\/","type":"link"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ServerLimits":{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits","kind":"article","title":"How can I apply my custom server-side limits?","abstract":[{"text":"Learn how you can recognize a purchased user across app installs and devices to roll your own server-side logic for custom limits.","type":"text"}],"url":"\/documentation\/freemiumkit\/faq-serverlimits","type":"topic","role":"sampleCode"},"https://developer.apple.com/documentation/appstoreconnectapi/":{"identifier":"https:\/\/developer.apple.com\/documentation\/appstoreconnectapi\/","titleInlineContent":[{"type":"text","text":"App Store Connect API"}],"title":"App Store Connect API","url":"https:\/\/developer.apple.com\/documentation\/appstoreconnectapi\/","type":"link"},"FreemiumKit.png":{"identifier":"FreemiumKit.png","alt":null,"variants":[{"url":"\/images\/FreemiumKit.png","traits":["1x","light"]}],"type":"image"},"https://developer.apple.com/xcode/swiftui/":{"type":"link","titleInlineContent":[{"text":"SwiftUI","type":"text"}],"url":"https:\/\/developer.apple.com\/xcode\/swiftui\/","identifier":"https:\/\/developer.apple.com\/xcode\/swiftui\/","title":"SwiftUI"}}} \ No newline at end of file +{"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks"},"abstract":[{"type":"text","text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app."}],"metadata":{"roleHeading":"FAQs","role":"sampleCode","title":"How does FreemiumKit work? Can I trust it?"},"sections":[],"kind":"article","primaryContentSections":[{"kind":"content","content":[{"type":"heading","text":"Short Answer","anchor":"Short-Answer","level":2},{"type":"paragraph","inlineContent":[{"text":"FreemiumKit is built on top of StoreKit 2 and official App Store Connect APIs. Therefore, most of what FreemiumKit does is following modern Apple best practices, without being dependent on our servers. For the paywall remote configuration, we use a Content Delivery Network (CDN) for fast global distribution – but there’s also a local fallback in your project, in case of downtimes.","type":"text"}]},{"type":"heading","text":"Full Answer","anchor":"Full-Answer","level":2},{"type":"paragraph","inlineContent":[{"text":"FreemiumKit is here to automate the cumbersome and fiddly steps in setting up and maintaining purchases for your app. Our goal is not to cover every possible pricing model, neither is it to support all technological stacks. For example, we will probably never support Android. Instead, we keep the scope focused on the most modern Apple technologies and pricing concepts.","type":"text"}]},{"type":"paragraph","inlineContent":[{"text":"We will always try to support all Apple platforms you can choose as a destination for your target in Xcode and keep up with the latest OS releases. We will always prefer official APIs over private APIs and keep every dependency out that is not absolutely needed. This means, we stick to official Apple APIs wherever possible.","type":"text"}]},{"type":"paragraph","inlineContent":[{"text":"This is the resulting current tech stack:","type":"text"}]},{"type":"unorderedList","items":[{"content":[{"inlineContent":[{"text":"Native apps for iOS, macOS, and visionOS (tvOS has no biometric authentication)","type":"text"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"text":"App connects to official ","type":"text"},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/documentation\/appstoreconnectapi\/"},{"text":" endpoints to handle purchases","type":"text"}]}]},{"content":[{"inlineContent":[{"isActive":true,"type":"reference","identifier":"https:\/\/developer.apple.com\/xcode\/swiftui\/"},{"text":" SDK targeting iOS, macOS, visionOS, and tvOS (coming soon)","type":"text"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"SDK is built on top of "},{"isActive":true,"identifier":"https:\/\/developer.apple.com\/storekit\/","type":"reference"},{"text":" and SwiftUI 3 (supporting iOS\/tvOS 15+, macOS 12+, visionOS 1+)","type":"text"}]}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"reference","isActive":true,"identifier":"https:\/\/vapor.codes"},{"type":"text","text":"-based server for push notifications when purchases are made (reported by SDK)"}]}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"reference","isActive":true,"identifier":"https:\/\/supabase.com"},{"type":"text","text":"-based Content Delivery Network (CDN) for remote configuration of paywalls"}]}]},{"content":[{"type":"paragraph","inlineContent":[{"identifier":"https:\/\/developer.apple.com\/icloud\/cloudkit\/","isActive":true,"type":"reference"},{"text":"-based persistence of purchase history in your Apple Account for backup & sync","type":"text"}]}]}]},{"type":"paragraph","inlineContent":[{"type":"text","text":"The only non-Apple technologies here are our server and CDN. We included these dependencies in a thoughtful manner – let’s suppose the worst case happens and both are offline, then:"}]},{"type":"unorderedList","items":[{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"❌ You would no longer receive "},{"type":"strong","inlineContent":[{"text":"live push notifications","type":"text"}]},{"type":"text","text":" when users make purchases (not mission-critical)"}]}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"❌ You would no longer be able to "},{"inlineContent":[{"type":"text","text":"remotely configure"}],"type":"strong"},{"type":"text","text":" your paywall or A\/B test (not mission-critical)"}]}]},{"content":[{"inlineContent":[{"text":"✅ The ","type":"text"},{"inlineContent":[{"type":"text","text":"Paywall"}],"type":"strong"},{"text":" UI would continue to work, using the local “fallback” configuration","type":"text"}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"type":"text","text":"✅ Users can continue to "},{"type":"strong","inlineContent":[{"type":"text","text":"make purchases"}]},{"type":"text","text":", as the SDK only needs StoreKit 2 for that"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"✅ Even paying users will continue to "},{"inlineContent":[{"type":"text","text":"have access to paid features"}],"type":"strong"},{"type":"text","text":" (via StoreKit 2)"}]}]}]},{"type":"paragraph","inlineContent":[{"text":"Of course, we don’t expect our servers to be down any significant amount of time. This was just to show you that we have considered all cases when designing FreemiumKit conceptually. And because all the purchases are directly configured on App Store Connect, you could even decide to move away from FreemiumKit entirely if you find our feature set does not fulfill your needs. There are no lock-in features. But beware, you will miss all our built-in conveniences! 😉","type":"text"}]},{"type":"heading","text":"Contact","anchor":"Contact","level":2},{"type":"paragraph","inlineContent":[{"type":"text","text":"Have questions or need support? Reach out to me at "},{"isActive":true,"type":"reference","identifier":"mailto:freemiumkit@fline.dev"},{"type":"text","text":"."}]},{"type":"heading","text":"Legal","anchor":"Legal","level":2},{"type":"small","inlineContent":[{"type":"text","text":"Cihat Gündüz © 2024. All rights reserved."},{"type":"text","text":" "},{"type":"text","text":"Privacy: No personal data is tracked on this site."},{"type":"text","text":" "},{"identifier":"https:\/\/www.fline.dev\/imprint\/","isActive":true,"type":"reference"}]}]}],"seeAlsoSections":[{"generated":true,"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ParentalGate","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits"]}],"references":{"https://developer.apple.com/documentation/appstoreconnectapi/":{"identifier":"https:\/\/developer.apple.com\/documentation\/appstoreconnectapi\/","title":"App Store Connect API","titleInlineContent":[{"type":"text","text":"App Store Connect API"}],"url":"https:\/\/developer.apple.com\/documentation\/appstoreconnectapi\/","type":"link"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Pricing":{"abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"type":"topic","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","title":"How does the Pricing work in detail?","kind":"article","url":"\/documentation\/freemiumkit\/faq-pricing","role":"sampleCode"},"https://developer.apple.com/icloud/cloudkit/":{"identifier":"https:\/\/developer.apple.com\/icloud\/cloudkit\/","title":"CloudKit","titleInlineContent":[{"type":"text","text":"CloudKit"}],"url":"https:\/\/developer.apple.com\/icloud\/cloudkit\/","type":"link"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Privacy":{"title":"How does FreemiumKit handle User Privacy?","url":"\/documentation\/freemiumkit\/faq-privacy","abstract":[{"type":"text","text":"Learn how FreemiumKit was designed to keep your users data private and reduce the exposure of your purchase data to a minimum."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy"},"mailto:freemiumkit@fline.dev":{"identifier":"mailto:freemiumkit@fline.dev","title":"freemiumkit@fline.dev","titleInlineContent":[{"type":"text","text":"freemiumkit@fline.dev"}],"url":"mailto:freemiumkit@fline.dev","type":"link"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromPaidUpFront":{"title":"My app is paid-up-front. How can I make it Freemium?","url":"\/documentation\/freemiumkit\/faq-migratefrompaidupfront","abstract":[{"type":"text","text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromRevenueCat":{"title":"I use RevenueCat, how can I migrate?","url":"\/documentation\/freemiumkit\/faq-migratefromrevenuecat","abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat"},"https://supabase.com":{"identifier":"https:\/\/supabase.com","title":"Supabase","titleInlineContent":[{"type":"text","text":"Supabase"}],"url":"https:\/\/supabase.com","type":"link"},"https://developer.apple.com/xcode/swiftui/":{"identifier":"https:\/\/developer.apple.com\/xcode\/swiftui\/","title":"SwiftUI","titleInlineContent":[{"type":"text","text":"SwiftUI"}],"url":"https:\/\/developer.apple.com\/xcode\/swiftui\/","type":"link"},"https://developer.apple.com/storekit/":{"identifier":"https:\/\/developer.apple.com\/storekit\/","title":"StoreKit 2","titleInlineContent":[{"type":"text","text":"StoreKit 2"}],"url":"https:\/\/developer.apple.com\/storekit\/","type":"link"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ParentalGate":{"title":"Are ‘Made for Kids’ apps supported with a Parental Gate?","url":"\/documentation\/freemiumkit\/faq-parentalgate","abstract":[{"type":"text","text":"Learn how to use our built-in parental gate for apps ‘Made for Kids’ to comply with Apples guidelines and avoid accidental purchases by small children."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ParentalGate"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Validation":{"title":"Does FreemiumKit validate purchases?","url":"\/documentation\/freemiumkit\/faq-validation","abstract":[{"type":"text","text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!"}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation"},"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","url":"\/documentation\/freemiumkit\/faqs","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"kind":"article","type":"topic","role":"article","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"},"https://www.fline.dev/imprint/":{"identifier":"https:\/\/www.fline.dev\/imprint\/","title":"Imprint","titleInlineContent":[{"type":"text","text":"Imprint"}],"url":"https:\/\/www.fline.dev\/imprint\/","type":"link"},"FreemiumKit.png":{"alt":null,"variants":[{"url":"\/images\/FreemiumKit.png","traits":["1x","light"]}],"identifier":"FreemiumKit.png","type":"image"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ServerLimits":{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits","title":"How can I apply my custom server-side limits?","abstract":[{"type":"text","text":"Learn how you can recognize a purchased user across app installs and devices to roll your own server-side logic for custom limits."}],"url":"\/documentation\/freemiumkit\/faq-serverlimits","role":"sampleCode","type":"topic","kind":"article"},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","url":"\/documentation\/index","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"kind":"article","type":"topic","role":"collection","identifier":"doc:\/\/FreemiumKit\/documentation\/Index"},"https://vapor.codes":{"identifier":"https:\/\/vapor.codes","title":"Vapor","titleInlineContent":[{"type":"text","text":"Vapor"}],"url":"https:\/\/vapor.codes","type":"link"}}} \ No newline at end of file diff --git a/data/documentation/freemiumkit/faq-migratefrompaidupfront.json b/data/documentation/freemiumkit/faq-migratefrompaidupfront.json index 4c05ee4..2ba2f18 100644 --- a/data/documentation/freemiumkit/faq-migratefrompaidupfront.json +++ b/data/documentation/freemiumkit/faq-migratefrompaidupfront.json @@ -1 +1 @@ -{"kind":"article","metadata":{"title":"My app is paid-up-front. How can I make it Freemium?","role":"sampleCode","roleHeading":"FAQs"},"schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront"},"primaryContentSections":[{"kind":"content","content":[{"type":"heading","level":2,"text":"Short Answer","anchor":"Short-Answer"},{"type":"paragraph","inlineContent":[{"text":"Our SDK uses Apples ","type":"text"},{"isActive":true,"type":"reference","identifier":"https:\/\/developer.apple.com\/documentation\/storekit\/supporting_business_model_changes_by_using_the_app_transaction"},{"text":" in StoreKit to determine users who purchased your paid app before you migrated it to the Freemium model. And for new users, it works normally. You just need to tell our SDK which was the last paid version and build number like this:","type":"text"}]},{"type":"codeListing","syntax":"swift","code":["FreemiumKit.shared.lastPaidRelease(version: \"1.5.1\", build: 25)"]},{"type":"heading","level":2,"text":"Full Answer","anchor":"Full-Answer"},{"type":"paragraph","inlineContent":[{"text":"Read our full guide here:","type":"text"}]},{"type":"heading","level":2,"text":"Contact","anchor":"Contact"},{"type":"paragraph","inlineContent":[{"text":"Have questions or need support? Reach out to me at ","type":"text"},{"identifier":"mailto:freemiumkit@fline.dev","type":"reference","isActive":true},{"text":".","type":"text"}]},{"type":"heading","level":2,"text":"Legal","anchor":"Legal"},{"type":"small","inlineContent":[{"type":"text","text":"Cihat Gündüz © 2024. All rights reserved."},{"type":"text","text":" "},{"type":"text","text":"Privacy: No personal data is tracked on this site."},{"type":"text","text":" "},{"type":"reference","identifier":"https:\/\/www.fline.dev\/imprint\/","isActive":true}]}]}],"seeAlsoSections":[{"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits"],"generated":true}],"abstract":[{"text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased.","type":"text"}],"references":{"https://www.fline.dev/imprint/":{"type":"link","identifier":"https:\/\/www.fline.dev\/imprint\/","title":"Imprint","titleInlineContent":[{"text":"Imprint","type":"text"}],"url":"https:\/\/www.fline.dev\/imprint\/"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Validation":{"title":"Does FreemiumKit validate purchases?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","abstract":[{"type":"text","text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!"}],"url":"\/documentation\/freemiumkit\/faq-validation","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","identifier":"doc:\/\/FreemiumKit\/documentation\/Index","abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"images":[{"type":"icon","identifier":"FreemiumKit.png"}],"url":"\/documentation\/index","type":"topic","kind":"article","role":"collection"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Pricing":{"title":"How does the Pricing work in detail?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"url":"\/documentation\/freemiumkit\/faq-pricing","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ServerLimits":{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits","kind":"article","title":"How can I apply my custom server-side limits?","abstract":[{"text":"Learn how you can recognize a purchased user across app installs and devices to roll your own server-side logic for custom limits.","type":"text"}],"url":"\/documentation\/freemiumkit\/faq-serverlimits","type":"topic","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromRevenueCat":{"title":"I use RevenueCat, how can I migrate?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"url":"\/documentation\/freemiumkit\/faq-migratefromrevenuecat","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Privacy":{"title":"How does FreemiumKit handle User Privacy?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","abstract":[{"type":"text","text":"Learn how FreemiumKit was designed to keep your users data private and reduce the exposure of your purchase data to a minimum."}],"url":"\/documentation\/freemiumkit\/faq-privacy","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-HowItWorks":{"title":"How does FreemiumKit work? Can I trust it?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","abstract":[{"type":"text","text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app."}],"url":"\/documentation\/freemiumkit\/faq-howitworks","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs","abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"images":[{"type":"icon","identifier":"FreemiumKit.png"}],"url":"\/documentation\/freemiumkit\/faqs","type":"topic","kind":"article","role":"article"},"FreemiumKit.png":{"variants":[{"traits":["1x","light"],"url":"\/images\/FreemiumKit.png"}],"type":"image","identifier":"FreemiumKit.png","alt":null},"https://developer.apple.com/documentation/storekit/supporting_business_model_changes_by_using_the_app_transaction":{"type":"link","identifier":"https:\/\/developer.apple.com\/documentation\/storekit\/supporting_business_model_changes_by_using_the_app_transaction","title":"built-in solution","titleInlineContent":[{"text":"built-in solution","type":"text"}],"url":"https:\/\/developer.apple.com\/documentation\/storekit\/supporting_business_model_changes_by_using_the_app_transaction"},"mailto:freemiumkit@fline.dev":{"type":"link","identifier":"mailto:freemiumkit@fline.dev","title":"freemiumkit@fline.dev","titleInlineContent":[{"text":"freemiumkit@fline.dev","type":"text"}],"url":"mailto:freemiumkit@fline.dev"}}} \ No newline at end of file +{"schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"title":"My app is paid-up-front. How can I make it Freemium?","roleHeading":"FAQs","role":"sampleCode"},"abstract":[{"type":"text","text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased."}],"kind":"article","identifier":{"url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","interfaceLanguage":"swift"},"primaryContentSections":[{"content":[{"type":"heading","anchor":"Short-Answer","level":2,"text":"Short Answer"},{"type":"paragraph","inlineContent":[{"text":"Our SDK uses Apples ","type":"text"},{"identifier":"https:\/\/developer.apple.com\/documentation\/storekit\/supporting_business_model_changes_by_using_the_app_transaction","type":"reference","isActive":true},{"text":" in StoreKit to determine users who purchased your paid app before you migrated it to the Freemium model. And for new users, it works normally. You just need to tell our SDK which was the last paid version and build number like this:","type":"text"}]},{"type":"codeListing","syntax":"swift","code":["FreemiumKit.shared.lastPaidRelease(version: \"1.5.1\", build: 25)"]},{"type":"heading","anchor":"Full-Answer","level":2,"text":"Full Answer"},{"type":"paragraph","inlineContent":[{"type":"text","text":"Read our full guide here:"}]},{"type":"heading","anchor":"Contact","level":2,"text":"Contact"},{"type":"paragraph","inlineContent":[{"type":"text","text":"Have questions or need support? Reach out to me at "},{"type":"reference","isActive":true,"identifier":"mailto:freemiumkit@fline.dev"},{"type":"text","text":"."}]},{"type":"heading","anchor":"Legal","level":2,"text":"Legal"},{"type":"small","inlineContent":[{"type":"text","text":"Cihat Gündüz © 2024. All rights reserved."},{"type":"text","text":" "},{"type":"text","text":"Privacy: No personal data is tracked on this site."},{"type":"text","text":" "},{"type":"reference","identifier":"https:\/\/www.fline.dev\/imprint\/","isActive":true}]}],"kind":"content"}],"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"]]},"seeAlsoSections":[{"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ParentalGate","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits"],"generated":true}],"sections":[],"references":{"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromRevenueCat":{"title":"I use RevenueCat, how can I migrate?","url":"\/documentation\/freemiumkit\/faq-migratefromrevenuecat","abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat"},"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","url":"\/documentation\/freemiumkit\/faqs","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"kind":"article","type":"topic","role":"article","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"},"FreemiumKit.png":{"alt":null,"identifier":"FreemiumKit.png","type":"image","variants":[{"traits":["1x","light"],"url":"\/images\/FreemiumKit.png"}]},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","url":"\/documentation\/index","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"kind":"article","type":"topic","role":"collection","identifier":"doc:\/\/FreemiumKit\/documentation\/Index"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ParentalGate":{"title":"Are ‘Made for Kids’ apps supported with a Parental Gate?","url":"\/documentation\/freemiumkit\/faq-parentalgate","abstract":[{"type":"text","text":"Learn how to use our built-in parental gate for apps ‘Made for Kids’ to comply with Apples guidelines and avoid accidental purchases by small children."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ParentalGate"},"https://www.fline.dev/imprint/":{"title":"Imprint","identifier":"https:\/\/www.fline.dev\/imprint\/","titleInlineContent":[{"text":"Imprint","type":"text"}],"type":"link","url":"https:\/\/www.fline.dev\/imprint\/"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Validation":{"title":"Does FreemiumKit validate purchases?","url":"\/documentation\/freemiumkit\/faq-validation","abstract":[{"type":"text","text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!"}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ServerLimits":{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits","title":"How can I apply my custom server-side limits?","abstract":[{"type":"text","text":"Learn how you can recognize a purchased user across app installs and devices to roll your own server-side logic for custom limits."}],"url":"\/documentation\/freemiumkit\/faq-serverlimits","role":"sampleCode","type":"topic","kind":"article"},"https://developer.apple.com/documentation/storekit/supporting_business_model_changes_by_using_the_app_transaction":{"title":"built-in solution","identifier":"https:\/\/developer.apple.com\/documentation\/storekit\/supporting_business_model_changes_by_using_the_app_transaction","titleInlineContent":[{"text":"built-in solution","type":"text"}],"type":"link","url":"https:\/\/developer.apple.com\/documentation\/storekit\/supporting_business_model_changes_by_using_the_app_transaction"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-HowItWorks":{"title":"How does FreemiumKit work? Can I trust it?","url":"\/documentation\/freemiumkit\/faq-howitworks","abstract":[{"type":"text","text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Privacy":{"title":"How does FreemiumKit handle User Privacy?","url":"\/documentation\/freemiumkit\/faq-privacy","abstract":[{"type":"text","text":"Learn how FreemiumKit was designed to keep your users data private and reduce the exposure of your purchase data to a minimum."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Pricing":{"abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"type":"topic","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","title":"How does the Pricing work in detail?","kind":"article","url":"\/documentation\/freemiumkit\/faq-pricing","role":"sampleCode"},"mailto:freemiumkit@fline.dev":{"title":"freemiumkit@fline.dev","identifier":"mailto:freemiumkit@fline.dev","titleInlineContent":[{"text":"freemiumkit@fline.dev","type":"text"}],"type":"link","url":"mailto:freemiumkit@fline.dev"}}} \ No newline at end of file diff --git a/data/documentation/freemiumkit/faq-migratefromrevenuecat.json b/data/documentation/freemiumkit/faq-migratefromrevenuecat.json index 6816c49..1871692 100644 --- a/data/documentation/freemiumkit/faq-migratefromrevenuecat.json +++ b/data/documentation/freemiumkit/faq-migratefromrevenuecat.json @@ -1 +1 @@ -{"kind":"article","metadata":{"title":"I use RevenueCat, how can I migrate?","role":"sampleCode","roleHeading":"FAQs"},"schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat"},"primaryContentSections":[{"content":[{"type":"heading","anchor":"Short-Answer","text":"Short Answer","level":2},{"type":"paragraph","inlineContent":[{"text":"Migrating from RevenueCat involves the following steps (outlined in detail below):","type":"text"}]},{"items":[{"content":[{"inlineContent":[{"type":"text","text":"Set up your app & existing purchases in the FreemiumKit app (5 min)"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Integrate the FreemiumKit SDK into your app & configure it (5 min)"}]}]},{"content":[{"type":"paragraph","inlineContent":[{"text":"Replace RevenueCat SDK calls with FreemiumKit calls (10-15 min)","type":"text"}]}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Remove the RevenueCat SDK integration from your app (5 min)"}]}]},{"content":[{"inlineContent":[{"text":"Adjust the Paywall UI in FreemiumKit to your liking (5 min)","type":"text"}],"type":"paragraph"}]}],"type":"orderedList"},{"type":"paragraph","inlineContent":[{"text":"Current limits: You can’t select products for the paywall at this moment – all of them are automatically shown. (This limitation will be fixed in a future version.)","type":"text"}]},{"type":"heading","anchor":"Full-Answer","text":"Full Answer","level":2},{"type":"heading","anchor":"Step-1-Set-up-your-app--purchases-in-FreemiumKit-5-min","text":"Step 1: Set up your app & purchases in FreemiumKit (5 min)","level":3},{"items":[{"content":[{"type":"paragraph","inlineContent":[{"text":"Download FreemiumKit and follow the simple instructions to connect to your App Store account if you’re starting it for the first time. This should take less than a minute.","type":"text"}]}]},{"content":[{"type":"paragraph","inlineContent":[{"text":"Now, press the + button at the top of the left sidebar and select the app you want to migrate and press “Add Project”.","type":"text"}]}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Navigate to your apps “Products” tab and make sure that all purchases are listed there and have the correct tier set. Subscription tiers are detected automatically, but if you have a Lifetime Purchase, FreemiumKit can’t auto-detect the tier, so you need to press “Mark as Lifetime for Tier…” and select the right tier (most likely ‘Tier 1’)."}]}]},{"content":[{"inlineContent":[{"type":"text","text":"Open the ‘Setup’ tab and drag & drop the config icon on the right to your apps’ Asset Catalog."}],"type":"paragraph"}]}],"type":"orderedList"},{"type":"heading","anchor":"Step-2-Integrate-FreemiumKit-SDK--configure-it-5-min","text":"Step 2: Integrate FreemiumKit SDK & configure it (5 min)","level":3},{"type":"paragraph","inlineContent":[{"type":"text","text":"For this step, simply follow the ‘Adding the SDK’ and ‘Configuring the SDK’ sections of the "},{"type":"reference","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/SetupGuide","isActive":true},{"type":"text","text":" – feel free to also read the rest of the guide to get a better understanding of the next step!"}]},{"type":"heading","anchor":"Step-3-Replace-RevenueCat-SDK-with-our-SDK-calls-10-15-min","text":"Step 3: Replace RevenueCat SDK with our SDK calls (10-15 min)","level":3},{"type":"paragraph","inlineContent":[{"type":"text","text":"If you’ve been using RevenueCat with your own paywall UIs, we have good news because you no longer need to maintain your paywall code that loads ‘offerings’ and displays them – we all handle this for you!"}]},{"type":"paragraph","inlineContent":[{"text":"If this is the case, then somewhere in your project you’re checking if the current user has access to your paid features with either the async\/await call or the completion call below:","type":"text"}]},{"type":"codeListing","syntax":"swift","code":["\/\/ async\/await call","let customerInfo = try await Purchases.shared.customerInfo()","","\/\/ ","Purchases.shared.getCustomerInfo { (customerInfo, error) in"," \/\/ access latest customerInfo","}"]},{"type":"paragraph","inlineContent":[{"text":"A quick search for ","type":"text"},{"type":"codeVoice","code":"Purchases.shared.customerInfo()"},{"text":" and ","type":"text"},{"type":"codeVoice","code":"Purchases.shared.getCustomerInfo"},{"text":" should reveal these places. You’ll have some logic based on ","type":"text"},{"type":"codeVoice","code":"customerInfo"},{"text":" instance details that either gives the user access to your paid features or shows your paywall.","type":"text"}]},{"type":"paragraph","inlineContent":[{"text":"This logic can be completely replaced by one of our 3 APIs explained in the ‘Showing the Paywalls’ section in our ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/SetupGuide"},{"text":":","type":"text"}]},{"items":[{"content":[{"type":"paragraph","inlineContent":[{"text":"Use ","type":"text"},{"code":"PaidFeatureButton","type":"codeVoice"},{"text":" or ","type":"text"},{"code":"PaidFeatureView","type":"codeVoice"},{"text":" for buttons or custom views that should only work for paying customers. Both of these views will automatically show our built-in paywall if the user didn’t purchase the required paid tier yet. These are the easiest and therefore recommended APIs for most cases – and thanks to ","type":"text"},{"code":"PaidFeatureView","type":"codeVoice"},{"text":" they’re quite flexible.","type":"text"}]}]},{"content":[{"inlineContent":[{"text":"You can also use the ","type":"text"},{"type":"codeVoice","code":".paywall(isPresented:)"},{"text":" SwiftUI modifier with a custom check for the ","type":"text"},{"type":"codeVoice","code":"purchasedTier"},{"text":" property of ","type":"text"},{"type":"codeVoice","code":"@EnvironmentObject var freemiumKit: FreemiumKit"},{"text":" added to your SwiftUI view(s). This is more similar to how the RevenueCat SDK works with either the manual paywall or their bult-in iOS paywalls, but we still provide the paywall UI for you. This requires more code on your end, but also gives you more control if needed.","type":"text"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"text":"Our ","type":"text"},{"type":"codeVoice","code":"PaidStatusView"},{"text":" is a special view that we pepared for use in places where you want to simply indicate the current paid status of the user. This is a common need in the settings screen of an app and usually inside a ","type":"text"},{"type":"codeVoice","code":"Form"},{"text":" or ","type":"text"},{"type":"codeVoice","code":"List"},{"text":" view. We recommend adding it if you don’t have such a place yet as this serves also as a reminder for Free users that you have paid features they might be interested in.","type":"text"}]}]}],"type":"orderedList"},{"type":"paragraph","inlineContent":[{"text":"If you need global access to the current user’s purchase status, you can call ","type":"text"},{"type":"codeVoice","code":"FreemiumKit.shared.purchasedTier"},{"text":" from anywhwere in your app (e.g. in your models).","type":"text"}]},{"type":"paragraph","inlineContent":[{"type":"text","text":"Make sure your project builds before moving on to the next step."}]},{"type":"heading","anchor":"Step-4-Remove-the-RevenueCat-SDK-integration-5-min","text":"Step 4: Remove the RevenueCat SDK integration (5 min)","level":3},{"type":"paragraph","inlineContent":[{"text":"Once you migrated all your code over to FreemiumKit, you can remove the RevenueCat SDK from your project. Once the dependency is removed, build your project to find places where you still are importing the RevenueCat SDKs and where you configuried it (probably in your app entry point). Remove the configuration code and all import statements. Your project should build now and the technical part of the migration process is completed! Feel free to commit. 🎉","type":"text"}]},{"type":"heading","anchor":"Step-5-Adjust-the-Paywall-UI-in-FremiumKit-5-min","text":"Step 5: Adjust the Paywall UI in FremiumKit (5 min)","level":3},{"type":"paragraph","inlineContent":[{"text":"While at this point your app is already fully migrated to FreemiumKit, you might want to open the FreemiumKit app, select your project and open the ‘Paywalls’ tab.","type":"text"}]},{"type":"paragraph","inlineContent":[{"type":"text","text":"Here you can see a preview of your paywall and adjust it with many configuration options. Feel free to play around with the options until you’re happy with the results and don’t forget to press ‘Save Changes to Remote’ at the end."}]},{"type":"paragraph","inlineContent":[{"text":"You might also want to optionally delete the ‘FreemiumKit’ config file from your Asset Catalog and drag & drop the now adjusted config file from the ‘Setup’ tab. This will make sure your adjustments are also available in case the remote config file can’t be loaded on the users devices, where FreemiumKit will fall back to the local file included in the Asset Catalog.","type":"text"}]},{"type":"heading","anchor":"Current-Limitations","text":"Current Limitations","level":3},{"type":"paragraph","inlineContent":[{"text":"If you have created more products on App Store Connect than you want to show in your paywall, you might want to wait until we have implemented a product selection for paywalls in a future version.","type":"text"}]},{"type":"paragraph","inlineContent":[{"text":"For example, if you have a Weekly, a Monthly, a Yearly, and a Lifetime purchase on Connect (and all of them are approved), then they all will be shown in our paywalls. If you want to exclude e.g. the Weekly purchase from your paywall, that’s currently not supported.","type":"text"}]},{"type":"heading","anchor":"Contact","text":"Contact","level":2},{"type":"paragraph","inlineContent":[{"text":"Have questions or need support? Reach out to me at ","type":"text"},{"identifier":"mailto:freemiumkit@fline.dev","isActive":true,"type":"reference"},{"text":".","type":"text"}]},{"type":"heading","anchor":"Legal","text":"Legal","level":2},{"type":"small","inlineContent":[{"text":"Cihat Gündüz © 2024. All rights reserved.","type":"text"},{"text":" ","type":"text"},{"text":"Privacy: No personal data is tracked on this site.","type":"text"},{"text":" ","type":"text"},{"identifier":"https:\/\/www.fline.dev\/imprint\/","isActive":true,"type":"reference"}]}],"kind":"content"}],"seeAlsoSections":[{"generated":true,"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits"]}],"abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"references":{"https://www.fline.dev/imprint/":{"type":"link","identifier":"https:\/\/www.fline.dev\/imprint\/","title":"Imprint","titleInlineContent":[{"text":"Imprint","type":"text"}],"url":"https:\/\/www.fline.dev\/imprint\/"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Validation":{"title":"Does FreemiumKit validate purchases?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","abstract":[{"type":"text","text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!"}],"url":"\/documentation\/freemiumkit\/faq-validation","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","identifier":"doc:\/\/FreemiumKit\/documentation\/Index","abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"images":[{"type":"icon","identifier":"FreemiumKit.png"}],"url":"\/documentation\/index","type":"topic","kind":"article","role":"collection"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Pricing":{"title":"How does the Pricing work in detail?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"url":"\/documentation\/freemiumkit\/faq-pricing","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ServerLimits":{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits","kind":"article","title":"How can I apply my custom server-side limits?","abstract":[{"text":"Learn how you can recognize a purchased user across app installs and devices to roll your own server-side logic for custom limits.","type":"text"}],"url":"\/documentation\/freemiumkit\/faq-serverlimits","type":"topic","role":"sampleCode"},"FreemiumKit.png":{"variants":[{"traits":["1x","light"],"url":"\/images\/FreemiumKit.png"}],"type":"image","identifier":"FreemiumKit.png","alt":null},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Privacy":{"title":"How does FreemiumKit handle User Privacy?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","abstract":[{"type":"text","text":"Learn how FreemiumKit was designed to keep your users data private and reduce the exposure of your purchase data to a minimum."}],"url":"\/documentation\/freemiumkit\/faq-privacy","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-HowItWorks":{"title":"How does FreemiumKit work? Can I trust it?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","abstract":[{"type":"text","text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app."}],"url":"\/documentation\/freemiumkit\/faq-howitworks","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs","abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"images":[{"type":"icon","identifier":"FreemiumKit.png"}],"url":"\/documentation\/freemiumkit\/faqs","type":"topic","kind":"article","role":"article"},"mailto:freemiumkit@fline.dev":{"type":"link","identifier":"mailto:freemiumkit@fline.dev","title":"freemiumkit@fline.dev","titleInlineContent":[{"text":"freemiumkit@fline.dev","type":"text"}],"url":"mailto:freemiumkit@fline.dev"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromPaidUpFront":{"title":"My app is paid-up-front. How can I make it Freemium?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","abstract":[{"type":"text","text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased."}],"url":"\/documentation\/freemiumkit\/faq-migratefrompaidupfront","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/SetupGuide":{"title":"SDK Setup Guide","abstract":[{"type":"text","text":"Learn how to set up your app for our paywalls and live push notifications."}],"role":"article","url":"\/documentation\/freemiumkit\/setupguide","kind":"article","type":"topic","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/SetupGuide","images":[{"type":"icon","identifier":"FreemiumKit.png"}]}}} \ No newline at end of file +{"metadata":{"roleHeading":"FAQs","role":"sampleCode","title":"I use RevenueCat, how can I migrate?"},"kind":"article","abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"seeAlsoSections":[{"generated":true,"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ParentalGate","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits"]}],"identifier":{"url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"]]},"primaryContentSections":[{"kind":"content","content":[{"text":"Short Answer","type":"heading","level":2,"anchor":"Short-Answer"},{"inlineContent":[{"type":"text","text":"Migrating from RevenueCat involves the following steps (outlined in detail below):"}],"type":"paragraph"},{"type":"orderedList","items":[{"content":[{"inlineContent":[{"text":"Set up your app & existing purchases in the FreemiumKit app (5 min)","type":"text"}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"text":"Integrate the FreemiumKit SDK into your app & configure it (5 min)","type":"text"}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"type":"text","text":"Replace RevenueCat SDK calls with FreemiumKit calls (10-15 min)"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Remove the RevenueCat SDK integration from your app (5 min)"}]}]},{"content":[{"inlineContent":[{"type":"text","text":"Adjust the Paywall UI in FreemiumKit to your liking (5 min)"}],"type":"paragraph"}]}]},{"inlineContent":[{"text":"Current limits: You can’t select products for the paywall at this moment – all of them are automatically shown. (This limitation will be fixed in a future version.)","type":"text"}],"type":"paragraph"},{"text":"Full Answer","type":"heading","level":2,"anchor":"Full-Answer"},{"text":"Step 1: Set up your app & purchases in FreemiumKit (5 min)","type":"heading","level":3,"anchor":"Step-1-Set-up-your-app--purchases-in-FreemiumKit-5-min"},{"type":"orderedList","items":[{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Download FreemiumKit and follow the simple instructions to connect to your App Store account if you’re starting it for the first time. This should take less than a minute."}]}]},{"content":[{"inlineContent":[{"text":"Now, press the + button at the top of the left sidebar and select the app you want to migrate and press “Add Project”.","type":"text"}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"type":"text","text":"Navigate to your apps “Products” tab and make sure that all purchases are listed there and have the correct tier set. Subscription tiers are detected automatically, but if you have a Lifetime Purchase, FreemiumKit can’t auto-detect the tier, so you need to press “Mark as Lifetime for Tier…” and select the right tier (most likely ‘Tier 1’)."}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"text":"Open the ‘Setup’ tab and drag & drop the config icon on the right to your apps’ Asset Catalog.","type":"text"}],"type":"paragraph"}]}]},{"text":"Step 2: Integrate FreemiumKit SDK & configure it (5 min)","type":"heading","level":3,"anchor":"Step-2-Integrate-FreemiumKit-SDK--configure-it-5-min"},{"inlineContent":[{"type":"text","text":"For this step, simply follow the ‘Adding the SDK’ and ‘Configuring the SDK’ sections of the "},{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/SetupGuide","type":"reference","isActive":true},{"type":"text","text":" – feel free to also read the rest of the guide to get a better understanding of the next step!"}],"type":"paragraph"},{"text":"Step 3: Replace RevenueCat SDK with our SDK calls (10-15 min)","type":"heading","level":3,"anchor":"Step-3-Replace-RevenueCat-SDK-with-our-SDK-calls-10-15-min"},{"inlineContent":[{"type":"text","text":"If you’ve been using RevenueCat with your own paywall UIs, we have good news because you no longer need to maintain your paywall code that loads ‘offerings’ and displays them – we all handle this for you!"}],"type":"paragraph"},{"inlineContent":[{"type":"text","text":"If this is the case, then somewhere in your project you’re checking if the current user has access to your paid features with either the async\/await call or the completion call below:"}],"type":"paragraph"},{"syntax":"swift","type":"codeListing","code":["\/\/ async\/await call","let customerInfo = try await Purchases.shared.customerInfo()","","\/\/ ","Purchases.shared.getCustomerInfo { (customerInfo, error) in"," \/\/ access latest customerInfo","}"]},{"inlineContent":[{"type":"text","text":"A quick search for "},{"code":"Purchases.shared.customerInfo()","type":"codeVoice"},{"type":"text","text":" and "},{"code":"Purchases.shared.getCustomerInfo","type":"codeVoice"},{"type":"text","text":" should reveal these places. You’ll have some logic based on "},{"code":"customerInfo","type":"codeVoice"},{"type":"text","text":" instance details that either gives the user access to your paid features or shows your paywall."}],"type":"paragraph"},{"inlineContent":[{"type":"text","text":"This logic can be completely replaced by one of our 3 APIs explained in the ‘Showing the Paywalls’ section in our "},{"type":"reference","isActive":true,"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/SetupGuide"},{"type":"text","text":":"}],"type":"paragraph"},{"type":"orderedList","items":[{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Use "},{"code":"PaidFeatureButton","type":"codeVoice"},{"type":"text","text":" or "},{"code":"PaidFeatureView","type":"codeVoice"},{"type":"text","text":" for buttons or custom views that should only work for paying customers. Both of these views will automatically show our built-in paywall if the user didn’t purchase the required paid tier yet. These are the easiest and therefore recommended APIs for most cases – and thanks to "},{"code":"PaidFeatureView","type":"codeVoice"},{"type":"text","text":" they’re quite flexible."}]}]},{"content":[{"type":"paragraph","inlineContent":[{"text":"You can also use the ","type":"text"},{"code":".paywall(isPresented:)","type":"codeVoice"},{"text":" SwiftUI modifier with a custom check for the ","type":"text"},{"code":"purchasedTier","type":"codeVoice"},{"text":" property of ","type":"text"},{"code":"@EnvironmentObject var freemiumKit: FreemiumKit","type":"codeVoice"},{"text":" added to your SwiftUI view(s). This is more similar to how the RevenueCat SDK works with either the manual paywall or their bult-in iOS paywalls, but we still provide the paywall UI for you. This requires more code on your end, but also gives you more control if needed.","type":"text"}]}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Our "},{"type":"codeVoice","code":"PaidStatusView"},{"type":"text","text":" is a special view that we pepared for use in places where you want to simply indicate the current paid status of the user. This is a common need in the settings screen of an app and usually inside a "},{"type":"codeVoice","code":"Form"},{"type":"text","text":" or "},{"type":"codeVoice","code":"List"},{"type":"text","text":" view. We recommend adding it if you don’t have such a place yet as this serves also as a reminder for Free users that you have paid features they might be interested in."}]}]}]},{"inlineContent":[{"type":"text","text":"If you need global access to the current user’s purchase status, you can call "},{"type":"codeVoice","code":"FreemiumKit.shared.purchasedTier"},{"type":"text","text":" from anywhwere in your app (e.g. in your models)."}],"type":"paragraph"},{"inlineContent":[{"type":"text","text":"Make sure your project builds before moving on to the next step."}],"type":"paragraph"},{"text":"Step 4: Remove the RevenueCat SDK integration (5 min)","type":"heading","level":3,"anchor":"Step-4-Remove-the-RevenueCat-SDK-integration-5-min"},{"inlineContent":[{"type":"text","text":"Once you migrated all your code over to FreemiumKit, you can remove the RevenueCat SDK from your project. Once the dependency is removed, build your project to find places where you still are importing the RevenueCat SDKs and where you configuried it (probably in your app entry point). Remove the configuration code and all import statements. Your project should build now and the technical part of the migration process is completed! Feel free to commit. 🎉"}],"type":"paragraph"},{"text":"Step 5: Adjust the Paywall UI in FremiumKit (5 min)","type":"heading","level":3,"anchor":"Step-5-Adjust-the-Paywall-UI-in-FremiumKit-5-min"},{"inlineContent":[{"type":"text","text":"While at this point your app is already fully migrated to FreemiumKit, you might want to open the FreemiumKit app, select your project and open the ‘Paywalls’ tab."}],"type":"paragraph"},{"inlineContent":[{"text":"Here you can see a preview of your paywall and adjust it with many configuration options. Feel free to play around with the options until you’re happy with the results and don’t forget to press ‘Save Changes to Remote’ at the end.","type":"text"}],"type":"paragraph"},{"inlineContent":[{"text":"You might also want to optionally delete the ‘FreemiumKit’ config file from your Asset Catalog and drag & drop the now adjusted config file from the ‘Setup’ tab. This will make sure your adjustments are also available in case the remote config file can’t be loaded on the users devices, where FreemiumKit will fall back to the local file included in the Asset Catalog.","type":"text"}],"type":"paragraph"},{"text":"Current Limitations","type":"heading","level":3,"anchor":"Current-Limitations"},{"inlineContent":[{"type":"text","text":"If you have created more products on App Store Connect than you want to show in your paywall, you might want to wait until we have implemented a product selection for paywalls in a future version."}],"type":"paragraph"},{"inlineContent":[{"text":"For example, if you have a Weekly, a Monthly, a Yearly, and a Lifetime purchase on Connect (and all of them are approved), then they all will be shown in our paywalls. If you want to exclude e.g. the Weekly purchase from your paywall, that’s currently not supported.","type":"text"}],"type":"paragraph"},{"text":"Contact","type":"heading","level":2,"anchor":"Contact"},{"inlineContent":[{"type":"text","text":"Have questions or need support? Reach out to me at "},{"type":"reference","identifier":"mailto:freemiumkit@fline.dev","isActive":true},{"type":"text","text":"."}],"type":"paragraph"},{"text":"Legal","type":"heading","level":2,"anchor":"Legal"},{"inlineContent":[{"text":"Cihat Gündüz © 2024. All rights reserved.","type":"text"},{"text":" ","type":"text"},{"text":"Privacy: No personal data is tracked on this site.","type":"text"},{"text":" ","type":"text"},{"isActive":true,"identifier":"https:\/\/www.fline.dev\/imprint\/","type":"reference"}],"type":"small"}]}],"sections":[],"references":{"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","url":"\/documentation\/freemiumkit\/faqs","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"kind":"article","type":"topic","role":"article","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Privacy":{"title":"How does FreemiumKit handle User Privacy?","url":"\/documentation\/freemiumkit\/faq-privacy","abstract":[{"type":"text","text":"Learn how FreemiumKit was designed to keep your users data private and reduce the exposure of your purchase data to a minimum."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-HowItWorks":{"title":"How does FreemiumKit work? Can I trust it?","url":"\/documentation\/freemiumkit\/faq-howitworks","abstract":[{"type":"text","text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Validation":{"title":"Does FreemiumKit validate purchases?","url":"\/documentation\/freemiumkit\/faq-validation","abstract":[{"type":"text","text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!"}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation"},"doc://FreemiumKit/documentation/FreemiumKit/SetupGuide":{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/SetupGuide","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"role":"article","type":"topic","abstract":[{"text":"Learn how to set up your app for our paywalls and live push notifications.","type":"text"}],"kind":"article","url":"\/documentation\/freemiumkit\/setupguide","title":"SDK Setup Guide"},"https://www.fline.dev/imprint/":{"title":"Imprint","identifier":"https:\/\/www.fline.dev\/imprint\/","titleInlineContent":[{"type":"text","text":"Imprint"}],"url":"https:\/\/www.fline.dev\/imprint\/","type":"link"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromPaidUpFront":{"title":"My app is paid-up-front. How can I make it Freemium?","url":"\/documentation\/freemiumkit\/faq-migratefrompaidupfront","abstract":[{"type":"text","text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Pricing":{"abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"type":"topic","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","title":"How does the Pricing work in detail?","kind":"article","url":"\/documentation\/freemiumkit\/faq-pricing","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ParentalGate":{"title":"Are ‘Made for Kids’ apps supported with a Parental Gate?","url":"\/documentation\/freemiumkit\/faq-parentalgate","abstract":[{"type":"text","text":"Learn how to use our built-in parental gate for apps ‘Made for Kids’ to comply with Apples guidelines and avoid accidental purchases by small children."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ParentalGate"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ServerLimits":{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits","title":"How can I apply my custom server-side limits?","abstract":[{"type":"text","text":"Learn how you can recognize a purchased user across app installs and devices to roll your own server-side logic for custom limits."}],"url":"\/documentation\/freemiumkit\/faq-serverlimits","role":"sampleCode","type":"topic","kind":"article"},"mailto:freemiumkit@fline.dev":{"title":"freemiumkit@fline.dev","identifier":"mailto:freemiumkit@fline.dev","titleInlineContent":[{"type":"text","text":"freemiumkit@fline.dev"}],"url":"mailto:freemiumkit@fline.dev","type":"link"},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","url":"\/documentation\/index","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"kind":"article","type":"topic","role":"collection","identifier":"doc:\/\/FreemiumKit\/documentation\/Index"},"FreemiumKit.png":{"variants":[{"traits":["1x","light"],"url":"\/images\/FreemiumKit.png"}],"identifier":"FreemiumKit.png","alt":null,"type":"image"}}} \ No newline at end of file diff --git a/data/documentation/freemiumkit/faq-parentalgate.json b/data/documentation/freemiumkit/faq-parentalgate.json new file mode 100644 index 0000000..0409672 --- /dev/null +++ b/data/documentation/freemiumkit/faq-parentalgate.json @@ -0,0 +1 @@ +{"sections":[],"kind":"article","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ParentalGate"},"seeAlsoSections":[{"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits"],"generated":true}],"schemaVersion":{"minor":3,"patch":0,"major":0},"primaryContentSections":[{"content":[{"type":"heading","anchor":"Short-Answer","level":2,"text":"Short Answer"},{"type":"paragraph","inlineContent":[{"text":"Yes, the FreemiumKit SDK ships with a built-in parental gate. Just call ","type":"text"},{"code":"FreemiumKit.shared.enableParentalGate(options:)","type":"codeVoice"},{"text":" upon app start.","type":"text"}]},{"type":"heading","anchor":"Full-Answer","level":2,"text":"Full Answer"},{"type":"paragraph","inlineContent":[{"type":"text","text":"We’ve built a simple math-based parental gate that will ask a random multiplication question with numbers from 2 to 10. This should be easy enough for any parent to solve, but tricky enough to avoid small children (6 or younger) accidentally getting into the paywall, as required by the "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/app-store\/review\/guidelines\/#kids-category"},{"type":"text","text":" for apps in the Kids category."}]},{"type":"paragraph","inlineContent":[{"type":"text","text":"Just tell our SDK that it should use a parental gate before showing the paywall upon app start, like this:"}]},{"type":"codeListing","syntax":"swift","code":["import FreemiumKit","","@main","struct AwesomeApp: App {"," init() {"," FreemiumKit.shared.enableParentalGate(options: ParentalGateOptions())"," }","}"]},{"type":"paragraph","inlineContent":[{"text":"This single line will already work! But it will use the default Settings app-like colors (black\/white\/accent) which can look boring.","type":"text"}]},{"type":"paragraph","inlineContent":[{"type":"text","text":"You probably want to customize the parental gate to look nicer to fit your apps playful color scheme, like this:"}]},{"type":"codeListing","syntax":"swift","code":["import FreemiumKit","","@main","struct AwesomeApp: App {"," init() {"," FreemiumKit.shared.enableParentalGate("," options: ParentalGateOptions("," background: .linearGradient("," LinearGradient("," gradient: Gradient(colors: [.blue, .purple]),"," startPoint: .topLeading, "," endPoint: .bottomTrailing"," )"," ),"," textColor: .white, "," submitButtonBackgroundColor: .green,"," submitButtonTitleColor: .white"," )"," )"," }","}"]},{"type":"paragraph","inlineContent":[{"text":"The result will look like this on iOS (and similar on other platforms):","type":"text"}]},{"type":"paragraph","inlineContent":[{"type":"image","identifier":"ParentalGate-Customized"}]},{"type":"heading","anchor":"Contact","level":2,"text":"Contact"},{"type":"paragraph","inlineContent":[{"text":"Have questions or need support? Reach out to me at ","type":"text"},{"identifier":"mailto:freemiumkit@fline.dev","type":"reference","isActive":true},{"text":".","type":"text"}]},{"type":"heading","anchor":"Legal","level":2,"text":"Legal"},{"type":"small","inlineContent":[{"text":"Cihat Gündüz © 2024. All rights reserved.","type":"text"},{"text":" ","type":"text"},{"text":"Privacy: No personal data is tracked on this site.","type":"text"},{"text":" ","type":"text"},{"isActive":true,"identifier":"https:\/\/www.fline.dev\/imprint\/","type":"reference"}]}],"kind":"content"}],"metadata":{"title":"Are ‘Made for Kids’ apps supported with a Parental Gate?","role":"sampleCode","roleHeading":"FAQs"},"abstract":[{"type":"text","text":"Learn how to use our built-in parental gate for apps ‘Made for Kids’ to comply with Apples guidelines and avoid accidental purchases by small children."}],"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"]]},"references":{"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromRevenueCat":{"title":"I use RevenueCat, how can I migrate?","url":"\/documentation\/freemiumkit\/faq-migratefromrevenuecat","abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat"},"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","url":"\/documentation\/freemiumkit\/faqs","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"kind":"article","type":"topic","role":"article","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"},"FreemiumKit.png":{"alt":null,"identifier":"FreemiumKit.png","type":"image","variants":[{"traits":["1x","light"],"url":"\/images\/FreemiumKit.png"}]},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","url":"\/documentation\/index","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"kind":"article","type":"topic","role":"collection","identifier":"doc:\/\/FreemiumKit\/documentation\/Index"},"ParentalGate-Customized":{"variants":[{"traits":["1x","light"],"url":"\/images\/ParentalGate-Customized.png"}],"identifier":"ParentalGate-Customized","type":"image","alt":null},"https://www.fline.dev/imprint/":{"identifier":"https:\/\/www.fline.dev\/imprint\/","type":"link","title":"Imprint","titleInlineContent":[{"text":"Imprint","type":"text"}],"url":"https:\/\/www.fline.dev\/imprint\/"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Validation":{"title":"Does FreemiumKit validate purchases?","url":"\/documentation\/freemiumkit\/faq-validation","abstract":[{"type":"text","text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!"}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ServerLimits":{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits","title":"How can I apply my custom server-side limits?","abstract":[{"type":"text","text":"Learn how you can recognize a purchased user across app installs and devices to roll your own server-side logic for custom limits."}],"url":"\/documentation\/freemiumkit\/faq-serverlimits","role":"sampleCode","type":"topic","kind":"article"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-HowItWorks":{"title":"How does FreemiumKit work? Can I trust it?","url":"\/documentation\/freemiumkit\/faq-howitworks","abstract":[{"type":"text","text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Privacy":{"title":"How does FreemiumKit handle User Privacy?","url":"\/documentation\/freemiumkit\/faq-privacy","abstract":[{"type":"text","text":"Learn how FreemiumKit was designed to keep your users data private and reduce the exposure of your purchase data to a minimum."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Pricing":{"abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"type":"topic","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","title":"How does the Pricing work in detail?","kind":"article","url":"\/documentation\/freemiumkit\/faq-pricing","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromPaidUpFront":{"title":"My app is paid-up-front. How can I make it Freemium?","url":"\/documentation\/freemiumkit\/faq-migratefrompaidupfront","abstract":[{"type":"text","text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront"},"mailto:freemiumkit@fline.dev":{"identifier":"mailto:freemiumkit@fline.dev","type":"link","title":"freemiumkit@fline.dev","titleInlineContent":[{"text":"freemiumkit@fline.dev","type":"text"}],"url":"mailto:freemiumkit@fline.dev"},"https://developer.apple.com/app-store/review/guidelines/#kids-category":{"identifier":"https:\/\/developer.apple.com\/app-store\/review\/guidelines\/#kids-category","type":"link","title":"App Store guidelines","titleInlineContent":[{"text":"App Store guidelines","type":"text"}],"url":"https:\/\/developer.apple.com\/app-store\/review\/guidelines\/#kids-category"}}} \ No newline at end of file diff --git a/data/documentation/freemiumkit/faq-pricing.json b/data/documentation/freemiumkit/faq-pricing.json index dbb751e..5481cd1 100644 --- a/data/documentation/freemiumkit/faq-pricing.json +++ b/data/documentation/freemiumkit/faq-pricing.json @@ -1 +1 @@ -{"seeAlsoSections":[{"generated":true,"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits"]}],"primaryContentSections":[{"content":[{"anchor":"Short-Answer","text":"Short Answer","level":2,"type":"heading"},{"inlineContent":[{"type":"text","text":"We build the average of your last 2 months total revenue reported to App Store Connect across all apps. If you exceed your current plan, you no longer will be able to update the paywall remote configuration, you won’t see the purchase stats, nor will you receive purchase notifications. But your app will continue to show your last paywall and purchases will continue to work in your apps."}],"type":"paragraph"},{"anchor":"Full-Answer","text":"Full Answer","level":2,"type":"heading"},{"inlineContent":[{"type":"text","text":"Income on App Store Connect can vary significantly, that’s why we’ve build a flexible and fair system for you:"}],"type":"paragraph"},{"inlineContent":[{"text":"Your monthly income is calculated by building the ","type":"text"},{"inlineContent":[{"text":"average of your last 2 months’ total revenue","type":"text"}],"type":"strong"},{"text":". This ensures that (1) you don’t have to upgrade if you exceeded just for one month and (2) you can downgrade quickly again when your business takes an unexpected dip.","type":"text"}],"type":"paragraph"},{"inlineContent":[{"text":"If you exceed your current plan, you don’t need to worry, nothing bad will happen. Everything in your app will continue to work as expected, including the paywalls and your last remote configuration and purchases. But you won’t be able to edit anything or see any data in FreemiumKit. So you will lose access to the paywall editor to adjust your paywall remotely or change A\/B testing settings. You also won’t be able to change your pricing through FreemiumKit or receive push notifications for live purchase stats. And you won’t see your purchase history stats.","type":"text"}],"type":"paragraph"},{"name":"Note","content":[{"inlineContent":[{"type":"text","text":"This is all how it’s "},{"type":"emphasis","inlineContent":[{"type":"text","text":"planned"}]},{"type":"text","text":" to work. Currently, there’s no payment at all and FreemiumKit is free to use for everyone. If you have any doubts about this system, don’t hesitate to contact me, I might adjust things as needed."}],"type":"paragraph"}],"style":"note","type":"aside"},{"anchor":"Contact","text":"Contact","level":2,"type":"heading"},{"inlineContent":[{"type":"text","text":"Have questions or need support? Reach out to me at "},{"identifier":"mailto:freemiumkit@fline.dev","isActive":true,"type":"reference"},{"type":"text","text":"."}],"type":"paragraph"},{"anchor":"Legal","text":"Legal","level":2,"type":"heading"},{"inlineContent":[{"type":"text","text":"Cihat Gündüz © 2024. All rights reserved."},{"type":"text","text":" "},{"type":"text","text":"Privacy: No personal data is tracked on this site."},{"type":"text","text":" "},{"type":"reference","isActive":true,"identifier":"https:\/\/www.fline.dev\/imprint\/"}],"type":"small"}],"kind":"content"}],"sections":[],"metadata":{"role":"sampleCode","roleHeading":"FAQs","title":"How does the Pricing work in detail?"},"kind":"article","abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing"},"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"https://www.fline.dev/imprint/":{"type":"link","titleInlineContent":[{"type":"text","text":"Imprint"}],"identifier":"https:\/\/www.fline.dev\/imprint\/","title":"Imprint","url":"https:\/\/www.fline.dev\/imprint\/"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Validation":{"title":"Does FreemiumKit validate purchases?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","abstract":[{"type":"text","text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!"}],"url":"\/documentation\/freemiumkit\/faq-validation","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","identifier":"doc:\/\/FreemiumKit\/documentation\/Index","abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"images":[{"type":"icon","identifier":"FreemiumKit.png"}],"url":"\/documentation\/index","type":"topic","kind":"article","role":"collection"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ServerLimits":{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits","kind":"article","title":"How can I apply my custom server-side limits?","abstract":[{"text":"Learn how you can recognize a purchased user across app installs and devices to roll your own server-side logic for custom limits.","type":"text"}],"url":"\/documentation\/freemiumkit\/faq-serverlimits","type":"topic","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromRevenueCat":{"title":"I use RevenueCat, how can I migrate?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"url":"\/documentation\/freemiumkit\/faq-migratefromrevenuecat","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Privacy":{"title":"How does FreemiumKit handle User Privacy?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","abstract":[{"type":"text","text":"Learn how FreemiumKit was designed to keep your users data private and reduce the exposure of your purchase data to a minimum."}],"url":"\/documentation\/freemiumkit\/faq-privacy","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-HowItWorks":{"title":"How does FreemiumKit work? Can I trust it?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","abstract":[{"type":"text","text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app."}],"url":"\/documentation\/freemiumkit\/faq-howitworks","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs","abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"images":[{"type":"icon","identifier":"FreemiumKit.png"}],"url":"\/documentation\/freemiumkit\/faqs","type":"topic","kind":"article","role":"article"},"FreemiumKit.png":{"alt":null,"type":"image","variants":[{"url":"\/images\/FreemiumKit.png","traits":["1x","light"]}],"identifier":"FreemiumKit.png"},"mailto:freemiumkit@fline.dev":{"type":"link","titleInlineContent":[{"type":"text","text":"freemiumkit@fline.dev"}],"identifier":"mailto:freemiumkit@fline.dev","title":"freemiumkit@fline.dev","url":"mailto:freemiumkit@fline.dev"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromPaidUpFront":{"title":"My app is paid-up-front. How can I make it Freemium?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","abstract":[{"type":"text","text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased."}],"url":"\/documentation\/freemiumkit\/faq-migratefrompaidupfront","type":"topic","kind":"article","role":"sampleCode"}}} \ No newline at end of file +{"identifier":{"url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","interfaceLanguage":"swift"},"seeAlsoSections":[{"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ParentalGate","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits"],"generated":true}],"metadata":{"role":"sampleCode","title":"How does the Pricing work in detail?","roleHeading":"FAQs"},"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"]]},"schemaVersion":{"major":0,"patch":0,"minor":3},"abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"primaryContentSections":[{"kind":"content","content":[{"anchor":"Short-Answer","type":"heading","level":2,"text":"Short Answer"},{"type":"paragraph","inlineContent":[{"type":"text","text":"We build the average of your last 2 months total revenue reported to App Store Connect across all apps. If you exceed your current plan, you no longer will be able to update the paywall remote configuration, you won’t see the purchase stats, nor will you receive purchase notifications. But your app will continue to show your last paywall and purchases will continue to work in your apps."}]},{"anchor":"Full-Answer","type":"heading","level":2,"text":"Full Answer"},{"type":"paragraph","inlineContent":[{"text":"Income on App Store Connect can vary significantly, that’s why we’ve build a flexible and fair system for you:","type":"text"}]},{"type":"paragraph","inlineContent":[{"text":"Your monthly income is calculated by building the ","type":"text"},{"type":"strong","inlineContent":[{"text":"average of your last 2 months’ total revenue","type":"text"}]},{"type":"text","text":". This ensures that (1) you don’t have to upgrade if you exceeded just for one month and (2) you can downgrade quickly again when your business takes an unexpected dip."}]},{"type":"paragraph","inlineContent":[{"type":"text","text":"If you exceed your current plan, you don’t need to worry, nothing bad will happen. Everything in your app will continue to work as expected, including the paywalls and your last remote configuration and purchases. But you won’t be able to edit anything or see any data in FreemiumKit. So you will lose access to the paywall editor to adjust your paywall remotely or change A\/B testing settings. You also won’t be able to change your pricing through FreemiumKit or receive push notifications for live purchase stats. And you won’t see your purchase history stats."}]},{"type":"aside","name":"Note","style":"note","content":[{"type":"paragraph","inlineContent":[{"text":"This is all how it’s ","type":"text"},{"type":"emphasis","inlineContent":[{"text":"planned","type":"text"}]},{"text":" to work. Currently, there’s no payment at all and FreemiumKit is free to use for everyone. If you have any doubts about this system, don’t hesitate to contact me, I might adjust things as needed.","type":"text"}]}]},{"anchor":"Contact","type":"heading","level":2,"text":"Contact"},{"type":"paragraph","inlineContent":[{"type":"text","text":"Have questions or need support? Reach out to me at "},{"type":"reference","isActive":true,"identifier":"mailto:freemiumkit@fline.dev"},{"type":"text","text":"."}]},{"anchor":"Legal","type":"heading","level":2,"text":"Legal"},{"type":"small","inlineContent":[{"text":"Cihat Gündüz © 2024. All rights reserved.","type":"text"},{"text":" ","type":"text"},{"text":"Privacy: No personal data is tracked on this site.","type":"text"},{"text":" ","type":"text"},{"type":"reference","isActive":true,"identifier":"https:\/\/www.fline.dev\/imprint\/"}]}]}],"sections":[],"kind":"article","references":{"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ServerLimits":{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits","title":"How can I apply my custom server-side limits?","abstract":[{"type":"text","text":"Learn how you can recognize a purchased user across app installs and devices to roll your own server-side logic for custom limits."}],"url":"\/documentation\/freemiumkit\/faq-serverlimits","role":"sampleCode","type":"topic","kind":"article"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromRevenueCat":{"title":"I use RevenueCat, how can I migrate?","url":"\/documentation\/freemiumkit\/faq-migratefromrevenuecat","abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat"},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","url":"\/documentation\/index","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"kind":"article","type":"topic","role":"collection","identifier":"doc:\/\/FreemiumKit\/documentation\/Index"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-HowItWorks":{"title":"How does FreemiumKit work? Can I trust it?","url":"\/documentation\/freemiumkit\/faq-howitworks","abstract":[{"type":"text","text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Validation":{"title":"Does FreemiumKit validate purchases?","url":"\/documentation\/freemiumkit\/faq-validation","abstract":[{"type":"text","text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!"}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Privacy":{"title":"How does FreemiumKit handle User Privacy?","url":"\/documentation\/freemiumkit\/faq-privacy","abstract":[{"type":"text","text":"Learn how FreemiumKit was designed to keep your users data private and reduce the exposure of your purchase data to a minimum."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy"},"mailto:freemiumkit@fline.dev":{"identifier":"mailto:freemiumkit@fline.dev","titleInlineContent":[{"type":"text","text":"freemiumkit@fline.dev"}],"title":"freemiumkit@fline.dev","type":"link","url":"mailto:freemiumkit@fline.dev"},"FreemiumKit.png":{"identifier":"FreemiumKit.png","variants":[{"traits":["1x","light"],"url":"\/images\/FreemiumKit.png"}],"alt":null,"type":"image"},"https://www.fline.dev/imprint/":{"identifier":"https:\/\/www.fline.dev\/imprint\/","titleInlineContent":[{"type":"text","text":"Imprint"}],"title":"Imprint","type":"link","url":"https:\/\/www.fline.dev\/imprint\/"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ParentalGate":{"title":"Are ‘Made for Kids’ apps supported with a Parental Gate?","url":"\/documentation\/freemiumkit\/faq-parentalgate","abstract":[{"type":"text","text":"Learn how to use our built-in parental gate for apps ‘Made for Kids’ to comply with Apples guidelines and avoid accidental purchases by small children."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ParentalGate"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromPaidUpFront":{"title":"My app is paid-up-front. How can I make it Freemium?","url":"\/documentation\/freemiumkit\/faq-migratefrompaidupfront","abstract":[{"type":"text","text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront"},"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","url":"\/documentation\/freemiumkit\/faqs","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"kind":"article","type":"topic","role":"article","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"}}} \ No newline at end of file diff --git a/data/documentation/freemiumkit/faq-privacy.json b/data/documentation/freemiumkit/faq-privacy.json index d089625..bd05a46 100644 --- a/data/documentation/freemiumkit/faq-privacy.json +++ b/data/documentation/freemiumkit/faq-privacy.json @@ -1 +1 @@ -{"seeAlsoSections":[{"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits"],"generated":true}],"primaryContentSections":[{"content":[{"text":"Short Answer","level":2,"type":"heading","anchor":"Short-Answer"},{"inlineContent":[{"text":"We don’t send any personal user data to our servers, respecting user privacy. And we delete purchase data from our servers as soon as they are fetched to your devices. Your purchase data is persisted via CloudKit. This ensures we can’t access your purchase history.","type":"text"}],"type":"paragraph"},{"text":"Full Answer","level":2,"type":"heading","anchor":"Full-Answer"},{"inlineContent":[{"text":"Firstly, we follow the principle of ","type":"text"},{"inlineContent":[{"text":"data minimization","type":"text"}],"type":"strong"},{"text":" and don’t send any personal data to our servers. The only data we send are the date and country of the purchase and the purchased product with its price. This way even if our servers were breached, there’s nothing useful to be obtained for attackers.","type":"text"}],"type":"paragraph"},{"inlineContent":[{"text":"Secondly, we ","type":"text"},{"inlineContent":[{"type":"text","text":"don’t keep the data for long"}],"type":"strong"},{"text":": The moment the FreemiumKit app on your devices successfully fetch the purchase data, they are deleted from our servers. If you install FreemiumKit on your iPhone and have push notifications turned on, this happens just seconds after a purchase was made, keeping the amount of data we store on our servers close to zero basically all the time.","type":"text"}],"type":"paragraph"},{"style":"tip","type":"aside","name":"Tip","content":[{"type":"paragraph","inlineContent":[{"text":"All our servers are hosted within the European Union (EU), ensuring your data complies with strict EU privacy laws, including GDPR, for enhanced protection and security.","type":"text"}]}]},{"inlineContent":[{"type":"text","text":"To ensure your data is backed up and syncs across devices, we use CloudKit. This way, even if you delete the FreemiumKit app or lose your device, you can just reinstall FreemiumKit on another device and your full purchase history statistics will stay available within the same Apple Account."}],"type":"paragraph"},{"inlineContent":[{"text":"If you happen to stop using the FreemiumKit app for some reason, new purchases are kept up to 90 days on our servers. So you’ll always be able to fetch tha last 90 days if you decide to return. If you have push notifications disabled, you need to open the app at least once every 90 days to not lose any purchase history data. If you returned after 100 days, you would lose 10 days of data, for example.","type":"text"}],"type":"paragraph"},{"inlineContent":[{"type":"text","text":"That’s why we strongly recommend to "},{"type":"strong","inlineContent":[{"type":"text","text":"keep push notifications enabled"}]},{"type":"text","text":" on FreemiumKit for iPhone, even if you don’t wish to actually receive push notifications. You can turn off push notifications within the FreemiumKit app, which will disable the local push notification sent by the app while woken up in the background by a silent push notification. This way, the app will continue fetching purchase data without bothering you with push notifications."}],"type":"paragraph"},{"text":"Contact","level":2,"type":"heading","anchor":"Contact"},{"inlineContent":[{"type":"text","text":"Have questions or need support? Reach out to me at "},{"type":"reference","isActive":true,"identifier":"mailto:freemiumkit@fline.dev"},{"type":"text","text":"."}],"type":"paragraph"},{"text":"Legal","level":2,"type":"heading","anchor":"Legal"},{"inlineContent":[{"text":"Cihat Gündüz © 2024. All rights reserved.","type":"text"},{"text":" ","type":"text"},{"text":"Privacy: No personal data is tracked on this site.","type":"text"},{"text":" ","type":"text"},{"identifier":"https:\/\/www.fline.dev\/imprint\/","type":"reference","isActive":true}],"type":"small"}],"kind":"content"}],"sections":[],"metadata":{"role":"sampleCode","roleHeading":"FAQs","title":"How does FreemiumKit handle User Privacy?"},"kind":"article","abstract":[{"text":"Learn how FreemiumKit was designed to keep your users data private and reduce the exposure of your purchase data to a minimum.","type":"text"}],"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"]]},"identifier":{"url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs","abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"images":[{"type":"icon","identifier":"FreemiumKit.png"}],"url":"\/documentation\/freemiumkit\/faqs","type":"topic","kind":"article","role":"article"},"mailto:freemiumkit@fline.dev":{"type":"link","titleInlineContent":[{"type":"text","text":"freemiumkit@fline.dev"}],"identifier":"mailto:freemiumkit@fline.dev","title":"freemiumkit@fline.dev","url":"mailto:freemiumkit@fline.dev"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-HowItWorks":{"title":"How does FreemiumKit work? Can I trust it?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","abstract":[{"type":"text","text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app."}],"url":"\/documentation\/freemiumkit\/faq-howitworks","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromPaidUpFront":{"title":"My app is paid-up-front. How can I make it Freemium?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","abstract":[{"type":"text","text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased."}],"url":"\/documentation\/freemiumkit\/faq-migratefrompaidupfront","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Validation":{"title":"Does FreemiumKit validate purchases?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","abstract":[{"type":"text","text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!"}],"url":"\/documentation\/freemiumkit\/faq-validation","type":"topic","kind":"article","role":"sampleCode"},"https://www.fline.dev/imprint/":{"type":"link","titleInlineContent":[{"type":"text","text":"Imprint"}],"identifier":"https:\/\/www.fline.dev\/imprint\/","title":"Imprint","url":"https:\/\/www.fline.dev\/imprint\/"},"FreemiumKit.png":{"alt":null,"type":"image","variants":[{"url":"\/images\/FreemiumKit.png","traits":["1x","light"]}],"identifier":"FreemiumKit.png"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromRevenueCat":{"title":"I use RevenueCat, how can I migrate?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"url":"\/documentation\/freemiumkit\/faq-migratefromrevenuecat","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Pricing":{"title":"How does the Pricing work in detail?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"url":"\/documentation\/freemiumkit\/faq-pricing","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ServerLimits":{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits","kind":"article","title":"How can I apply my custom server-side limits?","abstract":[{"text":"Learn how you can recognize a purchased user across app installs and devices to roll your own server-side logic for custom limits.","type":"text"}],"url":"\/documentation\/freemiumkit\/faq-serverlimits","type":"topic","role":"sampleCode"},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","identifier":"doc:\/\/FreemiumKit\/documentation\/Index","abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"images":[{"type":"icon","identifier":"FreemiumKit.png"}],"url":"\/documentation\/index","type":"topic","kind":"article","role":"collection"}}} \ No newline at end of file +{"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"seeAlsoSections":[{"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ParentalGate","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits"],"generated":true}],"abstract":[{"type":"text","text":"Learn how FreemiumKit was designed to keep your users data private and reduce the exposure of your purchase data to a minimum."}],"kind":"article","metadata":{"roleHeading":"FAQs","role":"sampleCode","title":"How does FreemiumKit handle User Privacy?"},"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"]]},"primaryContentSections":[{"content":[{"type":"heading","anchor":"Short-Answer","level":2,"text":"Short Answer"},{"type":"paragraph","inlineContent":[{"text":"We don’t send any personal user data to our servers, respecting user privacy. And we delete purchase data from our servers as soon as they are fetched to your devices. Your purchase data is persisted via CloudKit. This ensures we can’t access your purchase history.","type":"text"}]},{"type":"heading","anchor":"Full-Answer","level":2,"text":"Full Answer"},{"type":"paragraph","inlineContent":[{"text":"Firstly, we follow the principle of ","type":"text"},{"inlineContent":[{"type":"text","text":"data minimization"}],"type":"strong"},{"text":" and don’t send any personal data to our servers. The only data we send are the date and country of the purchase and the purchased product with its price. This way even if our servers were breached, there’s nothing useful to be obtained for attackers.","type":"text"}]},{"type":"paragraph","inlineContent":[{"type":"text","text":"Secondly, we "},{"type":"strong","inlineContent":[{"type":"text","text":"don’t keep the data for long"}]},{"type":"text","text":": The moment the FreemiumKit app on your devices successfully fetch the purchase data, they are deleted from our servers. If you install FreemiumKit on your iPhone and have push notifications turned on, this happens just seconds after a purchase was made, keeping the amount of data we store on our servers close to zero basically all the time."}]},{"type":"aside","style":"tip","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"All our servers are hosted within the European Union (EU), ensuring your data complies with strict EU privacy laws, including GDPR, for enhanced protection and security."}]}],"name":"Tip"},{"type":"paragraph","inlineContent":[{"text":"To ensure your data is backed up and syncs across devices, we use CloudKit. This way, even if you delete the FreemiumKit app or lose your device, you can just reinstall FreemiumKit on another device and your full purchase history statistics will stay available within the same Apple Account.","type":"text"}]},{"type":"paragraph","inlineContent":[{"text":"If you happen to stop using the FreemiumKit app for some reason, new purchases are kept up to 90 days on our servers. So you’ll always be able to fetch tha last 90 days if you decide to return. If you have push notifications disabled, you need to open the app at least once every 90 days to not lose any purchase history data. If you returned after 100 days, you would lose 10 days of data, for example.","type":"text"}]},{"type":"paragraph","inlineContent":[{"text":"That’s why we strongly recommend to ","type":"text"},{"type":"strong","inlineContent":[{"text":"keep push notifications enabled","type":"text"}]},{"text":" on FreemiumKit for iPhone, even if you don’t wish to actually receive push notifications. You can turn off push notifications within the FreemiumKit app, which will disable the local push notification sent by the app while woken up in the background by a silent push notification. This way, the app will continue fetching purchase data without bothering you with push notifications.","type":"text"}]},{"type":"heading","anchor":"Contact","level":2,"text":"Contact"},{"type":"paragraph","inlineContent":[{"text":"Have questions or need support? Reach out to me at ","type":"text"},{"identifier":"mailto:freemiumkit@fline.dev","isActive":true,"type":"reference"},{"text":".","type":"text"}]},{"type":"heading","anchor":"Legal","level":2,"text":"Legal"},{"type":"small","inlineContent":[{"text":"Cihat Gündüz © 2024. All rights reserved.","type":"text"},{"text":" ","type":"text"},{"text":"Privacy: No personal data is tracked on this site.","type":"text"},{"text":" ","type":"text"},{"isActive":true,"identifier":"https:\/\/www.fline.dev\/imprint\/","type":"reference"}]}],"kind":"content"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy"},"references":{"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Pricing":{"abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"type":"topic","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","title":"How does the Pricing work in detail?","kind":"article","url":"\/documentation\/freemiumkit\/faq-pricing","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Validation":{"title":"Does FreemiumKit validate purchases?","url":"\/documentation\/freemiumkit\/faq-validation","abstract":[{"type":"text","text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!"}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation"},"https://www.fline.dev/imprint/":{"identifier":"https:\/\/www.fline.dev\/imprint\/","type":"link","title":"Imprint","titleInlineContent":[{"text":"Imprint","type":"text"}],"url":"https:\/\/www.fline.dev\/imprint\/"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-HowItWorks":{"title":"How does FreemiumKit work? Can I trust it?","url":"\/documentation\/freemiumkit\/faq-howitworks","abstract":[{"type":"text","text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ParentalGate":{"title":"Are ‘Made for Kids’ apps supported with a Parental Gate?","url":"\/documentation\/freemiumkit\/faq-parentalgate","abstract":[{"type":"text","text":"Learn how to use our built-in parental gate for apps ‘Made for Kids’ to comply with Apples guidelines and avoid accidental purchases by small children."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ParentalGate"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromPaidUpFront":{"title":"My app is paid-up-front. How can I make it Freemium?","url":"\/documentation\/freemiumkit\/faq-migratefrompaidupfront","abstract":[{"type":"text","text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront"},"mailto:freemiumkit@fline.dev":{"identifier":"mailto:freemiumkit@fline.dev","type":"link","title":"freemiumkit@fline.dev","titleInlineContent":[{"text":"freemiumkit@fline.dev","type":"text"}],"url":"mailto:freemiumkit@fline.dev"},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","url":"\/documentation\/index","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"kind":"article","type":"topic","role":"collection","identifier":"doc:\/\/FreemiumKit\/documentation\/Index"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromRevenueCat":{"title":"I use RevenueCat, how can I migrate?","url":"\/documentation\/freemiumkit\/faq-migratefromrevenuecat","abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat"},"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","url":"\/documentation\/freemiumkit\/faqs","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"kind":"article","type":"topic","role":"article","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ServerLimits":{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits","title":"How can I apply my custom server-side limits?","abstract":[{"type":"text","text":"Learn how you can recognize a purchased user across app installs and devices to roll your own server-side logic for custom limits."}],"url":"\/documentation\/freemiumkit\/faq-serverlimits","role":"sampleCode","type":"topic","kind":"article"},"FreemiumKit.png":{"variants":[{"url":"\/images\/FreemiumKit.png","traits":["1x","light"]}],"identifier":"FreemiumKit.png","type":"image","alt":null}}} \ No newline at end of file diff --git a/data/documentation/freemiumkit/faq-serverlimits.json b/data/documentation/freemiumkit/faq-serverlimits.json index 7937d6a..393b35a 100644 --- a/data/documentation/freemiumkit/faq-serverlimits.json +++ b/data/documentation/freemiumkit/faq-serverlimits.json @@ -1 +1 @@ -{"identifier":{"url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits","interfaceLanguage":"swift"},"sections":[],"kind":"article","metadata":{"title":"How can I apply my custom server-side limits?","roleHeading":"FAQs","role":"sampleCode"},"seeAlsoSections":[{"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront"],"generated":true}],"schemaVersion":{"patch":0,"major":0,"minor":3},"abstract":[{"text":"Learn how you can recognize a purchased user across app installs and devices to roll your own server-side logic for custom limits.","type":"text"}],"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"]]},"primaryContentSections":[{"kind":"content","content":[{"level":2,"type":"heading","text":"Short Answer","anchor":"Short-Answer"},{"type":"paragraph","inlineContent":[{"type":"text","text":"FreemiumKit uses the built-in "},{"type":"codeVoice","code":"appDeviceToken"},{"type":"text","text":" in StoreKit 2 to recognize the same user across app installs and devices. You can access it from the "},{"type":"codeVoice","code":"FreemiumKit"},{"type":"text","text":" instance either using the "},{"type":"codeVoice","code":"@EnvironmentObject"},{"type":"text","text":" method or globally via "},{"type":"codeVoice","code":"FreemiumKit.shared.appDeviceToken"},{"type":"text","text":"."}]},{"level":2,"type":"heading","text":"Full Answer","anchor":"Full-Answer"},{"type":"paragraph","inlineContent":[{"text":"If you have your own server-side logic for locking\/unlocking functionality based on usage (such as ‘100 posts per month’), you will want to identify the same user across app installs or devices. To do this, you can access ","type":"text"},{"code":"appAccountToken","type":"codeVoice"},{"text":" on the ","type":"text"},{"code":"FreemiumKit","type":"codeVoice"},{"text":" environment object which will return a ","type":"text"},{"code":"UUID","type":"codeVoice"},{"text":" stored right within StoreKit (so Apple makes sure you recognize the same user across devices – we don’t that data on our servers).","type":"text"}]},{"type":"paragraph","inlineContent":[{"text":"Access the field only after purchases are loaded like so:","type":"text"}]},{"syntax":"swift","type":"codeListing","code":["import FreemiumKit","","struct MyView: View {"," @EnvironmentObject private var freemiumKit: FreemiumKit",""," var body: some View {"," VStack {"," \/\/ your main view ..."," }"," .onAppear {"," if freemiumkit.purchasesLoaded {"," let appAccountToken: UUID = freemiumKit.appAccountToken"," \/\/ do something with the app account token"," }"," }"," .onChange(of: freemiumKit.purchasesLoaded) {"," if freemiumkit.purchasesLoaded {"," let appAccountToken: UUID = freemiumKit.appAccountToken"," \/\/ do something with the app account token"," }"," }"," }","}"]},{"type":"paragraph","inlineContent":[{"type":"text","text":"You can also access it globally via "},{"type":"codeVoice","code":"FreemiumKit.shared.appAccountToken"},{"type":"text","text":" but make sure that "},{"type":"codeVoice","code":"FreemiumKit.shared.purchasesLoad"},{"type":"text","text":" is "},{"type":"codeVoice","code":"true"},{"type":"text","text":", else you won’t get the correct "},{"type":"codeVoice","code":"UUID"},{"type":"text","text":". Note that FreemiumKit loads this data upon app start and caches it, so most of the time it should be available."}]},{"level":2,"type":"heading","text":"Contact","anchor":"Contact"},{"type":"paragraph","inlineContent":[{"text":"Have questions or need support? Reach out to me at ","type":"text"},{"isActive":true,"identifier":"mailto:freemiumkit@fline.dev","type":"reference"},{"text":".","type":"text"}]},{"level":2,"type":"heading","text":"Legal","anchor":"Legal"},{"type":"small","inlineContent":[{"text":"Cihat Gündüz © 2024. All rights reserved.","type":"text"},{"text":" ","type":"text"},{"text":"Privacy: No personal data is tracked on this site.","type":"text"},{"text":" ","type":"text"},{"isActive":true,"identifier":"https:\/\/www.fline.dev\/imprint\/","type":"reference"}]}]}],"references":{"https://www.fline.dev/imprint/":{"title":"Imprint","identifier":"https:\/\/www.fline.dev\/imprint\/","titleInlineContent":[{"type":"text","text":"Imprint"}],"url":"https:\/\/www.fline.dev\/imprint\/","type":"link"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Validation":{"title":"Does FreemiumKit validate purchases?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","abstract":[{"type":"text","text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!"}],"url":"\/documentation\/freemiumkit\/faq-validation","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Pricing":{"title":"How does the Pricing work in detail?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"url":"\/documentation\/freemiumkit\/faq-pricing","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","identifier":"doc:\/\/FreemiumKit\/documentation\/Index","abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"images":[{"type":"icon","identifier":"FreemiumKit.png"}],"url":"\/documentation\/index","type":"topic","kind":"article","role":"collection"},"FreemiumKit.png":{"identifier":"FreemiumKit.png","alt":null,"type":"image","variants":[{"url":"\/images\/FreemiumKit.png","traits":["1x","light"]}]},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromRevenueCat":{"title":"I use RevenueCat, how can I migrate?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"url":"\/documentation\/freemiumkit\/faq-migratefromrevenuecat","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Privacy":{"title":"How does FreemiumKit handle User Privacy?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","abstract":[{"type":"text","text":"Learn how FreemiumKit was designed to keep your users data private and reduce the exposure of your purchase data to a minimum."}],"url":"\/documentation\/freemiumkit\/faq-privacy","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-HowItWorks":{"title":"How does FreemiumKit work? Can I trust it?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","abstract":[{"type":"text","text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app."}],"url":"\/documentation\/freemiumkit\/faq-howitworks","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs","abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"images":[{"type":"icon","identifier":"FreemiumKit.png"}],"url":"\/documentation\/freemiumkit\/faqs","type":"topic","kind":"article","role":"article"},"mailto:freemiumkit@fline.dev":{"title":"freemiumkit@fline.dev","identifier":"mailto:freemiumkit@fline.dev","titleInlineContent":[{"type":"text","text":"freemiumkit@fline.dev"}],"url":"mailto:freemiumkit@fline.dev","type":"link"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromPaidUpFront":{"title":"My app is paid-up-front. How can I make it Freemium?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","abstract":[{"type":"text","text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased."}],"url":"\/documentation\/freemiumkit\/faq-migratefrompaidupfront","type":"topic","kind":"article","role":"sampleCode"}}} \ No newline at end of file +{"metadata":{"title":"How can I apply my custom server-side limits?","roleHeading":"FAQs","role":"sampleCode"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits"},"kind":"article","schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"abstract":[{"type":"text","text":"Learn how you can recognize a purchased user across app installs and devices to roll your own server-side logic for custom limits."}],"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"]]},"seeAlsoSections":[{"generated":true,"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ParentalGate"]}],"primaryContentSections":[{"kind":"content","content":[{"anchor":"Short-Answer","type":"heading","level":2,"text":"Short Answer"},{"type":"paragraph","inlineContent":[{"type":"text","text":"FreemiumKit uses the built-in "},{"code":"appDeviceToken","type":"codeVoice"},{"type":"text","text":" in StoreKit 2 to recognize the same user across app installs and devices. You can access it from the "},{"code":"FreemiumKit","type":"codeVoice"},{"type":"text","text":" instance either using the "},{"code":"@EnvironmentObject","type":"codeVoice"},{"type":"text","text":" method or globally via "},{"code":"FreemiumKit.shared.appDeviceToken","type":"codeVoice"},{"type":"text","text":"."}]},{"anchor":"Full-Answer","type":"heading","level":2,"text":"Full Answer"},{"type":"paragraph","inlineContent":[{"type":"text","text":"If you have your own server-side logic for locking\/unlocking functionality based on usage (such as ‘100 posts per month’), you will want to identify the same user across app installs or devices. To do this, you can access "},{"type":"codeVoice","code":"appAccountToken"},{"type":"text","text":" on the "},{"type":"codeVoice","code":"FreemiumKit"},{"type":"text","text":" environment object which will return a "},{"type":"codeVoice","code":"UUID"},{"type":"text","text":" stored right within StoreKit (so Apple makes sure you recognize the same user across devices – we don’t that data on our servers)."}]},{"type":"paragraph","inlineContent":[{"type":"text","text":"Access the field only after purchases are loaded like so:"}]},{"type":"codeListing","code":["import FreemiumKit","","struct MyView: View {"," @EnvironmentObject private var freemiumKit: FreemiumKit",""," var body: some View {"," VStack {"," \/\/ your main view ..."," }"," .onAppear {"," if freemiumkit.purchasesLoaded {"," let appAccountToken: UUID = freemiumKit.appAccountToken"," \/\/ do something with the app account token"," }"," }"," .onChange(of: freemiumKit.purchasesLoaded) {"," if freemiumkit.purchasesLoaded {"," let appAccountToken: UUID = freemiumKit.appAccountToken"," \/\/ do something with the app account token"," }"," }"," }","}"],"syntax":"swift"},{"type":"paragraph","inlineContent":[{"text":"You can also access it globally via ","type":"text"},{"code":"FreemiumKit.shared.appAccountToken","type":"codeVoice"},{"text":" but make sure that ","type":"text"},{"code":"FreemiumKit.shared.purchasesLoad","type":"codeVoice"},{"text":" is ","type":"text"},{"code":"true","type":"codeVoice"},{"text":", else you won’t get the correct ","type":"text"},{"code":"UUID","type":"codeVoice"},{"text":". Note that FreemiumKit loads this data upon app start and caches it, so most of the time it should be available.","type":"text"}]},{"anchor":"Contact","type":"heading","level":2,"text":"Contact"},{"type":"paragraph","inlineContent":[{"type":"text","text":"Have questions or need support? Reach out to me at "},{"isActive":true,"type":"reference","identifier":"mailto:freemiumkit@fline.dev"},{"type":"text","text":"."}]},{"anchor":"Legal","type":"heading","level":2,"text":"Legal"},{"type":"small","inlineContent":[{"text":"Cihat Gündüz © 2024. All rights reserved.","type":"text"},{"text":" ","type":"text"},{"text":"Privacy: No personal data is tracked on this site.","type":"text"},{"text":" ","type":"text"},{"isActive":true,"identifier":"https:\/\/www.fline.dev\/imprint\/","type":"reference"}]}]}],"references":{"mailto:freemiumkit@fline.dev":{"type":"link","identifier":"mailto:freemiumkit@fline.dev","title":"freemiumkit@fline.dev","titleInlineContent":[{"type":"text","text":"freemiumkit@fline.dev"}],"url":"mailto:freemiumkit@fline.dev"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Pricing":{"abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"type":"topic","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","title":"How does the Pricing work in detail?","kind":"article","url":"\/documentation\/freemiumkit\/faq-pricing","role":"sampleCode"},"FreemiumKit.png":{"variants":[{"url":"\/images\/FreemiumKit.png","traits":["1x","light"]}],"alt":null,"type":"image","identifier":"FreemiumKit.png"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-HowItWorks":{"title":"How does FreemiumKit work? Can I trust it?","url":"\/documentation\/freemiumkit\/faq-howitworks","abstract":[{"type":"text","text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromPaidUpFront":{"title":"My app is paid-up-front. How can I make it Freemium?","url":"\/documentation\/freemiumkit\/faq-migratefrompaidupfront","abstract":[{"type":"text","text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront"},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","url":"\/documentation\/index","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"kind":"article","type":"topic","role":"collection","identifier":"doc:\/\/FreemiumKit\/documentation\/Index"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromRevenueCat":{"title":"I use RevenueCat, how can I migrate?","url":"\/documentation\/freemiumkit\/faq-migratefromrevenuecat","abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Privacy":{"title":"How does FreemiumKit handle User Privacy?","url":"\/documentation\/freemiumkit\/faq-privacy","abstract":[{"type":"text","text":"Learn how FreemiumKit was designed to keep your users data private and reduce the exposure of your purchase data to a minimum."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Validation":{"title":"Does FreemiumKit validate purchases?","url":"\/documentation\/freemiumkit\/faq-validation","abstract":[{"type":"text","text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!"}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ParentalGate":{"title":"Are ‘Made for Kids’ apps supported with a Parental Gate?","url":"\/documentation\/freemiumkit\/faq-parentalgate","abstract":[{"type":"text","text":"Learn how to use our built-in parental gate for apps ‘Made for Kids’ to comply with Apples guidelines and avoid accidental purchases by small children."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ParentalGate"},"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","url":"\/documentation\/freemiumkit\/faqs","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"kind":"article","type":"topic","role":"article","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"},"https://www.fline.dev/imprint/":{"title":"Imprint","url":"https:\/\/www.fline.dev\/imprint\/","titleInlineContent":[{"type":"text","text":"Imprint"}],"type":"link","identifier":"https:\/\/www.fline.dev\/imprint\/"}}} \ No newline at end of file diff --git a/data/documentation/freemiumkit/faq-validation.json b/data/documentation/freemiumkit/faq-validation.json index 7819aa3..c644436 100644 --- a/data/documentation/freemiumkit/faq-validation.json +++ b/data/documentation/freemiumkit/faq-validation.json @@ -1 +1 @@ -{"schemaVersion":{"minor":3,"major":0,"patch":0},"seeAlsoSections":[{"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits"],"generated":true}],"abstract":[{"text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!","type":"text"}],"kind":"article","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation"},"sections":[],"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"]]},"primaryContentSections":[{"content":[{"text":"Short Answer","anchor":"Short-Answer","type":"heading","level":2},{"inlineContent":[{"text":"Yes, we handle validation automatically and only report purchases that have been verified by the App Store. No action needed on your end, it all happens within our SDK automatically.","type":"text"}],"type":"paragraph"},{"level":2,"text":"Full Answer","anchor":"Full-Answer","type":"heading"},{"inlineContent":[{"text":"The FreemiumKit SDK is built on top of StoreKit 2, which automatically verifies any transaction is “signed by the App Store for ","type":"text"},{"inlineContent":[{"type":"text","text":"my"}],"type":"emphasis"},{"text":" app for ","type":"text"},{"inlineContent":[{"text":"this","type":"text"}],"type":"emphasis"},{"text":" device” (quote from WWDC22 session ","type":"text"},{"isActive":true,"identifier":"https:\/\/developer.apple.com\/videos\/play\/wwdc2021\/10114\/?time=694","type":"reference"},{"text":"). StoreKit 2 leaves developers the choice to accept even unverified purchases. But FreemiumKit doesn’t do that, it simply ","type":"text"},{"inlineContent":[{"type":"text","text":"always"}],"type":"strong"},{"text":" ignores unverified purchases. When FreemiumKit reports a purchase, it has already successfully passed transaction verification. 💯","type":"text"}],"type":"paragraph"},{"inlineContent":[{"type":"text","text":"While StoreKit 2 makes sure a transaction is coming from Apple and has not been tampered with, it’s still possible that a highly skilled attacker could tamper with the devices memory or the app logic on a jailbroken device to bypass these checks. It is possible to guard against these kinds of attacks with additional server-side validation and by moving some of the paid feature logic to your servers."}],"type":"paragraph"},{"inlineContent":[{"type":"text","text":"The complexity of such an attack is very high though and most apps are vulnerable to it even with server-side receipt validation because the attacker can simply bypass the boolean check inside the apps logic if they have this level of access to your apps code. Protecting against all potential security risks is impossible and we think that the built-in transaction verification is a good level of security for most apps."}],"type":"paragraph"},{"level":2,"text":"Contact","anchor":"Contact","type":"heading"},{"inlineContent":[{"type":"text","text":"Have questions or need support? Reach out to me at "},{"isActive":true,"type":"reference","identifier":"mailto:freemiumkit@fline.dev"},{"type":"text","text":"."}],"type":"paragraph"},{"level":2,"text":"Legal","anchor":"Legal","type":"heading"},{"inlineContent":[{"text":"Cihat Gündüz © 2024. All rights reserved.","type":"text"},{"text":" ","type":"text"},{"text":"Privacy: No personal data is tracked on this site.","type":"text"},{"text":" ","type":"text"},{"identifier":"https:\/\/www.fline.dev\/imprint\/","isActive":true,"type":"reference"}],"type":"small"}],"kind":"content"}],"metadata":{"title":"Does FreemiumKit validate purchases?","role":"sampleCode","roleHeading":"FAQs"},"references":{"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs","abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"images":[{"type":"icon","identifier":"FreemiumKit.png"}],"url":"\/documentation\/freemiumkit\/faqs","type":"topic","kind":"article","role":"article"},"mailto:freemiumkit@fline.dev":{"type":"link","titleInlineContent":[{"type":"text","text":"freemiumkit@fline.dev"}],"url":"mailto:freemiumkit@fline.dev","identifier":"mailto:freemiumkit@fline.dev","title":"freemiumkit@fline.dev"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-HowItWorks":{"title":"How does FreemiumKit work? Can I trust it?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","abstract":[{"type":"text","text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app."}],"url":"\/documentation\/freemiumkit\/faq-howitworks","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromPaidUpFront":{"title":"My app is paid-up-front. How can I make it Freemium?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","abstract":[{"type":"text","text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased."}],"url":"\/documentation\/freemiumkit\/faq-migratefrompaidupfront","type":"topic","kind":"article","role":"sampleCode"},"https://developer.apple.com/videos/play/wwdc2021/10114/?time=694":{"type":"link","titleInlineContent":[{"type":"text","text":"Meet StoreKit 2"}],"url":"https:\/\/developer.apple.com\/videos\/play\/wwdc2021\/10114\/?time=694","identifier":"https:\/\/developer.apple.com\/videos\/play\/wwdc2021\/10114\/?time=694","title":"Meet StoreKit 2"},"https://www.fline.dev/imprint/":{"type":"link","titleInlineContent":[{"type":"text","text":"Imprint"}],"url":"https:\/\/www.fline.dev\/imprint\/","identifier":"https:\/\/www.fline.dev\/imprint\/","title":"Imprint"},"FreemiumKit.png":{"type":"image","alt":null,"identifier":"FreemiumKit.png","variants":[{"traits":["1x","light"],"url":"\/images\/FreemiumKit.png"}]},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromRevenueCat":{"title":"I use RevenueCat, how can I migrate?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"url":"\/documentation\/freemiumkit\/faq-migratefromrevenuecat","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Privacy":{"title":"How does FreemiumKit handle User Privacy?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","abstract":[{"type":"text","text":"Learn how FreemiumKit was designed to keep your users data private and reduce the exposure of your purchase data to a minimum."}],"url":"\/documentation\/freemiumkit\/faq-privacy","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Pricing":{"title":"How does the Pricing work in detail?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"url":"\/documentation\/freemiumkit\/faq-pricing","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ServerLimits":{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits","kind":"article","title":"How can I apply my custom server-side limits?","abstract":[{"text":"Learn how you can recognize a purchased user across app installs and devices to roll your own server-side logic for custom limits.","type":"text"}],"url":"\/documentation\/freemiumkit\/faq-serverlimits","type":"topic","role":"sampleCode"},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","identifier":"doc:\/\/FreemiumKit\/documentation\/Index","abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"images":[{"type":"icon","identifier":"FreemiumKit.png"}],"url":"\/documentation\/index","type":"topic","kind":"article","role":"collection"}}} \ No newline at end of file +{"schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"title":"Does FreemiumKit validate purchases?","roleHeading":"FAQs","role":"sampleCode"},"abstract":[{"type":"text","text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!"}],"kind":"article","identifier":{"url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","interfaceLanguage":"swift"},"primaryContentSections":[{"content":[{"type":"heading","anchor":"Short-Answer","level":2,"text":"Short Answer"},{"type":"paragraph","inlineContent":[{"text":"Yes, we handle validation automatically and only report purchases that have been verified by the App Store. No action needed on your end, it all happens within our SDK automatically.","type":"text"}]},{"type":"heading","anchor":"Full-Answer","level":2,"text":"Full Answer"},{"type":"paragraph","inlineContent":[{"type":"text","text":"The FreemiumKit SDK is built on top of StoreKit 2, which automatically verifies any transaction is “signed by the App Store for "},{"type":"emphasis","inlineContent":[{"text":"my","type":"text"}]},{"type":"text","text":" app for "},{"type":"emphasis","inlineContent":[{"type":"text","text":"this"}]},{"type":"text","text":" device” (quote from WWDC22 session "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/videos\/play\/wwdc2021\/10114\/?time=694"},{"type":"text","text":"). StoreKit 2 leaves developers the choice to accept even unverified purchases. But FreemiumKit doesn’t do that, it simply "},{"type":"strong","inlineContent":[{"type":"text","text":"always"}]},{"type":"text","text":" ignores unverified purchases. When FreemiumKit reports a purchase, it has already successfully passed transaction verification. 💯"}]},{"type":"paragraph","inlineContent":[{"type":"text","text":"While StoreKit 2 makes sure a transaction is coming from Apple and has not been tampered with, it’s still possible that a highly skilled attacker could tamper with the devices memory or the app logic on a jailbroken device to bypass these checks. It is possible to guard against these kinds of attacks with additional server-side validation and by moving some of the paid feature logic to your servers."}]},{"type":"paragraph","inlineContent":[{"type":"text","text":"The complexity of such an attack is very high though and most apps are vulnerable to it even with server-side receipt validation because the attacker can simply bypass the boolean check inside the apps logic if they have this level of access to your apps code. Protecting against all potential security risks is impossible and we think that the built-in transaction verification is a good level of security for most apps."}]},{"type":"heading","anchor":"Contact","text":"Contact","level":2},{"type":"paragraph","inlineContent":[{"type":"text","text":"Have questions or need support? Reach out to me at "},{"isActive":true,"type":"reference","identifier":"mailto:freemiumkit@fline.dev"},{"type":"text","text":"."}]},{"type":"heading","anchor":"Legal","text":"Legal","level":2},{"type":"small","inlineContent":[{"text":"Cihat Gündüz © 2024. All rights reserved.","type":"text"},{"text":" ","type":"text"},{"text":"Privacy: No personal data is tracked on this site.","type":"text"},{"text":" ","type":"text"},{"type":"reference","identifier":"https:\/\/www.fline.dev\/imprint\/","isActive":true}]}],"kind":"content"}],"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"]]},"seeAlsoSections":[{"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ParentalGate","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits"],"generated":true}],"sections":[],"references":{"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromRevenueCat":{"title":"I use RevenueCat, how can I migrate?","url":"\/documentation\/freemiumkit\/faq-migratefromrevenuecat","abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat"},"https://developer.apple.com/videos/play/wwdc2021/10114/?time=694":{"title":"Meet StoreKit 2","identifier":"https:\/\/developer.apple.com\/videos\/play\/wwdc2021\/10114\/?time=694","titleInlineContent":[{"text":"Meet StoreKit 2","type":"text"}],"type":"link","url":"https:\/\/developer.apple.com\/videos\/play\/wwdc2021\/10114\/?time=694"},"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","url":"\/documentation\/freemiumkit\/faqs","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"kind":"article","type":"topic","role":"article","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"},"FreemiumKit.png":{"alt":null,"identifier":"FreemiumKit.png","type":"image","variants":[{"traits":["1x","light"],"url":"\/images\/FreemiumKit.png"}]},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","url":"\/documentation\/index","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"kind":"article","type":"topic","role":"collection","identifier":"doc:\/\/FreemiumKit\/documentation\/Index"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ParentalGate":{"title":"Are ‘Made for Kids’ apps supported with a Parental Gate?","url":"\/documentation\/freemiumkit\/faq-parentalgate","abstract":[{"type":"text","text":"Learn how to use our built-in parental gate for apps ‘Made for Kids’ to comply with Apples guidelines and avoid accidental purchases by small children."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ParentalGate"},"https://www.fline.dev/imprint/":{"title":"Imprint","identifier":"https:\/\/www.fline.dev\/imprint\/","titleInlineContent":[{"text":"Imprint","type":"text"}],"type":"link","url":"https:\/\/www.fline.dev\/imprint\/"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ServerLimits":{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits","title":"How can I apply my custom server-side limits?","abstract":[{"type":"text","text":"Learn how you can recognize a purchased user across app installs and devices to roll your own server-side logic for custom limits."}],"url":"\/documentation\/freemiumkit\/faq-serverlimits","role":"sampleCode","type":"topic","kind":"article"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-HowItWorks":{"title":"How does FreemiumKit work? Can I trust it?","url":"\/documentation\/freemiumkit\/faq-howitworks","abstract":[{"type":"text","text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Privacy":{"title":"How does FreemiumKit handle User Privacy?","url":"\/documentation\/freemiumkit\/faq-privacy","abstract":[{"type":"text","text":"Learn how FreemiumKit was designed to keep your users data private and reduce the exposure of your purchase data to a minimum."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Pricing":{"abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"type":"topic","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","title":"How does the Pricing work in detail?","kind":"article","url":"\/documentation\/freemiumkit\/faq-pricing","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromPaidUpFront":{"title":"My app is paid-up-front. How can I make it Freemium?","url":"\/documentation\/freemiumkit\/faq-migratefrompaidupfront","abstract":[{"type":"text","text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront"},"mailto:freemiumkit@fline.dev":{"title":"freemiumkit@fline.dev","identifier":"mailto:freemiumkit@fline.dev","titleInlineContent":[{"text":"freemiumkit@fline.dev","type":"text"}],"type":"link","url":"mailto:freemiumkit@fline.dev"}}} \ No newline at end of file diff --git a/data/documentation/freemiumkit/faqs.json b/data/documentation/freemiumkit/faqs.json index 71bae66..c485aed 100644 --- a/data/documentation/freemiumkit/faqs.json +++ b/data/documentation/freemiumkit/faqs.json @@ -1 +1 @@ -{"seeAlsoSections":[{"generated":true,"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/SetupGuide"]}],"sections":[],"metadata":{"role":"article","roleHeading":"FreemiumKit","title":"FAQs","images":[{"type":"icon","identifier":"FreemiumKit.png"}]},"kind":"article","abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"},"schemaVersion":{"minor":3,"patch":0,"major":0},"topicSections":[{"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits"]}],"references":{"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Validation":{"title":"Does FreemiumKit validate purchases?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","abstract":[{"type":"text","text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!"}],"url":"\/documentation\/freemiumkit\/faq-validation","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","identifier":"doc:\/\/FreemiumKit\/documentation\/Index","abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"images":[{"type":"icon","identifier":"FreemiumKit.png"}],"url":"\/documentation\/index","type":"topic","kind":"article","role":"collection"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Pricing":{"title":"How does the Pricing work in detail?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"url":"\/documentation\/freemiumkit\/faq-pricing","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ServerLimits":{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits","kind":"article","title":"How can I apply my custom server-side limits?","abstract":[{"text":"Learn how you can recognize a purchased user across app installs and devices to roll your own server-side logic for custom limits.","type":"text"}],"url":"\/documentation\/freemiumkit\/faq-serverlimits","type":"topic","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromRevenueCat":{"title":"I use RevenueCat, how can I migrate?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"url":"\/documentation\/freemiumkit\/faq-migratefromrevenuecat","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Privacy":{"title":"How does FreemiumKit handle User Privacy?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","abstract":[{"type":"text","text":"Learn how FreemiumKit was designed to keep your users data private and reduce the exposure of your purchase data to a minimum."}],"url":"\/documentation\/freemiumkit\/faq-privacy","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-HowItWorks":{"title":"How does FreemiumKit work? Can I trust it?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","abstract":[{"type":"text","text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app."}],"url":"\/documentation\/freemiumkit\/faq-howitworks","type":"topic","kind":"article","role":"sampleCode"},"FreemiumKit.png":{"alt":null,"type":"image","variants":[{"traits":["1x","light"],"url":"\/images\/FreemiumKit.png"}],"identifier":"FreemiumKit.png"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromPaidUpFront":{"title":"My app is paid-up-front. How can I make it Freemium?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","abstract":[{"type":"text","text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased."}],"url":"\/documentation\/freemiumkit\/faq-migratefrompaidupfront","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/SetupGuide":{"title":"SDK Setup Guide","abstract":[{"type":"text","text":"Learn how to set up your app for our paywalls and live push notifications."}],"role":"article","url":"\/documentation\/freemiumkit\/setupguide","kind":"article","type":"topic","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/SetupGuide","images":[{"type":"icon","identifier":"FreemiumKit.png"}]}}} \ No newline at end of file +{"identifier":{"url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"title":"FAQs","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"roleHeading":"FreemiumKit","role":"article"},"sections":[],"topicSections":[{"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ParentalGate","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits"]}],"abstract":[{"text":"The most frequently asked questions about FreemiumKit.","type":"text"}],"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index"]]},"kind":"article","seeAlsoSections":[{"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/SetupGuide"],"generated":true}],"references":{"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ServerLimits":{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ServerLimits","title":"How can I apply my custom server-side limits?","abstract":[{"type":"text","text":"Learn how you can recognize a purchased user across app installs and devices to roll your own server-side logic for custom limits."}],"url":"\/documentation\/freemiumkit\/faq-serverlimits","role":"sampleCode","type":"topic","kind":"article"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromRevenueCat":{"title":"I use RevenueCat, how can I migrate?","url":"\/documentation\/freemiumkit\/faq-migratefromrevenuecat","abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat"},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","url":"\/documentation\/index","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"kind":"article","type":"topic","role":"collection","identifier":"doc:\/\/FreemiumKit\/documentation\/Index"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-HowItWorks":{"title":"How does FreemiumKit work? Can I trust it?","url":"\/documentation\/freemiumkit\/faq-howitworks","abstract":[{"type":"text","text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Validation":{"title":"Does FreemiumKit validate purchases?","url":"\/documentation\/freemiumkit\/faq-validation","abstract":[{"type":"text","text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!"}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Privacy":{"title":"How does FreemiumKit handle User Privacy?","url":"\/documentation\/freemiumkit\/faq-privacy","abstract":[{"type":"text","text":"Learn how FreemiumKit was designed to keep your users data private and reduce the exposure of your purchase data to a minimum."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Privacy"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Pricing":{"abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"type":"topic","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","title":"How does the Pricing work in detail?","kind":"article","url":"\/documentation\/freemiumkit\/faq-pricing","role":"sampleCode"},"FreemiumKit.png":{"identifier":"FreemiumKit.png","type":"image","alt":null,"variants":[{"url":"\/images\/FreemiumKit.png","traits":["1x","light"]}]},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-ParentalGate":{"title":"Are ‘Made for Kids’ apps supported with a Parental Gate?","url":"\/documentation\/freemiumkit\/faq-parentalgate","abstract":[{"type":"text","text":"Learn how to use our built-in parental gate for apps ‘Made for Kids’ to comply with Apples guidelines and avoid accidental purchases by small children."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-ParentalGate"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromPaidUpFront":{"title":"My app is paid-up-front. How can I make it Freemium?","url":"\/documentation\/freemiumkit\/faq-migratefrompaidupfront","abstract":[{"type":"text","text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront"},"doc://FreemiumKit/documentation/FreemiumKit/SetupGuide":{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/SetupGuide","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"role":"article","type":"topic","abstract":[{"text":"Learn how to set up your app for our paywalls and live push notifications.","type":"text"}],"kind":"article","url":"\/documentation\/freemiumkit\/setupguide","title":"SDK Setup Guide"}}} \ No newline at end of file diff --git a/data/documentation/freemiumkit/setupguide.json b/data/documentation/freemiumkit/setupguide.json index ea7afd3..a0ac7b3 100644 --- a/data/documentation/freemiumkit/setupguide.json +++ b/data/documentation/freemiumkit/setupguide.json @@ -1 +1 @@ -{"primaryContentSections":[{"content":[{"anchor":"Adding-the-SDK","level":2,"type":"heading","text":"Adding the SDK"},{"items":[{"content":[{"inlineContent":[{"text":"Open your app project in Xcode.","type":"text"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"In the “File” menu select “Add Package Dependencies…”"}]}]}],"type":"orderedList"},{"type":"paragraph","inlineContent":[{"type":"image","identifier":"Setup-Add-Dependency"}]},{"items":[{"content":[{"inlineContent":[{"text":"Paste this to the top right text field and press “Add Package”:","type":"text"}],"type":"paragraph"},{"syntax":null,"type":"codeListing","code":["https:\/\/github.com\/FlineDev\/FreemiumKit.git"]}]}],"type":"orderedList","start":3},{"type":"paragraph","inlineContent":[{"type":"image","identifier":"Setup-Add-Package"}]},{"items":[{"content":[{"inlineContent":[{"type":"text","text":"Select your app target (if not already selected) and confirm by pressing “Add Package”"}],"type":"paragraph"}]}],"type":"orderedList","start":4},{"type":"paragraph","inlineContent":[{"identifier":"Setup-Choose-Package","type":"image"}]},{"anchor":"Configuring-the-SDK","level":2,"type":"heading","text":"Configuring the SDK"},{"style":"tip","name":"Tip","type":"aside","content":[{"type":"paragraph","inlineContent":[{"text":"Don’t forget to ","type":"text"},{"code":"import FreemiumKit","type":"codeVoice"},{"text":" for any of the below calls to build.","type":"text"}]}]},{"items":[{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Make sure your app’s Asset Catalog contains the "},{"code":"FreemiumKit","type":"codeVoice"},{"type":"text","text":" data set from the “Setup” tab of your app in FreemiumKit for Mac. If it doesn’t, drag & drop it from the Setup tab now."}]}]},{"content":[{"inlineContent":[{"text":"Add a call to ","type":"text"},{"code":".environmentObject(FreemiumKit.shared)","type":"codeVoice"},{"text":" to the root view of every scene in the app entry point. For example:","type":"text"}],"type":"paragraph"},{"syntax":"swift","code":["import FreemiumKit","","@main","struct MyApp: App {"," var body: some Scene {"," WindowGroup {"," MainView()"," .environmentObject(FreemiumKit.shared)"," }"," }","}"],"type":"codeListing"}]}],"type":"orderedList"},{"style":"tip","name":"Tip","type":"aside","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"If you want to disable the paywall during DEBUG builds after you’ve made sure that it works as expected, you can call "},{"type":"codeVoice","code":".overrideForDebug"},{"type":"text","text":" on "},{"type":"codeVoice","code":"FreemiumKit.shared"},{"type":"text","text":" within an "},{"type":"codeVoice","code":"#if DEBUG"},{"type":"text","text":" check like this:"}]},{"type":"codeListing","code":["WindowGroup {"," MainView()"," .onAppear {"," #if DEBUG"," FreemiumKit.shared.overrideForDebug(purchasedTier: 1)"," #endif"," }"," .environmentObject(FreemiumKit.shared)","}"],"syntax":"swift"}]},{"anchor":"Understanding-Apples-Tier-System","level":2,"type":"heading","text":"Understanding Apples Tier System"},{"type":"paragraph","inlineContent":[{"type":"text","text":"If your goal is to ship your app with any combination of Monthly, Yearly, and Lifetime purchases, you most likely only need one tier: Tier 1. Just pass "},{"code":"1","type":"codeVoice"},{"type":"text","text":" for the "},{"code":"purchasedTier","type":"codeVoice"},{"type":"text","text":" parameter everywhere – easy. Continue to the next section."}]},{"type":"paragraph","inlineContent":[{"text":"But if you want to support multiple levels of access to your app, like a combination of Monthly\/Yearly\/Lifetime for the ‘Pro’ level, another combination of Monthly\/Yearly\/Lifetime for the ‘Max’ level, and maybe another combination of Monthly\/Yearly\/Lifetime for the ‘Ultra’ level, that’s when you need to think about which value to pass to the ","type":"text"},{"type":"codeVoice","code":"purchasedTier"},{"text":" parameter. Note that ","type":"text"},{"type":"codeVoice","code":"1"},{"text":" always refers to the highest level. That’s how Apple has decided their tier system to work. Read their ","type":"text"},{"identifier":"https:\/\/developer.apple.com\/help\/app-store-connect\/manage-subscriptions\/offer-auto-renewable-subscriptions","type":"reference","isActive":true},{"text":" to learn more.","type":"text"}]},{"anchor":"Showing-the-Paywalls","level":2,"type":"heading","text":"Showing the Paywalls"},{"type":"video","identifier":"PaidViews"},{"items":[{"content":[{"inlineContent":[{"type":"text","text":"Lock your paid features for users who have not made a purchase yet by using one of the built-in views "},{"code":"PaidFeatureButton","type":"codeVoice"},{"type":"text","text":" or "},{"code":"PaidFeatureView","type":"codeVoice"},{"type":"text","text":". This is the recommended way of using the SDK (when applicable) as it handles purchase states automatically for you and saves you a lot of boilerplate code. For example:"}],"type":"paragraph"},{"syntax":"swift","code":["\/\/ opens paywall if user has not purchased, else just like `Button`","PaidFeatureButton(\"Export\", systemImage: \"square.and.arrow.up\") {"," \/\/ your export logic – no check for a paid tier needed, only called if already purchased ","}","","\/\/ exactly the same as above, but gives you full customizability","PaidFeatureView {"," Button(\"Export\", systemImage: \"square.and.arrow.up\") {"," \/\/ your export logic – no check for a paid tier needed, only called if already purchased"," }","} lockedView: {"," Label(\"Export\", systemImage: \"lock\")","}"],"type":"codeListing"},{"inlineContent":[{"text":"Both ","type":"text"},{"type":"codeVoice","code":"PaidFeatureButton"},{"text":" and ","type":"text"},{"type":"codeVoice","code":"PaidFeatureView"},{"text":" accept an ","type":"text"},{"type":"codeVoice","code":"unlocksAtTier"},{"text":" parameter of type ","type":"text"},{"type":"codeVoice","code":"Int"},{"text":" (default: ","type":"text"},{"type":"codeVoice","code":"1"},{"text":") and a ","type":"text"},{"type":"codeVoice","code":"showPaywallOnPressIfLocked"},{"text":" parameter of type ","type":"text"},{"type":"codeVoice","code":"Bool"},{"text":" (default: ","type":"text"},{"type":"codeVoice","code":"true"},{"text":").","type":"text"}],"type":"paragraph"},{"inlineContent":[{"text":"If you don’t pass any of those parameters, the default behavior unlocks the feature only if tier 1 is purchased and shows a paywall on press if tier 1 is not yet purchased. If ","type":"text"},{"type":"codeVoice","code":"showPaywallOnPressIfLocked"},{"text":" is set to ","type":"text"},{"type":"codeVoice","code":"false"},{"text":", the locked view will not have any automatic interaction, just rendering locked view state as-is without any added behavior.","type":"text"}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"type":"text","text":"Alternatively, if you want to control the presentation of the paywall manually, you can add the "},{"type":"codeVoice","code":".paywall(isPresented:)"},{"type":"text","text":" modifier to your custom views where needed. For example:"}],"type":"paragraph"},{"code":["import FreemiumKit","","struct MyView: View {"," @State var showPaywall: Bool = false",""," var body: some View {"," Button(\"Unlock Pro\") {"," showPaywall = true"," }"," .paywall(isPresented: $showPaywall)"," }","}"],"syntax":"swift","type":"codeListing"},{"inlineContent":[{"text":"If you want to conditionally hide views based on paid state (like hiding the unlock button if a user has already purchased), you can add the ","type":"text"},{"code":"FreemiumKit","type":"codeVoice"},{"text":" object as an ","type":"text"},{"code":"@EnvironmentObject","type":"codeVoice"},{"text":" and call ","type":"text"},{"code":".purchasedTier","type":"codeVoice"},{"text":" or ","type":"text"},{"code":".hasPurchased","type":"codeVoice"},{"text":" if you only have one tier like so:","type":"text"}],"type":"paragraph"},{"code":["import FreemiumKit","","struct MyView: View {"," @EnvironmentObject var freemiumKit: FreemiumKit"," @State var showPaywall: Bool = false",""," var body: some View {"," if freemiumKit.purchasedTier == nil {"," Button(\"Unlock Pro\") {"," showPaywall = true"," }"," .paywall(isPresented: $showPaywall)"," }"," }","}"],"syntax":"swift","type":"codeListing"},{"inlineContent":[{"text":"If you want to show the paywall upon appearance of a view if a user has not paid, you should first check that the ","type":"text"},{"type":"codeVoice","code":"purchasesLoaded"},{"text":" property of ","type":"text"},{"type":"codeVoice","code":"FreemiumKit"},{"text":" is ","type":"text"},{"type":"codeVoice","code":"true"},{"text":" – or else paying users might see the paywall, too. Since this is a common use case, our SDK ships with the ","type":"text"},{"type":"codeVoice","code":".onPurchasesLoaded"},{"text":" view modifier which is guaranteed to be called exactly once (like ","type":"text"},{"type":"codeVoice","code":".onAppear"},{"text":") but only when purchases are loaded:","type":"text"}],"type":"paragraph"},{"code":["import FreemiumKit","","struct MyView: View {"," @State var showPaywall: Bool = false",""," var body: some View {"," VStack {"," \/\/ your view ..."," }"," .paywall(isPresented: $showPaywall)"," .onPurchasesLoaded {"," if !FremiumKit.shared.hasPurchased {"," showPaywall = true"," }"," }"," }","}"],"syntax":"swift","type":"codeListing"}]},{"content":[{"type":"paragraph","inlineContent":[{"text":"There’s also a ","type":"text"},{"code":"PaidStatusView","type":"codeVoice"},{"text":" which you can add to your app’s settings to indicate to users what their current purchase state is. There are two styles:","type":"text"}]},{"type":"codeListing","code":["PaidStatusView(style: .plain)","PaidStatusView(style: .decorative(icon: .laurel))"],"syntax":"swift"}]}],"type":"orderedList"},{"type":"paragraph","inlineContent":[{"identifier":"Setup-PaidStatusView","type":"image"}]},{"type":"paragraph","inlineContent":[{"text":"The ","type":"text"},{"code":".decorative","type":"codeVoice"},{"text":" style has multiple ","type":"text"},{"code":"icon","type":"codeVoice"},{"text":" parameter options and also accepts optional ","type":"text"},{"code":"foregroundColor","type":"codeVoice"},{"text":" and ","type":"text"},{"code":"backgroundColor","type":"codeVoice"},{"text":" parameters if you need to adjust the defaults. Note that the ","type":"text"},{"code":"PaidStatusView","type":"codeVoice"},{"text":" will automatically open a paywall on press if there’s no purchase yet. Else, it’s rendered as just a label without interaction.","type":"text"}]},{"type":"paragraph","inlineContent":[{"text":"If you place it inside a ","type":"text"},{"code":"Form","type":"codeVoice"},{"text":" with ","type":"text"},{"code":"Sections","type":"codeVoice"},{"text":", you might want to set the ","type":"text"},{"code":"listRowBackground","type":"codeVoice"},{"text":" for a clean look like this:","type":"text"}]},{"code":["Form {"," Section {"," PaidStatusView(style: .decorative(icon: .laurel))"," .listRowBackground(Color.accentColor)"," }"," "," \/\/ ...","}"],"type":"codeListing","syntax":"swift"},{"anchor":"SwiftUI-Previews","level":2,"type":"heading","text":"SwiftUI Previews"},{"type":"paragraph","inlineContent":[{"type":"text","text":"For SwiftUI previews to work where you make use of the built-in views or modifier, add a call to "},{"code":".environmentObject(FreemiumKit.preview)","type":"codeVoice"},{"type":"text","text":" in your preview code like so:"}]},{"code":["#Preview {"," YourView()"," .environmentObject(FreemiumKit.preview)","}"],"type":"codeListing","syntax":"swift"},{"type":"paragraph","inlineContent":[{"text":"If you want to simulate a specific paid state in your previews, you can call the ","type":"text"},{"code":"withOverridesForDebug(purchasedTier:)","type":"codeVoice"},{"text":" function on ","type":"text"},{"code":"FreemiumKit.preview","type":"codeVoice"},{"text":" and set your desired tier (set ","type":"text"},{"code":"1","type":"codeVoice"},{"text":" for full access). The default ","type":"text"},{"code":"FreemiumKit.preview","type":"codeVoice"},{"text":" shows in the “nothing purchased” state, showcasing how things will look from a Free users perspective. For example:","type":"text"}]},{"code":["#Preview(\"Full Access\") {"," YourView()"," .environmentObject(FreemiumKit.preview.withOverridesForDebug(purchasedTier: 1))","}"],"type":"codeListing","syntax":"swift"},{"anchor":"Contact","level":2,"type":"heading","text":"Contact"},{"type":"paragraph","inlineContent":[{"type":"text","text":"Have questions or need support? Reach out to me at "},{"identifier":"mailto:freemiumkit@fline.dev","type":"reference","isActive":true},{"type":"text","text":"."}]},{"anchor":"Legal","level":2,"type":"heading","text":"Legal"},{"type":"small","inlineContent":[{"type":"text","text":"Cihat Gündüz © 2024. All rights reserved."},{"type":"text","text":" "},{"type":"text","text":"Privacy: No personal data is tracked on this site."},{"type":"text","text":" "},{"identifier":"https:\/\/www.fline.dev\/imprint\/","isActive":true,"type":"reference"}]}],"kind":"content"}],"seeAlsoSections":[{"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"],"generated":true}],"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index"]]},"sampleCodeDownload":{"action":{"isActive":true,"identifier":"https:\/\/www.youtube.com\/watch?v=6JxwA3WieHs","overridingTitle":"Detailed Setup Video (17 min)","type":"reference"},"kind":"sampleDownload"},"metadata":{"role":"article","title":"SDK Setup Guide","images":[{"type":"icon","identifier":"FreemiumKit.png"}],"roleHeading":"FreemiumKit"},"identifier":{"url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/SetupGuide","interfaceLanguage":"swift"},"sections":[],"kind":"article","abstract":[{"type":"text","text":"Learn how to set up your app for our paywalls and live push notifications."}],"references":{"https://www.fline.dev/imprint/":{"titleInlineContent":[{"text":"Imprint","type":"text"}],"title":"Imprint","identifier":"https:\/\/www.fline.dev\/imprint\/","url":"https:\/\/www.fline.dev\/imprint\/","type":"link"},"mailto:freemiumkit@fline.dev":{"title":"freemiumkit@fline.dev","url":"mailto:freemiumkit@fline.dev","type":"link","identifier":"mailto:freemiumkit@fline.dev","titleInlineContent":[{"type":"text","text":"freemiumkit@fline.dev"}]},"FreemiumKit.png":{"alt":null,"variants":[{"traits":["1x","light"],"url":"\/images\/FreemiumKit.png"}],"type":"image","identifier":"FreemiumKit.png"},"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs","abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"images":[{"type":"icon","identifier":"FreemiumKit.png"}],"url":"\/documentation\/freemiumkit\/faqs","type":"topic","kind":"article","role":"article"},"Setup-Choose-Package":{"variants":[{"traits":["1x","light"],"url":"\/images\/Setup-Choose-Package.jpeg"}],"type":"image","identifier":"Setup-Choose-Package","alt":null},"https://developer.apple.com/help/app-store-connect/manage-subscriptions/offer-auto-renewable-subscriptions":{"title":"official docs","url":"https:\/\/developer.apple.com\/help\/app-store-connect\/manage-subscriptions\/offer-auto-renewable-subscriptions","type":"link","identifier":"https:\/\/developer.apple.com\/help\/app-store-connect\/manage-subscriptions\/offer-auto-renewable-subscriptions","titleInlineContent":[{"text":"official docs","type":"text"}]},"PaidViews-Poster":{"variants":[{"traits":["1x","light"],"url":"\/images\/PaidViews-Poster.jpeg"}],"type":"image","identifier":"PaidViews-Poster","alt":null},"Setup-PaidStatusView":{"variants":[{"traits":["1x","light"],"url":"\/images\/Setup-PaidStatusView.jpeg"}],"type":"image","identifier":"Setup-PaidStatusView","alt":null},"https://www.youtube.com/watch?v=6JxwA3WieHs":{"checksum":null,"url":"https:\/\/www.youtube.com\/watch?v=6JxwA3WieHs","type":"download","identifier":"https:\/\/www.youtube.com\/watch?v=6JxwA3WieHs"},"Setup-Add-Dependency":{"variants":[{"traits":["1x","light"],"url":"\/images\/Setup-Add-Dependency.jpeg"}],"type":"image","identifier":"Setup-Add-Dependency","alt":null},"PaidViews":{"variants":[{"traits":["1x","light"],"url":"\/videos\/PaidViews.mp4"}],"type":"video","identifier":"PaidViews","poster":"PaidViews-Poster","alt":null},"Setup-Add-Package":{"variants":[{"traits":["1x","light"],"url":"\/images\/Setup-Add-Package.jpeg"}],"type":"image","identifier":"Setup-Add-Package","alt":null},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","identifier":"doc:\/\/FreemiumKit\/documentation\/Index","abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"images":[{"type":"icon","identifier":"FreemiumKit.png"}],"url":"\/documentation\/index","type":"topic","kind":"article","role":"collection"}}} \ No newline at end of file +{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/SetupGuide"},"kind":"article","seeAlsoSections":[{"generated":true,"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sampleCodeDownload":{"action":{"overridingTitle":"Detailed Setup Video (17 min)","type":"reference","isActive":true,"identifier":"https:\/\/www.youtube.com\/watch?v=6JxwA3WieHs"},"kind":"sampleDownload"},"metadata":{"images":[{"identifier":"FreemiumKit.png","type":"icon"}],"role":"article","title":"SDK Setup Guide","roleHeading":"FreemiumKit"},"primaryContentSections":[{"content":[{"type":"heading","anchor":"Adding-the-SDK","level":2,"text":"Adding the SDK"},{"type":"orderedList","items":[{"content":[{"type":"paragraph","inlineContent":[{"text":"Open your app project in Xcode.","type":"text"}]}]},{"content":[{"inlineContent":[{"type":"text","text":"In the “File” menu select “Add Package Dependencies…”"}],"type":"paragraph"}]}]},{"type":"paragraph","inlineContent":[{"identifier":"Setup-Add-Dependency","type":"image"}]},{"type":"orderedList","start":3,"items":[{"content":[{"inlineContent":[{"type":"text","text":"Paste this to the top right text field and press “Add Package”:"}],"type":"paragraph"},{"syntax":null,"type":"codeListing","code":["https:\/\/github.com\/FlineDev\/FreemiumKit.git"]}]}]},{"type":"paragraph","inlineContent":[{"type":"image","identifier":"Setup-Add-Package"}]},{"type":"orderedList","start":4,"items":[{"content":[{"type":"paragraph","inlineContent":[{"text":"Select your app target (if not already selected) and confirm by pressing “Add Package”","type":"text"}]}]}]},{"type":"paragraph","inlineContent":[{"type":"image","identifier":"Setup-Choose-Package"}]},{"type":"heading","anchor":"Configuring-the-SDK","level":2,"text":"Configuring the SDK"},{"type":"aside","style":"tip","content":[{"inlineContent":[{"type":"text","text":"Don’t forget to "},{"type":"codeVoice","code":"import FreemiumKit"},{"type":"text","text":" for any of the below calls to build."}],"type":"paragraph"}],"name":"Tip"},{"type":"orderedList","items":[{"content":[{"inlineContent":[{"text":"Make sure your app’s Asset Catalog contains the ","type":"text"},{"type":"codeVoice","code":"FreemiumKit"},{"text":" data set from the “Setup” tab of your app in FreemiumKit for Mac. If it doesn’t, drag & drop it from the Setup tab now.","type":"text"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Add a call to "},{"code":".environmentObject(FreemiumKit.shared)","type":"codeVoice"},{"type":"text","text":" to the root view of every scene in the app entry point. For example:"}]},{"type":"codeListing","code":["import FreemiumKit","","@main","struct MyApp: App {"," var body: some Scene {"," WindowGroup {"," MainView()"," .environmentObject(FreemiumKit.shared)"," }"," }","}"],"syntax":"swift"}]}]},{"type":"aside","style":"tip","content":[{"inlineContent":[{"type":"text","text":"If you want to disable the paywall during DEBUG builds after you’ve made sure that it works as expected, you can call "},{"code":".overrideForDebug","type":"codeVoice"},{"type":"text","text":" on "},{"code":"FreemiumKit.shared","type":"codeVoice"},{"type":"text","text":" within an "},{"code":"#if DEBUG","type":"codeVoice"},{"type":"text","text":" check like this:"}],"type":"paragraph"},{"code":["WindowGroup {"," MainView()"," .onAppear {"," #if DEBUG"," FreemiumKit.shared.overrideForDebug(purchasedTier: 1)"," #endif"," }"," .environmentObject(FreemiumKit.shared)","}"],"syntax":"swift","type":"codeListing"}],"name":"Tip"},{"type":"heading","anchor":"Understanding-Apples-Tier-System","level":2,"text":"Understanding Apples Tier System"},{"type":"paragraph","inlineContent":[{"type":"text","text":"If your goal is to ship your app with any combination of Monthly, Yearly, and Lifetime purchases, you most likely only need one tier: Tier 1. Just pass "},{"type":"codeVoice","code":"1"},{"type":"text","text":" for the "},{"type":"codeVoice","code":"purchasedTier"},{"type":"text","text":" parameter everywhere – easy. Continue to the next section."}]},{"type":"paragraph","inlineContent":[{"text":"But if you want to support multiple levels of access to your app, like a combination of Monthly\/Yearly\/Lifetime for the ‘Pro’ level, another combination of Monthly\/Yearly\/Lifetime for the ‘Max’ level, and maybe another combination of Monthly\/Yearly\/Lifetime for the ‘Ultra’ level, that’s when you need to think about which value to pass to the ","type":"text"},{"code":"purchasedTier","type":"codeVoice"},{"text":" parameter. Note that ","type":"text"},{"code":"1","type":"codeVoice"},{"text":" always refers to the highest level. That’s how Apple has decided their tier system to work. Read their ","type":"text"},{"isActive":true,"identifier":"https:\/\/developer.apple.com\/help\/app-store-connect\/manage-subscriptions\/offer-auto-renewable-subscriptions","type":"reference"},{"text":" to learn more.","type":"text"}]},{"type":"heading","anchor":"Showing-the-Paywalls","level":2,"text":"Showing the Paywalls"},{"type":"video","identifier":"PaidViews"},{"type":"orderedList","items":[{"content":[{"inlineContent":[{"text":"Lock your paid features for users who have not made a purchase yet by using one of the built-in views ","type":"text"},{"type":"codeVoice","code":"PaidFeatureButton"},{"text":" or ","type":"text"},{"type":"codeVoice","code":"PaidFeatureView"},{"text":". This is the recommended way of using the SDK (when applicable) as it handles purchase states automatically for you and saves you a lot of boilerplate code. For example:","type":"text"}],"type":"paragraph"},{"syntax":"swift","code":["\/\/ opens paywall if user has not purchased, else just like `Button`","PaidFeatureButton(\"Export\", systemImage: \"square.and.arrow.up\") {"," \/\/ your export logic – no check for a paid tier needed, only called if already purchased ","}","","\/\/ exactly the same as above, but gives you full customizability","PaidFeatureView {"," Button(\"Export\", systemImage: \"square.and.arrow.up\") {"," \/\/ your export logic – no check for a paid tier needed, only called if already purchased"," }","} lockedView: {"," Label(\"Export\", systemImage: \"lock\")","}"],"type":"codeListing"},{"inlineContent":[{"text":"Both ","type":"text"},{"code":"PaidFeatureButton","type":"codeVoice"},{"text":" and ","type":"text"},{"code":"PaidFeatureView","type":"codeVoice"},{"text":" accept an ","type":"text"},{"code":"unlocksAtTier","type":"codeVoice"},{"text":" parameter of type ","type":"text"},{"code":"Int","type":"codeVoice"},{"text":" (default: ","type":"text"},{"code":"1","type":"codeVoice"},{"text":") and a ","type":"text"},{"code":"showPaywallOnPressIfLocked","type":"codeVoice"},{"text":" parameter of type ","type":"text"},{"code":"Bool","type":"codeVoice"},{"text":" (default: ","type":"text"},{"code":"true","type":"codeVoice"},{"text":").","type":"text"}],"type":"paragraph"},{"inlineContent":[{"text":"If you don’t pass any of those parameters, the default behavior unlocks the feature only if tier 1 is purchased and shows a paywall on press if tier 1 is not yet purchased. If ","type":"text"},{"code":"showPaywallOnPressIfLocked","type":"codeVoice"},{"text":" is set to ","type":"text"},{"code":"false","type":"codeVoice"},{"text":", the locked view will not have any automatic interaction, just rendering locked view state as-is without any added behavior.","type":"text"}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"type":"text","text":"Alternatively, if you want to control the presentation of the paywall manually, you can add the "},{"code":".paywall(isPresented:)","type":"codeVoice"},{"type":"text","text":" modifier to your custom views where needed. For example:"}],"type":"paragraph"},{"type":"codeListing","code":["import FreemiumKit","","struct MyView: View {"," @State var showPaywall: Bool = false",""," var body: some View {"," Button(\"Unlock Pro\") {"," showPaywall = true"," }"," .paywall(isPresented: $showPaywall)"," }","}"],"syntax":"swift"},{"inlineContent":[{"text":"If you want to conditionally hide views based on paid state (like hiding the unlock button if a user has already purchased), you can add the ","type":"text"},{"type":"codeVoice","code":"FreemiumKit"},{"text":" object as an ","type":"text"},{"type":"codeVoice","code":"@EnvironmentObject"},{"text":" and call ","type":"text"},{"type":"codeVoice","code":".purchasedTier"},{"text":" or ","type":"text"},{"type":"codeVoice","code":".hasPurchased"},{"text":" if you only have one tier like so:","type":"text"}],"type":"paragraph"},{"type":"codeListing","code":["import FreemiumKit","","struct MyView: View {"," @EnvironmentObject var freemiumKit: FreemiumKit"," @State var showPaywall: Bool = false",""," var body: some View {"," if freemiumKit.purchasedTier == nil {"," Button(\"Unlock Pro\") {"," showPaywall = true"," }"," .paywall(isPresented: $showPaywall)"," }"," }","}"],"syntax":"swift"},{"inlineContent":[{"type":"text","text":"If you want to show the paywall upon appearance of a view if a user has not paid, you should first check that the "},{"type":"codeVoice","code":"purchasesLoaded"},{"type":"text","text":" property of "},{"type":"codeVoice","code":"FreemiumKit"},{"type":"text","text":" is "},{"type":"codeVoice","code":"true"},{"type":"text","text":" – or else paying users might see the paywall, too. Since this is a common use case, our SDK ships with the "},{"type":"codeVoice","code":".onPurchasesLoaded"},{"type":"text","text":" view modifier which is guaranteed to be called exactly once (like "},{"type":"codeVoice","code":".onAppear"},{"type":"text","text":") but only when purchases are loaded:"}],"type":"paragraph"},{"type":"codeListing","code":["import FreemiumKit","","struct MyView: View {"," @State var showPaywall: Bool = false",""," var body: some View {"," VStack {"," \/\/ your view ..."," }"," .paywall(isPresented: $showPaywall)"," .onPurchasesLoaded {"," if !FremiumKit.shared.hasPurchased {"," showPaywall = true"," }"," }"," }","}"],"syntax":"swift"}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"There’s also a "},{"type":"codeVoice","code":"PaidStatusView"},{"type":"text","text":" which you can add to your app’s settings to indicate to users what their current purchase state is. There are two styles:"}]},{"code":["PaidStatusView(style: .plain)","PaidStatusView(style: .decorative(icon: .laurel))"],"type":"codeListing","syntax":"swift"}]}]},{"type":"paragraph","inlineContent":[{"identifier":"Setup-PaidStatusView","type":"image"}]},{"type":"paragraph","inlineContent":[{"type":"text","text":"The "},{"type":"codeVoice","code":".decorative"},{"type":"text","text":" style has multiple "},{"type":"codeVoice","code":"icon"},{"type":"text","text":" parameter options and also accepts optional "},{"type":"codeVoice","code":"foregroundColor"},{"type":"text","text":" and "},{"type":"codeVoice","code":"backgroundColor"},{"type":"text","text":" parameters if you need to adjust the defaults. Note that the "},{"type":"codeVoice","code":"PaidStatusView"},{"type":"text","text":" will automatically open a paywall on press if there’s no purchase yet. Else, it’s rendered as just a label without interaction."}]},{"type":"paragraph","inlineContent":[{"type":"text","text":"If you place it inside a "},{"code":"Form","type":"codeVoice"},{"type":"text","text":" with "},{"code":"Sections","type":"codeVoice"},{"type":"text","text":", you might want to set the "},{"code":"listRowBackground","type":"codeVoice"},{"type":"text","text":" for a clean look like this:"}]},{"type":"codeListing","syntax":"swift","code":["Form {"," Section {"," PaidStatusView(style: .decorative(icon: .laurel))"," .listRowBackground(Color.accentColor)"," }"," "," \/\/ ...","}"]},{"type":"heading","anchor":"SwiftUI-Previews","level":2,"text":"SwiftUI Previews"},{"type":"paragraph","inlineContent":[{"type":"text","text":"For SwiftUI previews to work where you make use of the built-in views or modifier, add a call to "},{"type":"codeVoice","code":".environmentObject(FreemiumKit.preview)"},{"type":"text","text":" in your preview code like so:"}]},{"type":"codeListing","syntax":"swift","code":["#Preview {"," YourView()"," .environmentObject(FreemiumKit.preview)","}"]},{"type":"paragraph","inlineContent":[{"text":"If you want to simulate a specific paid state in your previews, you can call the ","type":"text"},{"code":"withOverridesForDebug(purchasedTier:)","type":"codeVoice"},{"text":" function on ","type":"text"},{"code":"FreemiumKit.preview","type":"codeVoice"},{"text":" and set your desired tier (set ","type":"text"},{"code":"1","type":"codeVoice"},{"text":" for full access). The default ","type":"text"},{"code":"FreemiumKit.preview","type":"codeVoice"},{"text":" shows in the “nothing purchased” state, showcasing how things will look from a Free users perspective. For example:","type":"text"}]},{"type":"codeListing","syntax":"swift","code":["#Preview(\"Full Access\") {"," YourView()"," .environmentObject(FreemiumKit.preview.withOverridesForDebug(purchasedTier: 1))","}"]},{"type":"heading","anchor":"Contact","level":2,"text":"Contact"},{"type":"paragraph","inlineContent":[{"text":"Have questions or need support? Reach out to me at ","type":"text"},{"identifier":"mailto:freemiumkit@fline.dev","isActive":true,"type":"reference"},{"text":".","type":"text"}]},{"type":"heading","anchor":"Legal","level":2,"text":"Legal"},{"type":"small","inlineContent":[{"text":"Cihat Gündüz © 2024. All rights reserved.","type":"text"},{"text":" ","type":"text"},{"text":"Privacy: No personal data is tracked on this site.","type":"text"},{"text":" ","type":"text"},{"identifier":"https:\/\/www.fline.dev\/imprint\/","type":"reference","isActive":true}]}],"kind":"content"}],"sections":[],"abstract":[{"text":"Learn how to set up your app for our paywalls and live push notifications.","type":"text"}],"hierarchy":{"paths":[["doc:\/\/FreemiumKit\/documentation\/Index"]]},"references":{"Setup-PaidStatusView":{"type":"image","identifier":"Setup-PaidStatusView","alt":null,"variants":[{"traits":["1x","light"],"url":"\/images\/Setup-PaidStatusView.jpeg"}]},"PaidViews":{"type":"video","identifier":"PaidViews","alt":null,"variants":[{"traits":["1x","light"],"url":"\/videos\/PaidViews.mp4"}],"poster":"PaidViews-Poster"},"doc://FreemiumKit/documentation/Index":{"title":"FreemiumKit","url":"\/documentation\/index","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"kind":"article","type":"topic","role":"collection","identifier":"doc:\/\/FreemiumKit\/documentation\/Index"},"https://developer.apple.com/help/app-store-connect/manage-subscriptions/offer-auto-renewable-subscriptions":{"title":"official docs","type":"link","identifier":"https:\/\/developer.apple.com\/help\/app-store-connect\/manage-subscriptions\/offer-auto-renewable-subscriptions","url":"https:\/\/developer.apple.com\/help\/app-store-connect\/manage-subscriptions\/offer-auto-renewable-subscriptions","titleInlineContent":[{"text":"official docs","type":"text"}]},"Setup-Add-Dependency":{"type":"image","identifier":"Setup-Add-Dependency","alt":null,"variants":[{"traits":["1x","light"],"url":"\/images\/Setup-Add-Dependency.jpeg"}]},"https://www.youtube.com/watch?v=6JxwA3WieHs":{"type":"download","identifier":"https:\/\/www.youtube.com\/watch?v=6JxwA3WieHs","url":"https:\/\/www.youtube.com\/watch?v=6JxwA3WieHs","checksum":null},"PaidViews-Poster":{"type":"image","identifier":"PaidViews-Poster","alt":null,"variants":[{"traits":["1x","light"],"url":"\/images\/PaidViews-Poster.jpeg"}]},"Setup-Choose-Package":{"type":"image","identifier":"Setup-Choose-Package","alt":null,"variants":[{"traits":["1x","light"],"url":"\/images\/Setup-Choose-Package.jpeg"}]},"https://www.fline.dev/imprint/":{"title":"Imprint","type":"link","identifier":"https:\/\/www.fline.dev\/imprint\/","url":"https:\/\/www.fline.dev\/imprint\/","titleInlineContent":[{"text":"Imprint","type":"text"}]},"FreemiumKit.png":{"type":"image","identifier":"FreemiumKit.png","alt":null,"variants":[{"traits":["1x","light"],"url":"\/images\/FreemiumKit.png"}]},"Setup-Add-Package":{"type":"image","identifier":"Setup-Add-Package","alt":null,"variants":[{"traits":["1x","light"],"url":"\/images\/Setup-Add-Package.jpeg"}]},"mailto:freemiumkit@fline.dev":{"title":"freemiumkit@fline.dev","type":"link","identifier":"mailto:freemiumkit@fline.dev","url":"mailto:freemiumkit@fline.dev","titleInlineContent":[{"text":"freemiumkit@fline.dev","type":"text"}]},"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","url":"\/documentation\/freemiumkit\/faqs","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"kind":"article","type":"topic","role":"article","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"}}} \ No newline at end of file diff --git a/data/documentation/index.json b/data/documentation/index.json index d382122..5df6d76 100644 --- a/data/documentation/index.json +++ b/data/documentation/index.json @@ -1 +1 @@ -{"sections":[],"kind":"article","primaryContentSections":[{"content":[{"level":2,"anchor":"Overview","text":"Overview","type":"heading"},{"inlineContent":[{"identifier":"FreemiumKit-Lettering","type":"image"}],"type":"paragraph"},{"inlineContent":[{"type":"text","text":"FreemiumKit is the ultimate solution for Apple platform developers to integrate and manage in-app purchases and subscriptions effortlessly. With support for all Apple platforms, FreemiumKit provides a seamless and efficient way to handle your app’s monetization."}],"type":"paragraph"},{"style":"tip","name":"Tip","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Install the Mac app first for a smooth onboarding experience."}]}],"type":"aside"},{"level":2,"anchor":"Key-Features","text":"Key Features","type":"heading"},{"level":3,"anchor":"One-Click-Creation-of-MonthlyYearlyLifetime","text":"One-Click Creation of Monthly\/Yearly\/Lifetime","type":"heading"},{"type":"unorderedList","items":[{"content":[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"text":"Connect API Integration","type":"text"}]},{"type":"text","text":": FreemiumKit connects to App Store Connect on your behalf to automate all the steps needed to create your products, saving you a lot of click & wait."}]}]},{"content":[{"inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Automatic Pricing"}]},{"type":"text","text":": We even calculate the prices for longer periods by default based on your Monthly price in a sensible manner, giving you full control when needed."}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"type":"strong","inlineContent":[{"text":"Combined Review Note","type":"text"}]},{"type":"text","text":": The review note updates for all of Monthly\/Yearly\/Lifetime at once."}],"type":"paragraph"}]}]},{"identifier":"QuickSetup","type":"video"},{"level":3,"anchor":"Configurable-Paywalls","text":"Configurable Paywalls","type":"heading"},{"type":"unorderedList","items":[{"content":[{"inlineContent":[{"inlineContent":[{"type":"text","text":"Paywalls"}],"type":"strong"},{"type":"text","text":": Our SDK contains beautiful & localized paywall designs for all Apple platforms."}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Remote Config"}]},{"type":"text","text":": Paywalls update immediately so you don’t need to wait for a new app version."}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"inlineContent":[{"text":"A\/B Testing","type":"text"}],"type":"strong"},{"text":": Improve your conversion by comparing up to 4 designs in parallel.","type":"text"}],"type":"paragraph"}]}]},{"identifier":"Paywalls","type":"video"},{"level":3,"anchor":"Flexible-Pricing-Adjustments-Coming-Soon","text":"Flexible Pricing Adjustments (Coming Soon!)","type":"heading"},{"type":"unorderedList","items":[{"content":[{"inlineContent":[{"inlineContent":[{"type":"text","text":"Purchase Power Parity:"}],"type":"strong"},{"text":" Adjust prices based on country to maximize revenue & accessibility.","type":"text"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"inlineContent":[{"type":"text","text":"A\/B Testing:"}],"type":"strong"},{"text":" Automatically creates subscription groups so you can test different prices!","type":"text"}]}]}]},{"columns":[{"size":2,"content":[{"type":"heading","text":"Native Experience","level":3,"anchor":"Native-Experience"},{"items":[{"content":[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Full Apple Platforms Support:"}]},{"text":" Seamlessly integrate the SDK with iOS, macOS, visionOS, and tvOS (coming soon).","type":"text"}]}]},{"content":[{"type":"paragraph","inlineContent":[{"inlineContent":[{"type":"text","text":"Live Purchase Push Notifications:"}],"type":"strong"},{"text":" Receive real-time notifications for user purchases to stay on top of your app’s performance.","type":"text"}]}]},{"content":[{"type":"paragraph","inlineContent":[{"inlineContent":[{"type":"text","text":"Privacy by Design:"}],"type":"strong"},{"type":"text","text":" The SDK avoids sending personal user data to any servers. And we don’t keep your purchase data on our servers."}]}]}],"type":"unorderedList"}]},{"size":1,"content":[{"inlineContent":[{"type":"image","identifier":"PushNotifications"}],"type":"paragraph"}]}],"numberOfColumns":3,"type":"row"},{"level":2,"anchor":"Stellar-Documentation--Support","text":"Stellar Documentation & Support","type":"heading"},{"inlineContent":[{"type":"text","text":"Our customers are amazed by our – quote – “stellar” documentation and support:"}],"type":"paragraph"},{"type":"unorderedList","items":[{"content":[{"inlineContent":[{"type":"text","text":"We worked hard on providing an "},{"inlineContent":[{"type":"text","text":"intuitive Onboarding"}],"type":"strong"},{"type":"text","text":" inside our app"}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"type":"text","text":"We have "},{"inlineContent":[{"type":"text","text":"detailed guides"}],"type":"strong"},{"type":"text","text":" for various use cases like for "},{"isActive":true,"identifier":"https:\/\/freemiumkit.app\/documentation\/freemiumkit\/faq-migratefrompaidupfront","type":"reference"}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"type":"text","text":"We even recorded a detailed "},{"type":"strong","inlineContent":[{"text":"walkthrough video","type":"text"}]},{"type":"text","text":" explaining the entire process"}],"type":"paragraph"}]}]},{"level":3,"anchor":"Explanation-Video-on-YouTube","text":"Explanation Video on YouTube:","type":"heading"},{"inlineContent":[{"type":"image","identifier":"Setup-Guide-Thumbnail"}],"type":"paragraph"},{"inlineContent":[{"type":"reference","identifier":"https:\/\/www.youtube.com\/watch?v=6JxwA3WieHs","isActive":true}],"type":"paragraph"},{"level":2,"anchor":"FreemiumKit-vs-RevenueCat","text":"FreemiumKit vs. RevenueCat","type":"heading"},{"inlineContent":[{"type":"text","text":"Many people in our community love 😻 RevenueCat, so you might wonder how FreemiumKit compares. The short answer is, that RevenueCat focuses on "},{"inlineContent":[{"text":"growth","type":"text"}],"type":"strong"},{"type":"text","text":" for "},{"inlineContent":[{"text":"already successful","type":"text"}],"type":"emphasis"},{"type":"text","text":" customers, whereas FreemiumKit focuses on "},{"inlineContent":[{"type":"text","text":"convenience"}],"type":"strong"},{"type":"text","text":" for "},{"inlineContent":[{"text":"beginners and Indie developers","type":"text"}],"type":"emphasis"},{"type":"text","text":". See the following table to get a better understanding of what I mean by that:"}],"type":"paragraph"},{"rows":[[[{"type":"paragraph","inlineContent":[{"text":"Feature","type":"text"}]}],[{"type":"paragraph","inlineContent":[{"text":"FreemiumKit","type":"text"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"RevenueCat"}]}]],[[{"inlineContent":[{"inlineContent":[{"type":"text","text":"Quick Setup"}],"type":"strong"}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"✅ (automated creation of products on Connect)"}],"type":"paragraph"}],[{"inlineContent":[{"text":"❌","type":"text"}],"type":"paragraph"}]],[[{"inlineContent":[{"type":"strong","inlineContent":[{"text":"Paywalls","type":"text"}]}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"✅ (on all Apple Platforms, even visionOS!)"}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"🚧 (only iOS)"}],"type":"paragraph"}]],[[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"text":"Built-In Localization","type":"text"}]}]}],[{"type":"paragraph","inlineContent":[{"text":"✅ (paywalls localized to ~40 languages)","type":"text"}]}],[{"type":"paragraph","inlineContent":[{"text":"❌","type":"text"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"text":"Real-Time Notifications","type":"text"}]}]}],[{"type":"paragraph","inlineContent":[{"text":"✅ (push notifications sent to native iPhone app)","type":"text"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"❌ (only webhooks)"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"text":"Skip Renewal Notifications","type":"text"}]}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"✅ (reports purchases & "},{"type":"strong","inlineContent":[{"text":"new","type":"text"}]},{"type":"text","text":" subscriptions)"}]}],[{"type":"paragraph","inlineContent":[{"text":"❌","type":"text"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"text":"Verified Transactions","type":"text"}]}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"✅ (using StoreKit 2)"}]}],[{"type":"paragraph","inlineContent":[{"text":"✅","type":"text"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"A\/B Testing"}]}]}],[{"type":"paragraph","inlineContent":[{"text":"✅ (fast setup, up to 4 designs in parallel)","type":"text"}]}],[{"type":"paragraph","inlineContent":[{"text":"✅ (but a lot of work)","type":"text"}]}]],[[{"type":"paragraph","inlineContent":[{"inlineContent":[{"text":"Native App","type":"text"}],"type":"strong"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"✅ (on all Apple Platforms)"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"❌"}]}]],[[{"inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Purchases Dashboard"}]}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"✅ (in native app)"}],"type":"paragraph"}],[{"inlineContent":[{"text":"✅ (only Web)","type":"text"}],"type":"paragraph"}]],[[{"inlineContent":[{"inlineContent":[{"text":"Purchase Power Parity (Soon!)","type":"text"}],"type":"strong"}],"type":"paragraph"}],[{"inlineContent":[{"text":"✅ (adjustable slider to mix with Apple prices)","type":"text"}],"type":"paragraph"}],[{"inlineContent":[{"text":"❌","type":"text"}],"type":"paragraph"}]],[[{"inlineContent":[{"type":"strong","inlineContent":[{"text":"Scalable","type":"text"}]}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"✅ (CDN for remote config, purchases in iCloud)"}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"✅ (higher price)"}],"type":"paragraph"}]],[[{"inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Low App Size Impact"}]}],"type":"paragraph"}],[{"inlineContent":[{"text":"✅ (3MB less than RevenueCat)","type":"text"}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"❌"}],"type":"paragraph"}]],[[{"inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"User Privacy"}]}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"✅ (no personal data sent, server temporary storage)"}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"❌ (lots of data)"}],"type":"paragraph"}]],[[{"inlineContent":[{"inlineContent":[{"type":"text","text":"Supports Apple Platforms"}],"type":"strong"}],"type":"paragraph"}],[{"inlineContent":[{"text":"✅ (including visionOS)","type":"text"}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"✅ (including visionOS)"}],"type":"paragraph"}]],[[{"type":"paragraph","inlineContent":[{"inlineContent":[{"text":"Supports Android & Web","type":"text"}],"type":"strong"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"❌"}]}],[{"type":"paragraph","inlineContent":[{"text":"✅","type":"text"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"text":"Pricing","type":"text"}]}]}],[{"type":"paragraph","inlineContent":[{"text":"Freemium, paid tier ","type":"text"},{"inlineContent":[{"type":"text","text":"below 1%"}],"type":"strong"},{"text":" of Revenue","type":"text"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"Freemium, paid tier exactly 1% of Revenue"}]}]]],"header":"row","type":"table"},{"level":2,"anchor":"Pricing","text":"Pricing","type":"heading"},{"inlineContent":[{"text":"FreemiumKit is ","type":"text"},{"type":"strong","inlineContent":[{"text":"completely free to use","type":"text"}]},{"text":" at the moment for ","type":"text"},{"type":"emphasis","inlineContent":[{"text":"everyone","type":"text"}]},{"text":".","type":"text"}],"type":"paragraph"},{"inlineContent":[{"type":"text","text":"In the future, only developers with more than $500 monthly income on App Store Connect will need to pay, and always less than 1% of their income. The full planned pricing table:"}],"type":"paragraph"},{"columns":[{"size":1,"content":[{"rows":[[[{"type":"paragraph","inlineContent":[{"type":"text","text":"Monthly Income"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"Cost"}]}]],[[{"inlineContent":[{"text":"$0 - $500","type":"text"}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"Free"}],"type":"paragraph"}]],[[{"inlineContent":[{"text":"$500 - $1k","type":"text"}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"$5\/mo"}],"type":"paragraph"}]],[[{"inlineContent":[{"type":"text","text":"$1k - $2k"}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"$10\/mo"}],"type":"paragraph"}]],[[{"inlineContent":[{"text":"$2k - $4.5k","type":"text"}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"$20\/mo"}],"type":"paragraph"}]],[[{"type":"paragraph","inlineContent":[{"text":"$4.5k - $7.5k","type":"text"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"$45\/mo"}]}]]],"type":"table","header":"row"}]},{"size":1,"content":[{"header":"row","type":"table","rows":[[[{"inlineContent":[{"type":"text","text":"Monthly Income"}],"type":"paragraph"}],[{"inlineContent":[{"text":"Cost","type":"text"}],"type":"paragraph"}]],[[{"inlineContent":[{"type":"text","text":"$7.5k - $15k"}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"$75\/mo"}],"type":"paragraph"}]],[[{"type":"paragraph","inlineContent":[{"text":"$15k - $30k","type":"text"}]}],[{"type":"paragraph","inlineContent":[{"text":"$150\/mo","type":"text"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"text","text":"$30k - $50k"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"$300\/mo"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"text","text":"$50k - $100k"}]}],[{"type":"paragraph","inlineContent":[{"text":"$500\/mo","type":"text"}]}]],[[{"type":"paragraph","inlineContent":[{"text":"$100k+","type":"text"}]}],[{"type":"paragraph","inlineContent":[{"text":"$1,000\/mo","type":"text"}]}]]]}]}],"numberOfColumns":2,"type":"row"},{"level":2,"anchor":"Get-Started","text":"Get Started","type":"heading"},{"inlineContent":[{"text":"Ready to take your app’s monetization to the next level? Download FreemiumKit today and start experiencing the benefits of simplified and powerful in-app purchases & subscriptions.","type":"text"}],"type":"paragraph"},{"inlineContent":[{"type":"reference","identifier":"https:\/\/apps.apple.com\/app\/apple-store\/id6502914189?pt=549314&ct=freemiumkit.app&mt=8","isActive":true},{"type":"text","text":" "},{"type":"reference","overridingTitleInlineContent":[{"type":"text","text":"Download Now"}],"identifier":"https:\/\/apps.apple.com\/app\/apple-store\/id6502914189?pt=549314&ct=freemiumkit.app&mt=8","isActive":true,"overridingTitle":"Download Now"}],"type":"paragraph"},{"level":2,"anchor":"SDK-Setup-Guide","text":"SDK Setup Guide","type":"heading"},{"inlineContent":[{"type":"text","text":"For a detailed walkthrough on how to integrate the FreemiumKit SDK into your app, check out our "},{"type":"reference","overridingTitleInlineContent":[{"type":"text","text":"SDK Setup Guide"}],"overridingTitle":"SDK Setup Guide","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/SetupGuide","isActive":true},{"type":"text","text":"."}],"type":"paragraph"},{"level":2,"anchor":"Testimonials","text":"Testimonials","type":"heading"},{"inlineContent":[{"text":"Here’s what customers are saying about FreemiumKit:","type":"text"}],"type":"paragraph"},{"columns":[{"content":[{"inlineContent":[],"type":"paragraph"},{"type":"aside","style":"note","content":[{"inlineContent":[{"text":"Setting up in-app purchases and subscriptions is a tedious task, and FreemiumKit is a ","type":"text"},{"inlineContent":[{"type":"text","text":"huge time saver"}],"type":"strong"},{"text":" by automating it. Once you try it, you will never go back!","type":"text"}],"type":"paragraph"}],"name":"Nicolo Stanciu, NFC.cool"}],"size":1},{"content":[{"type":"paragraph","inlineContent":[]},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The setup is "},{"type":"strong","inlineContent":[{"type":"text","text":"unbelievably simple"}]},{"type":"text","text":" and way faster to get going than any other solution I’ve tried. The SDK documentation is crystal clear! It comes packed with smart automation that work flawlessly out of the box, plus the flexibility to tailor it to your needs. And the support from the developers? Stellar!"}]}],"type":"aside","style":"note","name":"Seou Hounkanrin, Glu Sight"}],"size":1}],"numberOfColumns":2,"type":"row"},{"level":2,"anchor":"FAQ","text":"FAQ","type":"heading"},{"inlineContent":[{"text":"The top 5 most frequently asked questions:","type":"text"}],"type":"paragraph"},{"style":"list","type":"links","items":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront"]},{"inlineContent":[{"text":"Visit the ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs","overridingTitle":"Frequently Asked Questions","overridingTitleInlineContent":[{"text":"Frequently Asked Questions","type":"text"}]},{"text":" page for the full list of questions & answers.","type":"text"}],"type":"paragraph"},{"level":2,"anchor":"Contact","text":"Contact","type":"heading"},{"inlineContent":[{"type":"text","text":"Have questions or need support? Reach out to me at "},{"type":"reference","isActive":true,"identifier":"mailto:freemiumkit@fline.dev"},{"type":"text","text":"."}],"type":"paragraph"},{"level":2,"anchor":"Legal","text":"Legal","type":"heading"},{"inlineContent":[{"type":"text","text":"Cihat Gündüz © 2024. All rights reserved."},{"type":"text","text":" "},{"type":"text","text":"Privacy: No personal data is tracked on this site."},{"type":"text","text":" "},{"type":"reference","identifier":"https:\/\/www.fline.dev\/imprint\/","isActive":true}],"type":"small"}],"kind":"content"}],"identifier":{"url":"doc:\/\/FreemiumKit\/documentation\/Index","interfaceLanguage":"swift"},"sampleCodeDownload":{"action":{"overridingTitle":"Get it Now","type":"reference","identifier":"https:\/\/apps.apple.com\/app\/apple-store\/id6502914189?pt=549314&ct=freemiumkit.app&mt=8","isActive":true},"kind":"sampleDownload"},"schemaVersion":{"patch":0,"minor":3,"major":0},"metadata":{"title":"FreemiumKit","images":[{"type":"icon","identifier":"FreemiumKit.png"}],"roleHeading":"Welcome to","role":"collection"},"hierarchy":{"paths":[[]]},"topicSections":[{"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/SetupGuide","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"]}],"abstract":[{"text":"Simple In-App Purchases and Subscriptions for Apple Platforms:","type":"text"},{"text":" ","type":"text"},{"text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more.","type":"text"}],"references":{"FreemiumKit-Lettering":{"variants":[{"url":"\/images\/FreemiumKit-Lettering.png","traits":["1x","light"]}],"alt":"FreemiumKit Logo","type":"image","identifier":"FreemiumKit-Lettering"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-HowItWorks":{"title":"How does FreemiumKit work? Can I trust it?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","abstract":[{"type":"text","text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app."}],"url":"\/documentation\/freemiumkit\/faq-howitworks","type":"topic","kind":"article","role":"sampleCode"},"PushNotifications":{"variants":[{"url":"\/images\/PushNotifications.jpeg","traits":["1x","light"]}],"alt":"Push Notifications","type":"image","identifier":"PushNotifications"},"Setup-Guide-Thumbnail":{"variants":[{"url":"\/images\/Setup-Guide-Thumbnail.jpeg","traits":["1x","light"]}],"alt":null,"type":"image","identifier":"Setup-Guide-Thumbnail"},"Paywalls":{"variants":[{"url":"\/videos\/Paywalls.mp4","traits":["1x","light"]}],"alt":null,"poster":"Paywalls-Poster","type":"video","identifier":"Paywalls"},"mailto:freemiumkit@fline.dev":{"title":"freemiumkit@fline.dev","url":"mailto:freemiumkit@fline.dev","type":"link","titleInlineContent":[{"type":"text","text":"freemiumkit@fline.dev"}],"identifier":"mailto:freemiumkit@fline.dev"},"https://www.fline.dev/imprint/":{"title":"Imprint","url":"https:\/\/www.fline.dev\/imprint\/","type":"link","titleInlineContent":[{"type":"text","text":"Imprint"}],"identifier":"https:\/\/www.fline.dev\/imprint\/"},"QuickSetup":{"variants":[{"url":"\/videos\/QuickSetup.mp4","traits":["1x","light"]}],"alt":null,"poster":"QuickSetup-Poster","type":"video","identifier":"QuickSetup"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Validation":{"title":"Does FreemiumKit validate purchases?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","abstract":[{"type":"text","text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!"}],"url":"\/documentation\/freemiumkit\/faq-validation","type":"topic","kind":"article","role":"sampleCode"},"FreemiumKit.png":{"variants":[{"url":"\/images\/FreemiumKit.png","traits":["1x","light"]}],"alt":null,"type":"image","identifier":"FreemiumKit.png"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Pricing":{"title":"How does the Pricing work in detail?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"url":"\/documentation\/freemiumkit\/faq-pricing","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/SetupGuide":{"title":"SDK Setup Guide","abstract":[{"type":"text","text":"Learn how to set up your app for our paywalls and live push notifications."}],"role":"article","url":"\/documentation\/freemiumkit\/setupguide","kind":"article","type":"topic","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/SetupGuide","images":[{"type":"icon","identifier":"FreemiumKit.png"}]},"Paywalls-Poster":{"variants":[{"url":"\/images\/Paywalls-Poster.jpeg","traits":["1x","light"]}],"alt":null,"type":"image","identifier":"Paywalls-Poster"},"https://www.youtube.com/watch?v=6JxwA3WieHs":{"title":"See FreemiumKit in Action Now!","url":"https:\/\/www.youtube.com\/watch?v=6JxwA3WieHs","type":"link","titleInlineContent":[{"type":"text","text":"See FreemiumKit in Action Now!"}],"identifier":"https:\/\/www.youtube.com\/watch?v=6JxwA3WieHs"},"https://freemiumkit.app/documentation/freemiumkit/faq-migratefrompaidupfront":{"title":"migrating from a paid app","url":"https:\/\/freemiumkit.app\/documentation\/freemiumkit\/faq-migratefrompaidupfront","type":"link","titleInlineContent":[{"type":"text","text":"migrating from a paid app"}],"identifier":"https:\/\/freemiumkit.app\/documentation\/freemiumkit\/faq-migratefrompaidupfront"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromRevenueCat":{"title":"I use RevenueCat, how can I migrate?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"url":"\/documentation\/freemiumkit\/faq-migratefromrevenuecat","type":"topic","kind":"article","role":"sampleCode"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromPaidUpFront":{"title":"My app is paid-up-front. How can I make it Freemium?","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront","abstract":[{"type":"text","text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased."}],"url":"\/documentation\/freemiumkit\/faq-migratefrompaidupfront","type":"topic","kind":"article","role":"sampleCode"},"QuickSetup-Poster":{"variants":[{"url":"\/images\/QuickSetup-Poster.jpeg","traits":["1x","light"]}],"alt":null,"type":"image","identifier":"QuickSetup-Poster"},"https://apps.apple.com/app/apple-store/id6502914189?pt=549314&ct=freemiumkit.app&mt=8":{"checksum":null,"url":"https:\/\/apps.apple.com\/app\/apple-store\/id6502914189?pt=549314&ct=freemiumkit.app&mt=8","type":"download","identifier":"https:\/\/apps.apple.com\/app\/apple-store\/id6502914189?pt=549314&ct=freemiumkit.app&mt=8"},"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs","abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"images":[{"type":"icon","identifier":"FreemiumKit.png"}],"url":"\/documentation\/freemiumkit\/faqs","type":"topic","kind":"article","role":"article"}}} \ No newline at end of file +{"abstract":[{"type":"text","text":"Simple In-App Purchases and Subscriptions for Apple Platforms:"},{"type":"text","text":" "},{"type":"text","text":"Automation, Paywalls, A\/B Testing, Live Notifications, PPP, and more."}],"hierarchy":{"paths":[[]]},"kind":"article","sampleCodeDownload":{"action":{"identifier":"https:\/\/apps.apple.com\/app\/apple-store\/id6502914189?pt=549314&ct=freemiumkit.app&mt=8","isActive":true,"type":"reference","overridingTitle":"Get it Now"},"kind":"sampleDownload"},"identifier":{"url":"doc:\/\/FreemiumKit\/documentation\/Index","interfaceLanguage":"swift"},"topicSections":[{"identifiers":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/SetupGuide","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"]}],"sections":[],"primaryContentSections":[{"kind":"content","content":[{"text":"Overview","type":"heading","anchor":"Overview","level":2},{"inlineContent":[{"type":"image","identifier":"FreemiumKit-Lettering"}],"type":"paragraph"},{"inlineContent":[{"text":"FreemiumKit is the ultimate solution for Apple platform developers to integrate and manage in-app purchases and subscriptions effortlessly. With support for all Apple platforms, FreemiumKit provides a seamless and efficient way to handle your app’s monetization.","type":"text"}],"type":"paragraph"},{"content":[{"inlineContent":[{"type":"text","text":"Install the Mac app first for a smooth onboarding experience."}],"type":"paragraph"}],"type":"aside","name":"Tip","style":"tip"},{"text":"Key Features","type":"heading","anchor":"Key-Features","level":2},{"text":"One-Click Creation of Monthly\/Yearly\/Lifetime","type":"heading","anchor":"One-Click-Creation-of-MonthlyYearlyLifetime","level":3},{"type":"unorderedList","items":[{"content":[{"inlineContent":[{"inlineContent":[{"text":"Connect API Integration","type":"text"}],"type":"strong"},{"text":": FreemiumKit connects to App Store Connect on your behalf to automate all the steps needed to create your products, saving you a lot of click & wait.","type":"text"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"inlineContent":[{"type":"text","text":"Automatic Pricing"}],"type":"strong"},{"text":": We even calculate the prices for longer periods by default based on your Monthly price in a sensible manner, giving you full control when needed.","type":"text"}]}]},{"content":[{"inlineContent":[{"inlineContent":[{"text":"Combined Review Note","type":"text"}],"type":"strong"},{"text":": The review note updates for all of Monthly\/Yearly\/Lifetime at once.","type":"text"}],"type":"paragraph"}]}]},{"identifier":"QuickSetup","type":"video"},{"text":"Configurable Paywalls","type":"heading","anchor":"Configurable-Paywalls","level":3},{"type":"unorderedList","items":[{"content":[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Paywalls"}]},{"type":"text","text":": Our SDK contains beautiful & localized paywall designs for all Apple platforms."}]}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Remote Config"}]},{"type":"text","text":": Paywalls update immediately so you don’t need to wait for a new app version."}]}]},{"content":[{"inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"A\/B Testing"}]},{"type":"text","text":": Improve your conversion by comparing up to 4 designs in parallel."}],"type":"paragraph"}]}]},{"identifier":"Paywalls","type":"video"},{"text":"Flexible Pricing Adjustments (Coming Soon!)","type":"heading","anchor":"Flexible-Pricing-Adjustments-Coming-Soon","level":3},{"type":"unorderedList","items":[{"content":[{"type":"paragraph","inlineContent":[{"inlineContent":[{"text":"Purchase Power Parity:","type":"text"}],"type":"strong"},{"text":" Adjust prices based on country to maximize revenue & accessibility.","type":"text"}]}]},{"content":[{"type":"paragraph","inlineContent":[{"inlineContent":[{"text":"A\/B Testing:","type":"text"}],"type":"strong"},{"text":" Automatically creates subscription groups so you can test different prices!","type":"text"}]}]}]},{"type":"row","numberOfColumns":3,"columns":[{"size":2,"content":[{"text":"Native Experience","type":"heading","anchor":"Native-Experience","level":3},{"items":[{"content":[{"inlineContent":[{"inlineContent":[{"text":"Full Apple Platforms Support:","type":"text"}],"type":"strong"},{"text":" Seamlessly integrate the SDK with iOS, macOS, visionOS, and tvOS (coming soon).","type":"text"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"text":"Live Purchase Push Notifications:","type":"text"}]},{"text":" Receive real-time notifications for user purchases to stay on top of your app’s performance.","type":"text"}]}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Privacy by Design:"}]},{"type":"text","text":" The SDK avoids sending personal user data to any servers. And we don’t keep your purchase data on our servers."}]}]}],"type":"unorderedList"}]},{"size":1,"content":[{"inlineContent":[{"identifier":"PushNotifications","type":"image"}],"type":"paragraph"}]}]},{"text":"Stellar Documentation & Support","type":"heading","anchor":"Stellar-Documentation--Support","level":2},{"inlineContent":[{"text":"Our customers are amazed by our – quote – “stellar” documentation and support:","type":"text"}],"type":"paragraph"},{"type":"unorderedList","items":[{"content":[{"inlineContent":[{"type":"text","text":"We worked hard on providing an "},{"type":"strong","inlineContent":[{"type":"text","text":"intuitive Onboarding"}]},{"type":"text","text":" inside our app"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"text":"We have ","type":"text"},{"type":"strong","inlineContent":[{"type":"text","text":"detailed guides"}]},{"text":" for various use cases like for ","type":"text"},{"isActive":true,"identifier":"https:\/\/freemiumkit.app\/documentation\/freemiumkit\/faq-migratefrompaidupfront","type":"reference"}]}]},{"content":[{"inlineContent":[{"type":"text","text":"We even recorded a detailed "},{"inlineContent":[{"type":"text","text":"walkthrough video"}],"type":"strong"},{"type":"text","text":" explaining the entire process"}],"type":"paragraph"}]}]},{"text":"Explanation Video on YouTube:","type":"heading","anchor":"Explanation-Video-on-YouTube","level":3},{"inlineContent":[{"identifier":"Setup-Guide-Thumbnail","type":"image"}],"type":"paragraph"},{"inlineContent":[{"type":"reference","isActive":true,"identifier":"https:\/\/www.youtube.com\/watch?v=6JxwA3WieHs"}],"type":"paragraph"},{"text":"FreemiumKit vs. RevenueCat","type":"heading","anchor":"FreemiumKit-vs-RevenueCat","level":2},{"inlineContent":[{"text":"Many people in our community love 😻 RevenueCat, so you might wonder how FreemiumKit compares. The short answer is, that RevenueCat focuses on ","type":"text"},{"inlineContent":[{"type":"text","text":"growth"}],"type":"strong"},{"text":" for ","type":"text"},{"inlineContent":[{"text":"already successful","type":"text"}],"type":"emphasis"},{"text":" customers, whereas FreemiumKit focuses on ","type":"text"},{"inlineContent":[{"text":"convenience","type":"text"}],"type":"strong"},{"text":" for ","type":"text"},{"inlineContent":[{"text":"beginners and Indie developers","type":"text"}],"type":"emphasis"},{"text":". See the following table to get a better understanding of what I mean by that:","type":"text"}],"type":"paragraph"},{"header":"row","type":"table","rows":[[[{"inlineContent":[{"text":"Feature","type":"text"}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"FreemiumKit"}],"type":"paragraph"}],[{"inlineContent":[{"text":"RevenueCat","type":"text"}],"type":"paragraph"}]],[[{"inlineContent":[{"inlineContent":[{"type":"text","text":"Quick Setup"}],"type":"strong"}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"✅ (automated creation of products on Connect)"}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"❌"}],"type":"paragraph"}]],[[{"inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Paywalls"}]}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"✅ (on all Apple Platforms, even visionOS!)"}],"type":"paragraph"}],[{"inlineContent":[{"text":"🚧 (only iOS)","type":"text"}],"type":"paragraph"}]],[[{"inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Built-In Localization"}]}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"✅ (paywalls localized to ~40 languages)"}],"type":"paragraph"}],[{"inlineContent":[{"text":"❌","type":"text"}],"type":"paragraph"}]],[[{"inlineContent":[{"inlineContent":[{"type":"text","text":"Real-Time Notifications"}],"type":"strong"}],"type":"paragraph"}],[{"inlineContent":[{"text":"✅ (push notifications sent to native iPhone app)","type":"text"}],"type":"paragraph"}],[{"inlineContent":[{"text":"❌ (only webhooks)","type":"text"}],"type":"paragraph"}]],[[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Skip Renewal Notifications"}]}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"✅ (reports purchases & "},{"inlineContent":[{"text":"new","type":"text"}],"type":"strong"},{"type":"text","text":" subscriptions)"}]}],[{"type":"paragraph","inlineContent":[{"text":"❌","type":"text"}]}]],[[{"type":"paragraph","inlineContent":[{"inlineContent":[{"text":"Verified Transactions","type":"text"}],"type":"strong"}]}],[{"type":"paragraph","inlineContent":[{"text":"✅ (using StoreKit 2)","type":"text"}]}],[{"type":"paragraph","inlineContent":[{"text":"✅","type":"text"}]}]],[[{"type":"paragraph","inlineContent":[{"inlineContent":[{"text":"A\/B Testing","type":"text"}],"type":"strong"}]}],[{"type":"paragraph","inlineContent":[{"text":"✅ (fast setup, up to 4 designs in parallel)","type":"text"}]}],[{"type":"paragraph","inlineContent":[{"text":"✅ (but a lot of work)","type":"text"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Native App"}]}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"✅ (on all Apple Platforms)"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"❌"}]}]],[[{"type":"paragraph","inlineContent":[{"inlineContent":[{"type":"text","text":"Purchases Dashboard"}],"type":"strong"}]}],[{"type":"paragraph","inlineContent":[{"text":"✅ (in native app)","type":"text"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"✅ (only Web)"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"text":"Purchase Power Parity (Soon!)","type":"text"}]}]}],[{"type":"paragraph","inlineContent":[{"text":"✅ (adjustable slider to mix with Apple prices)","type":"text"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"❌"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"text":"Scalable","type":"text"}]}]}],[{"type":"paragraph","inlineContent":[{"text":"✅ (CDN for remote config, purchases in iCloud)","type":"text"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"✅ (higher price)"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Low App Size Impact"}]}]}],[{"type":"paragraph","inlineContent":[{"text":"✅ (3MB less than RevenueCat)","type":"text"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"❌"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"User Privacy"}]}]}],[{"type":"paragraph","inlineContent":[{"text":"✅ (no personal data sent, server temporary storage)","type":"text"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"❌ (lots of data)"}]}]],[[{"inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Supports Apple Platforms"}]}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"✅ (including visionOS)"}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"✅ (including visionOS)"}],"type":"paragraph"}]],[[{"inlineContent":[{"inlineContent":[{"type":"text","text":"Supports Android & Web"}],"type":"strong"}],"type":"paragraph"}],[{"inlineContent":[{"text":"❌","type":"text"}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"✅"}],"type":"paragraph"}]],[[{"inlineContent":[{"inlineContent":[{"text":"Pricing","type":"text"}],"type":"strong"}],"type":"paragraph"}],[{"inlineContent":[{"text":"Freemium, paid tier ","type":"text"},{"type":"strong","inlineContent":[{"type":"text","text":"below 1%"}]},{"text":" of Revenue","type":"text"}],"type":"paragraph"}],[{"inlineContent":[{"type":"text","text":"Freemium, paid tier exactly 1% of Revenue"}],"type":"paragraph"}]]]},{"text":"Pricing","type":"heading","anchor":"Pricing","level":2},{"inlineContent":[{"text":"FreemiumKit is ","type":"text"},{"inlineContent":[{"text":"completely free to use","type":"text"}],"type":"strong"},{"text":" at the moment for ","type":"text"},{"inlineContent":[{"text":"everyone","type":"text"}],"type":"emphasis"},{"text":".","type":"text"}],"type":"paragraph"},{"inlineContent":[{"text":"In the future, only developers with more than $500 monthly income on App Store Connect will need to pay, and always less than 1% of their income. The full planned pricing table:","type":"text"}],"type":"paragraph"},{"type":"row","numberOfColumns":2,"columns":[{"size":1,"content":[{"rows":[[[{"type":"paragraph","inlineContent":[{"type":"text","text":"Monthly Income"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"Cost"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"text","text":"$0 - $500"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"Free"}]}]],[[{"type":"paragraph","inlineContent":[{"text":"$500 - $1k","type":"text"}]}],[{"type":"paragraph","inlineContent":[{"text":"$5\/mo","type":"text"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"text","text":"$1k - $2k"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"$10\/mo"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"text","text":"$2k - $4.5k"}]}],[{"type":"paragraph","inlineContent":[{"text":"$20\/mo","type":"text"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"text","text":"$4.5k - $7.5k"}]}],[{"type":"paragraph","inlineContent":[{"text":"$45\/mo","type":"text"}]}]]],"type":"table","header":"row"}]},{"size":1,"content":[{"header":"row","type":"table","rows":[[[{"type":"paragraph","inlineContent":[{"type":"text","text":"Monthly Income"}]}],[{"type":"paragraph","inlineContent":[{"text":"Cost","type":"text"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"text","text":"$7.5k - $15k"}]}],[{"type":"paragraph","inlineContent":[{"text":"$75\/mo","type":"text"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"text","text":"$15k - $30k"}]}],[{"type":"paragraph","inlineContent":[{"type":"text","text":"$150\/mo"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"text","text":"$30k - $50k"}]}],[{"type":"paragraph","inlineContent":[{"text":"$300\/mo","type":"text"}]}]],[[{"type":"paragraph","inlineContent":[{"text":"$50k - $100k","type":"text"}]}],[{"type":"paragraph","inlineContent":[{"text":"$500\/mo","type":"text"}]}]],[[{"type":"paragraph","inlineContent":[{"type":"text","text":"$100k+"}]}],[{"type":"paragraph","inlineContent":[{"text":"$1,000\/mo","type":"text"}]}]]]}]}]},{"text":"Get Started","type":"heading","anchor":"Get-Started","level":2},{"inlineContent":[{"text":"Ready to take your app’s monetization to the next level? Download FreemiumKit today and start experiencing the benefits of simplified and powerful in-app purchases & subscriptions.","type":"text"}],"type":"paragraph"},{"inlineContent":[{"identifier":"https:\/\/apps.apple.com\/app\/apple-store\/id6502914189?pt=549314&ct=freemiumkit.app&mt=8","type":"reference","isActive":true},{"text":" ","type":"text"},{"identifier":"https:\/\/apps.apple.com\/app\/apple-store\/id6502914189?pt=549314&ct=freemiumkit.app&mt=8","type":"reference","overridingTitle":"Download Now","overridingTitleInlineContent":[{"type":"text","text":"Download Now"}],"isActive":true}],"type":"paragraph"},{"text":"SDK Setup Guide","type":"heading","anchor":"SDK-Setup-Guide","level":2},{"inlineContent":[{"text":"For a detailed walkthrough on how to integrate the FreemiumKit SDK into your app, check out our ","type":"text"},{"overridingTitleInlineContent":[{"text":"SDK Setup Guide","type":"text"}],"isActive":true,"overridingTitle":"SDK Setup Guide","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/SetupGuide","type":"reference"},{"text":".","type":"text"}],"type":"paragraph"},{"text":"Testimonials","type":"heading","anchor":"Testimonials","level":2},{"inlineContent":[{"text":"Here’s what customers are saying about FreemiumKit:","type":"text"}],"type":"paragraph"},{"type":"row","numberOfColumns":2,"columns":[{"content":[{"type":"paragraph","inlineContent":[]},{"type":"aside","content":[{"inlineContent":[{"type":"text","text":"Setting up in-app purchases and subscriptions is a tedious task, and FreemiumKit is a "},{"type":"strong","inlineContent":[{"type":"text","text":"huge time saver"}]},{"type":"text","text":" by automating it. Once you try it, you will never go back!"}],"type":"paragraph"}],"style":"note","name":"Nicolo Stanciu, NFC.cool"}],"size":1},{"content":[{"type":"paragraph","inlineContent":[]},{"type":"aside","content":[{"type":"paragraph","inlineContent":[{"text":"The setup is ","type":"text"},{"inlineContent":[{"type":"text","text":"unbelievably simple"}],"type":"strong"},{"text":" and way faster to get going than any other solution I’ve tried. The SDK documentation is crystal clear! It comes packed with smart automation that work flawlessly out of the box, plus the flexibility to tailor it to your needs. And the support from the developers? Stellar!","type":"text"}]}],"name":"Seou Hounkanrin, Glu Sight","style":"note"}],"size":1}]},{"text":"FAQ","type":"heading","anchor":"FAQ","level":2},{"inlineContent":[{"text":"The top 5 most frequently asked questions:","type":"text"}],"type":"paragraph"},{"type":"links","items":["doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat","doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront"],"style":"list"},{"inlineContent":[{"text":"Visit the ","type":"text"},{"overridingTitleInlineContent":[{"text":"Frequently Asked Questions","type":"text"}],"type":"reference","isActive":true,"overridingTitle":"Frequently Asked Questions","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"},{"text":" page for the full list of questions & answers.","type":"text"}],"type":"paragraph"},{"text":"Contact","type":"heading","anchor":"Contact","level":2},{"inlineContent":[{"type":"text","text":"Have questions or need support? Reach out to me at "},{"identifier":"mailto:freemiumkit@fline.dev","isActive":true,"type":"reference"},{"type":"text","text":"."}],"type":"paragraph"},{"text":"Legal","type":"heading","anchor":"Legal","level":2},{"inlineContent":[{"text":"Cihat Gündüz © 2024. All rights reserved.","type":"text"},{"text":" ","type":"text"},{"text":"Privacy: No personal data is tracked on this site.","type":"text"},{"text":" ","type":"text"},{"identifier":"https:\/\/www.fline.dev\/imprint\/","isActive":true,"type":"reference"}],"type":"small"}]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"roleHeading":"Welcome to","images":[{"type":"icon","identifier":"FreemiumKit.png"}],"title":"FreemiumKit","role":"collection"},"references":{"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromRevenueCat":{"title":"I use RevenueCat, how can I migrate?","url":"\/documentation\/freemiumkit\/faq-migratefromrevenuecat","abstract":[{"type":"text","text":"See how easy it is to migrate from RevenueCat with our detailed migration guide – takes only ~30 minutes (including read time). And learn about some limitations we currently have."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromRevenueCat"},"doc://FreemiumKit/documentation/FreemiumKit/FAQs":{"title":"FAQs","url":"\/documentation\/freemiumkit\/faqs","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"abstract":[{"type":"text","text":"The most frequently asked questions about FreemiumKit."}],"kind":"article","type":"topic","role":"article","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQs"},"FreemiumKit-Lettering":{"alt":"FreemiumKit Logo","identifier":"FreemiumKit-Lettering","type":"image","variants":[{"traits":["1x","light"],"url":"\/images\/FreemiumKit-Lettering.png"}]},"Paywalls-Poster":{"alt":null,"identifier":"Paywalls-Poster","type":"image","variants":[{"traits":["1x","light"],"url":"\/images\/Paywalls-Poster.jpeg"}]},"https://apps.apple.com/app/apple-store/id6502914189?pt=549314&ct=freemiumkit.app&mt=8":{"identifier":"https:\/\/apps.apple.com\/app\/apple-store\/id6502914189?pt=549314&ct=freemiumkit.app&mt=8","type":"download","checksum":null,"url":"https:\/\/apps.apple.com\/app\/apple-store\/id6502914189?pt=549314&ct=freemiumkit.app&mt=8"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-MigrateFromPaidUpFront":{"title":"My app is paid-up-front. How can I make it Freemium?","url":"\/documentation\/freemiumkit\/faq-migratefrompaidupfront","abstract":[{"type":"text","text":"See how easy it is to migrate from a paid-up-front app to the Freemium model using FreemiumKit, while preserving access to your app for those who already purchased."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-MigrateFromPaidUpFront"},"https://www.fline.dev/imprint/":{"titleInlineContent":[{"text":"Imprint","type":"text"}],"title":"Imprint","identifier":"https:\/\/www.fline.dev\/imprint\/","type":"link","url":"https:\/\/www.fline.dev\/imprint\/"},"doc://FreemiumKit/documentation/FreemiumKit/SetupGuide":{"identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/SetupGuide","images":[{"identifier":"FreemiumKit.png","type":"icon"}],"role":"article","type":"topic","abstract":[{"text":"Learn how to set up your app for our paywalls and live push notifications.","type":"text"}],"kind":"article","url":"\/documentation\/freemiumkit\/setupguide","title":"SDK Setup Guide"},"Paywalls":{"alt":null,"identifier":"Paywalls","type":"video","poster":"Paywalls-Poster","variants":[{"traits":["1x","light"],"url":"\/videos\/Paywalls.mp4"}]},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-HowItWorks":{"title":"How does FreemiumKit work? Can I trust it?","url":"\/documentation\/freemiumkit\/faq-howitworks","abstract":[{"type":"text","text":"Learn why you can trust FreemiumKit to scale with your app and why there’s no long-term lock-in risk for your app."}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-HowItWorks"},"FreemiumKit.png":{"alt":null,"identifier":"FreemiumKit.png","type":"image","variants":[{"traits":["1x","light"],"url":"\/images\/FreemiumKit.png"}]},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Validation":{"title":"Does FreemiumKit validate purchases?","url":"\/documentation\/freemiumkit\/faq-validation","abstract":[{"type":"text","text":"Learn how FreemiumKit deals with validation and how it helps you focus on what’s important – your app’s features!"}],"kind":"article","type":"topic","role":"sampleCode","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Validation"},"doc://FreemiumKit/documentation/FreemiumKit/FAQ-Pricing":{"abstract":[{"type":"text","text":"Learn how we calculate your monthly income and what happens if you exceed your current plan."}],"type":"topic","identifier":"doc:\/\/FreemiumKit\/documentation\/FreemiumKit\/FAQ-Pricing","title":"How does the Pricing work in detail?","kind":"article","url":"\/documentation\/freemiumkit\/faq-pricing","role":"sampleCode"},"QuickSetup-Poster":{"alt":null,"identifier":"QuickSetup-Poster","type":"image","variants":[{"traits":["1x","light"],"url":"\/images\/QuickSetup-Poster.jpeg"}]},"https://www.youtube.com/watch?v=6JxwA3WieHs":{"titleInlineContent":[{"text":"See FreemiumKit in Action Now!","type":"text"}],"title":"See FreemiumKit in Action Now!","identifier":"https:\/\/www.youtube.com\/watch?v=6JxwA3WieHs","type":"link","url":"https:\/\/www.youtube.com\/watch?v=6JxwA3WieHs"},"PushNotifications":{"alt":"Push Notifications","identifier":"PushNotifications","type":"image","variants":[{"traits":["1x","light"],"url":"\/images\/PushNotifications.jpeg"}]},"mailto:freemiumkit@fline.dev":{"titleInlineContent":[{"text":"freemiumkit@fline.dev","type":"text"}],"title":"freemiumkit@fline.dev","identifier":"mailto:freemiumkit@fline.dev","type":"link","url":"mailto:freemiumkit@fline.dev"},"Setup-Guide-Thumbnail":{"alt":null,"identifier":"Setup-Guide-Thumbnail","type":"image","variants":[{"traits":["1x","light"],"url":"\/images\/Setup-Guide-Thumbnail.jpeg"}]},"QuickSetup":{"alt":null,"identifier":"QuickSetup","type":"video","poster":"QuickSetup-Poster","variants":[{"traits":["1x","light"],"url":"\/videos\/QuickSetup.mp4"}]},"https://freemiumkit.app/documentation/freemiumkit/faq-migratefrompaidupfront":{"titleInlineContent":[{"text":"migrating from a paid app","type":"text"}],"title":"migrating from a paid app","identifier":"https:\/\/freemiumkit.app\/documentation\/freemiumkit\/faq-migratefrompaidupfront","type":"link","url":"https:\/\/freemiumkit.app\/documentation\/freemiumkit\/faq-migratefrompaidupfront"}}} \ No newline at end of file diff --git a/documentation/freemiumkit/faq-parentalgate/index.html b/documentation/freemiumkit/faq-parentalgate/index.html new file mode 100644 index 0000000..3d12102 --- /dev/null +++ b/documentation/freemiumkit/faq-parentalgate/index.html @@ -0,0 +1 @@ +Documentation
\ No newline at end of file diff --git a/images/ParentalGate-Customized.png b/images/ParentalGate-Customized.png new file mode 100644 index 0000000000000000000000000000000000000000..7d6b8c31dc61454325d54274f97eeed62cea2566 GIT binary patch literal 231514 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

I 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

#N#EU=n^o=a<+F(GT~OLVT) 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