Customize pop-up alerts

What are custom pop-up alerts?

We want to make the iOS app installation and activation process straightforward and transparent for our users. To aim this, starting with version 3.0.0, the iOS Setapp Framework includes default alerts that cover all possible scenarios when users must be informed of their progress. The Setapp alerts are branded according to Setapp Brand Guidelines.

Nonetheless, you might want brand alerts according to their design guide. We allow you to do this but must ensure that your custom alerts cover all the scenarios and meet our requirements.

Example of Setapp alert:

1486

The alert notifies users about successful app activation.

📘

How to implement standard Setapp alerts?

Setapp alerts are provided with our framework. You don't need to do extra actions to have them in your app. However, you must remove your old implementation of alerts if you had it.

Remove outdated alert implementation (if needed)

Before Setapp iOS Framework 3.0.0, pop-up alerts in your apps were optional. We didn't have our alerts, and we gave you the freedom to decide whether you wanted to implement them in your app or not.

Those of you who had your own pop-up alerts before version 3.0.0, must remove the old open(… method that called viewController(for:) method of the shared instance of the SetappManager class. Otherwise, the build error appears.

Customize pop-up alerts

Please note that you must design pop-up alerts for all scenarios used in Setapp. Please see the list of alerts below.

Once all the alerts are ready, follow these steps to add them to Setapp:

  1. Implement a custom messages presenter by conforming SetappMessagesPresenterProtocol
  2. Set it to SetappManager.shared.setMessagesPresenter(_:)

List of Setapp alerts

AlertsError codeSetapp copy
Alert 1: The app is successfully activated..activationSuccessHeadline: “[App name] activated”
Text: “[App name] is now ready to use via your Setapp subscription. Keep going and try it out.“;
Button: "Got it" (close the alert).
Alert 2: User tries to activate the already activated app.activationSuccessHeadline: “[App name] activated”
Text: “[App name] is now ready to use via your Setapp subscription. Keep going and try it out.“;
Button: "Got it" (close the alert).
Alert 3: The device limit has been reached.
The alert is displayed the first time the application is activated from a specific device.
.error(.deviceLimit)Headline: "You’ve reached your device limit."
Text: "Go to your Setapp account and disconnect unnecessary devices."
Primary button: “Go to My Setapp.”
Secondary button: “Not now” (close the alert).
Alert 4: Issue with scanning QR code from Setapp desktop app.error(.expiredAuthenticationToken)Headline: "We have a little problem."
Text: "Scanning QR code failed. Please go to the Setapp app on your Mac and scan the QR code again."
Button: "Got it" (close the alert).
Alert 5: Issue with scanning QR code from Web account.error(.expiredAuthenticationToken)Headline: "We have a little problem".
Text: "Scanning QR code failed. Please go back to your Setapp account and scan the QR code again."
button: "Got it" (close the alert).
Alert 6: Issue with transition via a web link from Web account accessed from iOS device.error(.expiredAuthenticationToken)Headline: "We have a little problem."
Text: "App activation failed. Please go back to your Setapp account and try to activate the app again."
Primary button: "Go to My Setapp" (link to Apps catalog).
Secondary button: “Not now” (close the alert).
Alert 7: Unknown issue.
Generic pre-contact support.
.error(.generic)Headline: "Something went wrong."
Text: "Please try again."
Button: "Ok."
Alert 8: Unknown issue.
Generic contact support.
.error(.generic)Headline: "Something went wrong."
Text: "Try again or contact our support team for help."
Primary button: “Contact Support Team.”
Secondary button: “Not now” (close the alert).
Alert 9: Network error..error(.noInternet)Headline: "No internet connection."
Text: "Please go online and try again."
Button: “Ok.”
Alert 10: Connection timeout is reached..error(.timeout)Headline: "Slow internet connection."
Text: "It takes too long to load. Please check if you're still connected to the internet and try again."
Button: “Ok.”