Fill in the form to arrange a demo

Silent Licensing (Mac)

Silent Licensing allows you to use the functionality of the Paddle SDK with your own UI

If you’re making use of our licensing but want to use your own, custom UI then you’ll need to make the activation call manually and handle the result:


[paddleProduct activateEmail:@"example@email.com"
					 license:@"ABCD-EFGH-IJKL-MNOP"
				  completion:^(BOOL activated, NSError * _Nullable error) {
	// Handle the activation result
}];

paddleProduct?.activateEmail("example@email.com", license: "ABCD-EFGH-IJKL-MNOP", completion: { (activated: Bool, error: Error?) in
    // Handle the activation result
})

If you only want to replace our activation UI then you’ll want to make use of the delegate method on the main Paddle singleton instance:


- (nullable PADDisplayConfiguration *)willShowPaddleUIType:(PADUIType)uiType product:(nonnull PADProduct *)product

willShowPaddle(_ uiType: PADUIType, product: PADProduct) -> PADDisplayConfiguration?

Automatic activation

If you’re making use of our licensing and UI, you can also enable automatic activation. This allows the buyer to skip the activation dialog shown after a successful checkout. Instead the license will be automatically activated with the buyer’s email used on the checkout.

Implementation

To control automatic activation, implement the PaddleDelegate method - (BOOL)canAutoActivate:(PADProduct *)product. This method is called after a successful checkout which results in a license code being generated for the buyer. With this delegate method you can conditionally or unconditionally allow automatic activation.

If this delegate method is not implemented, automatic activation is completely disabled and we’ll continue to show the buyer the license activation dialog.

Unconditionally allow automatic activation:


- (BOOL)canAutoActivate:(PADProduct *)product {
    return YES;
}

func canAutoActivate(_ product: PADProduct) -> Bool {
    return true
}

Conditionally allow automatic activation:


- (BOOL)canAutoActivate:(PADProduct *)product {
    return product.productType == PADProductTypeSDKProduct;
}

func canAutoActivate(_ product: PADProduct) -> Bool {
    return product.productType == .sdkProduct
}

Questions about Paddle?

If you need any help regarding your Paddle integration, please get in touch with our Customer Success team using the form below.

Questions about Paddle?