Как заставить не показывать push уведомление, о котором не знает приложение?

Для того чтобы приложение не показывало push-уведомления, о которых оно не знает, вам необходимо модифицировать настройки уведомлений в самом приложении, а также использовать определенные методы и свойства в iOS SDK.

Во-первых, необходимо добавить в ваше приложение поддержку уведомлений путем добавления «App ID» в панели управления разработчика iOS и настройки Provisioning Profile для вашего приложения. Это позволит вашему приложению получать push-уведомления от сервера.

Затем вы должны настроить ваше приложение для обработки полученных уведомлений. Ваше приложение должно зарегистрироваться для получения push-уведомлений, используя метод registerForRemoteNotifications. Это можно сделать в методе applicationDidFinishLaunching вашего AppDelegate, вызвав метод:

UIApplication.shared.registerForRemoteNotifications()

Затем, после успешной регистрации вашего приложения для получения push-уведомлений, вы можете получать и обрабатывать полученные уведомления в методе didReceiveRemoteNotification вашего AppDelegate. В этом методе вы можете определить, какие уведомления нужно отображать пользователям, а какие нет.

Например, если вы хотите отобразить только уведомления, которые были отправлены приложению, вы можете проверить userInfo, которая содержит информацию о полученном уведомлении. Вы можете добавить ключ app_notification в userInfo, и установить его значение в true, когда уведомление отправляется вашему приложению. Тогда вы можете проверить это значение и решить, отображать ли уведомление пользователю:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
    if let appNotification = userInfo["app_notification"] as? Bool, appNotification {
        // Обработка уведомления, которое было отправлено приложению
        // Отображение уведомления пользователю
    } else {
        // Уведомление не было отправлено приложению
        // Не отображать уведомление пользователю
    }
}

Таким образом, ваше приложение будет знать только о тех уведомлениях, которые были отправлены ему, и будет отображать только эти уведомления пользователю. Уведомления, которые не были отправлены вашему приложению, не будут отображаться.

Однако стоит отметить, что это не гарантирует, что уведомления не будут отображаться вообще. Система iOS по умолчанию может обрабатывать и отображать другие уведомления, например, уведомления от iMessage или FaceTime. Если вы хотите предотвратить отображение всех уведомлений (кроме тех, которые были отправлены вашему приложению), вам необходимо использовать режим «Не беспокоить» в настройках устройства пользователя.