Локальное уведомление не работает - userNotificationCenter(_:willPresent:withCompletionHandler:) не вызывается на переднC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Локальное уведомление не работает - userNotificationCenter(_:willPresent:withCompletionHandler:) не вызывается на передн

Сообщение Anonymous »

У меня есть приложение Swift/iOS, которое использует раскадровки и реализует локальные уведомления с помощью UNUserNotificationCenter. Код уведомления отлично работает во всех других моих приложениях. Однако в этом конкретном приложении мне необходимо включить C++/Objective-C++ в разделе Настройки сборки -> Компилятор Swift - Язык -> Совместимость C++ и Objective-C.
Проблема:
Когда я включаю параметр «Взаимодействие C++/Objective-C», локальные уведомления перестают работать. Ошибок и сбоев нет; уведомления просто не появляются.
Предпробованные действия:
  • Проверил настройки уведомлений. и разрешения в приложении.
  • Гарантировано, что код уведомления работает, когда настройка совместимости отключена.
< strong>Среда:
  • Версия Xcode: 15.0.1
  • Цель развертывания iOS: 13.0
    Язык: Swift
Что может быть причиной сбоя локальных уведомлений, когда «Взаимодействие C++/Objective-C» установлено включено в настройках сборки? Существуют ли какие-либо особые соображения или дополнительные настройки, необходимые для работы уведомлений в этом сценарии?
AppDelegate.swift

Код: Выделить всё

import UIKit
import UserNotifications

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
UNUserNotificationCenter.current().delegate = self
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
if granted {
print("Notification permission granted.")
} else if let error = error {
print("Notification permission error: \(error)")
}
}
return true
}

}

extension AppDelegate: UNUserNotificationCenterDelegate {
private func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler([.alert, .sound])
}

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
completionHandler()
}
}
MainViewController.swift

Код: Выделить всё

@IBAction func submitBtn(_ sender: Any) {
let content = UNMutableNotificationContent()
content.title = "Testing Notification"
content.body = "This is a test notification"

let request = UNNotificationRequest(identifier: "MainViewController", content: content, trigger: nil)

UNUserNotificationCenter.current().add(request) { error in
if let error = error {
print("MainViewControllerLog", "Error delivering notification: \(error)")
} else {
print("MainViewControllerLog", "Notification scheduled: \(content.title) - \(content.body)")
}
}

}
ожидается получение локального уведомления, когда приложение находится на переднем плане

Подробнее здесь: https://stackoverflow.com/questions/786 ... withcomple
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»