Код: Выделить всё
// Called when a push notification is delivered while app is in foreground
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
let userInfo = notification.request.content.userInfo
var eventProperties: [String: Any] = [:]
for (key, value) in userInfo {
if let keyString = key as? String {
eventProperties[keyString] = value
}
}
eventProperties["Source"] = "Warm"
Amplitude.sharedInstance.track(eventType: "push_click", eventProperties: eventProperties)
UserDefaults.standard.set("SECRET", forKey: "pendingDiscountCode")
// Decide how to show the notification
completionHandler([.banner, .sound, .badge])
}
// Called when user taps the push
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
var eventProperties: [String: Any] = [:]
for (key, value) in userInfo {
if let keyString = key as? String {
eventProperties[keyString] = value
}
}
eventProperties["Source"] = "Warm"
Amplitude.sharedInstance.track(eventType: "push_click", eventProperties: eventProperties)
UserDefaults.standard.set("SECRET", forKey: "pendingDiscountCode")
completionHandler()
}
< /code>
Вот код контроллера корневого представления: < /p>
let defaults = UserDefaults.standard
if defaults.string(forKey: "pendingDiscountCode") != nil {
defaults.removeObject(forKey: "pendingDiscountCode")
Amplitude.sharedInstance.track(eventType: "discover_discount_code_modal_shown", eventProperties: nil)
OffModalViewController.present(initialView: self, delegate: self)
return
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... background