Foundation
Wave goodbye to all those subscription management tasks
Whether you’re integrating subscriptions for the first time or
updating old code, with Glassfy Foundation it’ll be the last time
you have to deal with it.
Glassfy.initialize(apiKey:"8NOV6FQBHHRJ4F9N2HV0HUXOQ5LL0QA3")
Glassfy.offerings { (offers, error) in
guard let offer = offers?["my_offering"],
let sku = offer.skus.first else { return }
Glassfy.purchase(sku: sku) {(t, error) in
if let permission = t?.permissions["premium"],
permission.isValid {
// unlock premium
}
}
}
[Glassfy initializeWithAPIKey:@"8NOV6FQBHHRJ4F9N2HV0HUXOQ5LL0QA3" watcherMode:NO];
[Glassfy offeringsWithCompletion:^(GYOfferings *offers, NSError *err) {
GYOffering *offering = offers[@"my_offering"];
if (offering == nil)
return;
GYSku *sku = offering.skus.firstObject;
[Glassfy purchaseSku:sku completion:^(GYTransaction *t,NSError *error) {
if (t == nil)
return;
GYPermission *p = t.permissions[@"premium"];
if (p != nil && p.isValid) {
// unlock premium
}
}];
}];
Glassfy.initialize(this, "8NOV6FQBHHRJ4F9N2HV0HUXOQ5LL0QA3", false, null)
Glassfy.offerings { offers, error ->
val offer = offers?.all?.find { o -> o.offeringId == "my_offering" }
val sku = offer?.skus?.firstOrNull() ?: return@offerings
Glassfy.purchase(this, sku) { transaction, err ->
transaction?.permissions
?.all
?.find { p -> p.permissionId == "premium" && p.isValid }
?.let {
// unlock premium
}
}
}
Glassfy.initialize(this, "8NOV6FQBHHRJ4F9N2HV0HUXOQ5LL0QA3", false, null);
Glassfy.offerings((offers, error) -> {
Sku sku = null;
if (offers != null) {
for (Offering o : offers.getAll()) {
if (o.getOfferingId().equals("my_offering") && o.getSkus().size() > 0) {
sku = o.getSkus().get(0);
break;
}
}
}
if (sku == null) { return; }
Glassfy.purchase(this, sku, (transaction, err) -> {
if (transaction != null) {
for (Permission p : transaction.getPermissions().getAll()) {
if (p.getPermissionId().equals("premium") && p.isValid()) {
// unlock premium
}
}
}
});
});
await Glassfy.initialize("8NOV6FQBHHRJ4F9N2HV0HUXOQ5LL0QA3");
var offerings = await Glassfy.offerings();
var offering = offerings.all
?.singleWhere((offering) => offering.offeringId == "my_offering");
var sku = offering?.skus?.first;
if (sku != null) {
var transaction = await Glassfy.purchaseSku(sku);
var permission = transaction.permissions?.all
?.singleWhere((permission) => permission.permissionId== "premium");
if (permission?.isValid==true) {
// unlock premium
}
await Glassfy.initialize("8NOV6FQBHHRJ4F9N2HV0HUXOQ5LL0QA3", false);
const offerings = await Glassfy.offerings();
const offering = offerings.all.find(
(off) => off.identifier === "my_offering"
);
if (!offering) return;
const sku = offering.skus[0];
const transaction = await Glassfy.purchaseSku(sku);
const permission = transaction.permissions.all.find(
(p) => p.permissionIdentifier === "premium"
);
if (permission?.isValid) {
// unlock premium
}
await Glassfy.initialize({
apiKey: "8NOV6FQBHHRJ4F9N2HV0HUXOQ5LL0QA3",
watcherMode: false
});
const offerings = await Glassfy.offerings();
const offering = offerings.all.
find((offering) => offering.offeringId == "my_offering");
if (!offering)
return;
const sku = offering.skus[0];
const transaction = await Glassfy.purchaseSku({ sku });
const permission = transaction.permissions.all.
find((permission) => permission.permissionId == "premium");
if (permission?.isValid) {
// unlock premium
}
Stop worrying about subscription
infrastructure, once and for all
We take care of verifying permissions, receiving S2S notification,
verifying receipts, subscription status, and corner cases.
Sync Your Data Cross-Platform,
Automatically
Cross-platform subscription sync on iOS, Android, Stripe and Paddle.
Buying a subscription on the web will automatically unlock access on
mobile.
Easy Upgrades to Higher Versions
Future-proof your app with Glassfy's automatic upgrades to the latest
versions like Google Billing 5.
Glassfy vs In-house and other SDKs
In-house | Third-Party SDK | Glassfy Foundation | |
General Costs | Maintenance of server and client | 1% MTR ($2.5K or more) | Free |
Cross-platform Subscription Management (iOS, Android, Paddle, Stripe) | Complex corner cases | 1% MTR ($2.5K or more) | Free |
Support for 3rd Party Frameworks (Flutter, ReactNative, Ionic) | Complex maintenance | 1% MTR ($2.5K or more) | Free |
Upgrades to Higher Versions (ie. Google Billing 5) | Distracting your team from developing your product | 1% MTR ($2.5K or more) | Free |
Advanced Analytics & 3rd Party Integrations | Distracting your team from developing your product | 1% MTR ($2.5K or more) | Free |
Monetization Tools (A/B testing, Remote paywall configuration, Promotional codes) | Distracting your team from developing your product | 1% MTR ($2.5K or more) | Free |
Support | Constant tech support | Email only | Live-chat & Email |
Your Data, Your Control
Whether you're looking to switch to our platform or considering moving
back to a previous solution, we facilitate a risk-free transition.
Import or export your historical data effortlessly and maintain full
ownership and control with our comprehensive REST API.
Gain Real-Time Data Insights
Connect with third-party services like Segment and Mixpanel, utilize
webhooks to keep your database fresh and dive into advanced analytics
for a comprehensive understanding of your app’s performance in
real-time.
Grow Faster with Monetization Tools
Remotely a/b test prices & paywalls and run monetization campaigns
with promotional codes, all from the Glassfy dashboard.
Open source SDK
Simple and transparent documentation
Glassfy’s lightweight SDK is completely transparent and free – no
hidden costs, no monthly revenue limits, no commissions. Just pure
performance without complex in-house backend or maintenance.
Ready to
get started ?
get started ?
Start in Watcher Mode - partial integration of Glassfy’s SDK - to
monitor metrics, see advanced charts, receive subscription events and
webhooks, activate triggers, receive reports, and more… Without
changing your purchase code and infrastructure!
Build for free