# In-App Notifications
In-app notifications are modal messages displayed while your app is in the foreground. SDK handles them automatically - when a Positive User in-app message arrives, it's presented on top of your current view controller with no extra setup required.
# Customize the close button label
The close button reads "Close" by default. Set inAppAlertCloseButtonText before the SDK is initialized to change it globally:
UserSDK.inAppAlertCloseButtonText = "Got it"
UserSDK.default = UserSDK(
application: application,
apiKey: "YOUR_API_KEY",
baseURL: "your-domain.user.com",
shouldTrackActivities: false
)
# Use a custom font
If your in-app messages reference a font that isn't a system font, implement FontResolving and assign it to the SDK:
class AppFontResolver: FontResolving {
func resolveFontFor(name: String, size: CGFloat) -> UIFont? {
return UIFont(name: name, size: size)
}
}
UserSDK.default?.fontResolver = AppFontResolver()
The SDK calls resolveFontFor(name:size:) whenever it needs to render text in an in-app message. Return nil to fall back to the system font.
# Handle button taps
By default, buttons in in-app messages open their URL in the browser. To intercept that - for example, to handle a deep link inside your app - implement InAppNotificationClickDelegate:
class AppInAppDelegate: InAppNotificationClickDelegate {
func inAppNotificationDidClick(url: URL) -> Bool {
guard url.scheme == "myapp" else {
return false // not your URL - let the SDK open it in the browser
}
// handle deep link navigation
return true // you handled it, SDK won't open the browser
}
}
UserSDK.default?.inAppNotificationClickDelegate = AppInAppDelegate()
Returning true tells SDK you've handled the URL. Returning false lets SDK open it.