Purchasely
4.4
4.4
  • Welcome page
  • General
    • Presentation
    • Release notes
  • Quick start
    • Console Configuration
    • SDK Implementation
    • Testing
    • Sample
  • Basic configuration
    • Console Configuration
      • Creating a new application
      • Creating your Products
        • App Store
        • Play Store
        • Huawei App Gallery
        • Amazon App Store
        • Products & Plans
      • Design your Paywalls
      • Design your Paywalls-Latest
        • Carousel
        • Carousel Flow
        • Features List
        • Features List & Plan Picker with 2 & 3 columns
        • Feature list overlay
        • Plan picker horizontal
        • Plan picker with 2 and 3 Column
    • SDK installation
      • iOS SDK
      • Android SDK
      • React Native SDK
      • Cordova SDK
      • Flutter SDK
      • Unity SDK
    • SDK configurations
      • Paywall observer mode
      • Full mode
      • StoreKit 2
      • Appendices
        • Start the SDK
        • Set User Id
        • Notify when the app is ready
        • Present paywalls
        • Unlock content / service
        • Close SDK (Android only)
    • Stripe
    • Purchasely with RevenueCat
  • S2S notifications
    • Server-to-server notifications ?
    • Apple App Store
    • Google Play Store
    • Huawei App Gallery
  • Analytics
    • Dashboards
      • Introduction
      • Live
      • Subscriptions
      • Cohorts
      • Trials
      • Events
    • Events
      • Webhook events
        • Subscription events
        • Subscription events attributes
      • SDK events
        • UI events
        • UI attributes
  • Integrations
    • Webhook
      • Receiving and understanding messages
      • Managing entitlements
      • Detailed sequence diagrams
    • Airship
    • Amplitude
    • AppsFlyer
    • Adjust
    • Piano analytics(ex AT Internet)
    • Batch
    • Branch
    • Braze
    • Clevertap
    • Customer.io
    • Firebase
    • Iterable
    • Mixpanel
    • MoEngage
    • OneSignal
    • Segment
    • Brevo(ex Sendinblue)
  • Advanced Features
    • Asynchronous paywalls
    • NEW: Promotional offers
    • Anonymous user
    • Associating content
    • Audiences
    • Customising UI
      • Errors & alerts
      • Controllers (iOS) / Fragments (Android)
    • Deeplinks automations
    • Disable placements
    • Displaying users subscriptions
    • Localization
    • Lottie animations
    • Non-subscription products
    • Paywall action interceptor
    • Promoting your products
      • Self-promotion
      • Promoting In-App Purchases
    • Purchase manually
    • Subscription status
    • Use your own paywall
  • Others
    • Frequently Asked Questions
    • Migration guides
      • Migrate to Purchasely
      • Webhook
        • Migrate to Webhook v3.0
      • SDK
        • Migrate to SDK v3.0
          • v2.2.0
          • v2.1.3
        • Migrate to SDK v3.1
        • Migrate to SDK v3.2
        • Migrate to SDK v4.0.0
  • TESTING
    • Testing Cycle Durations
Powered by GitBook

© Purchasely 2020-2023

On this page
  • Use cases
  • Implementation

Was this helpful?

Edit on GitHub
  1. Advanced Features

Disable placements

PreviousDeeplinks automationsNextDisplaying users subscriptions

Last updated 1 year ago

Was this helpful?

The feature described in this section is supported on the following versions and above:

  • iOS: 3.5.0

  • Android: 3.5.0

  • ReactNative: 2.5.0

  • Cordova: 2.5.0

  • Flutter: 1.5.0

are a powerful tool to trigger a paywall at a certain moment in your app journey. Once you define a placement in the code the marketer can choose what to display to whom.

During your Purchasely setup you will be designing and defining the placements needed. You could also be tempted to add some placements that you might want to use in the future but as it would display a paywall you didn't.

This is exactly why this paywall disablement feature is made for. It is now possible to pre-create placements but associated to a paywall yet.

Use cases

Besides this ability to be more flexible in your marketing strategy, here are some good uses cases you can unlock with this feature

  • Test the impact of a paywall at the beginning of the on boarding process or at the end

  • Launch a specific promo to specific on app launch

You should now be defining as many placements as imagined even if you don't intend to use them to avoid app releases.

Implementation

Purchasely.fetchPresentation(for: "onboarding", fetchCompletion: { presentation, error in
    guard let presentation = presentation, error == nil else {
        print("Error while fetching presentation: \(error?.localizedDescription ?? "unknown")")
        return
    }
    
    if presentation.type == .deactivated {
        
        // nothing to display
        
    }
})
[Purchasely fetchPresentationFor:@"onboarding" fetchCompletion:^(PLYPresentation * _Nullable presentation, NSError * _Nullable error) {
    if (error != nil) {
        NSLog(@"Error while fetching presentation: %@", error.localizedDescription);
        return;
    }
    
    if (presentation.type == PLYPresentationTypeDeactivated) {
        // nothing to display
    }
} completion:nil];
Purchasely.fetchPresentationForPlacement("onboarding") { presentation, error ->
    if(error != null) {
        Log.d("Purchasely", "Error fetching paywall", error)
        return@fetchPresentationForPlacement
    }

    when(presentation?.type) {
        PLYPresentationType.NORMAL,
        PLYPresentationType.FALLBACK -> {
            val paywallView = presentation.buildView(
                context = this@MainActivity,
                viewProperties = PLYPresentationViewProperties(
                    onClose = {
                        // TODO remove view
                    }
                )
            )
            // Display Purchasely paywall
        }
        PLYPresentationType.DEACTIVATED -> {
            // No paywall to display for that placement
        }
        PLYPresentationType.CLIENT -> {
            // Display your own paywall
        }
        else -> {
            //No presentation, it means an error was triggered
        }
    }
}
Purchasely.fetchPresentationForPlacement(
    this,
    "onboarding",
    null,
    (presentation, error) -> {
        if(error != null) {
            Log.d("Purchasely", "Error fetching paywall", error);
            return null;
        }
    
        if(presentation.getType() == PLYPresentationType.DEACTIVATED) {
            // No paywall to display
        }
    
        return null;
    }
);
try {
  // Fetch presentation to display
  const presentation = await Purchasely.fetchPresentation({
      placementId: 'onboarding'
  })

  if(presentation.type == PLYPresentationType.DEACTIVATED) {
    // No paywall to display
    return
  }
} catch (e) {
  console.error(e);
}
try {
  var presentation = await Purchasely.fetchPresentation("ONBOARDING");

  if (presentation == null) {
    print("No presentation found");
    return;
  }

  if (presentation.type == PLYPresentationType.deactivated) {
    // No paywall to display
    return;
  }
} catch (e) {
  print(e);
}
// coming soon
Placements
audiences