Как я могу представить конкретное представление в push-уведомлении при получении ответа?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу представить конкретное представление в push-уведомлении при получении ответа?

Сообщение Anonymous »


Я хочу создать протокол в appDelegate и использовать его в push-уведомлении, чтобы отображать представление, когда приложение находится на переднем плане или когда пользователь открывает приложение, я создал один, но он не работает

Это делегат приложения:
импортировать Firebase импортировать FirebaseAppCheck импортировать FirebaseCore импортировать FirebaseFirestore импортировать FirebaseMessaging импортировать FirebaseStorage импортировать GoogleMaps импортировать IQKeyboardManagerSwift импортировать уведомления пользователя протокол AppDelegateProtocol { функция showRequestView() } класс AppDelegate: UIResponder, UIApplicationDelegate { пусть googleApiKey = Constants.googleApiKey var gcmMessageIDKey = "gcm.message_id" окно вар: UIWindow? делегат вар: AppDelegateProtocol? func application(_ application: UIApplication, DidFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Переопределить точку настройки после запуска приложения. GMSServices.provideAPIKey(googleApiKey) пусть провайдерФактори = AppCheckDebugProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) FirebaseApp.configure() Messaging.messaging().delegate = self Messaging.messaging().isAutoInitEnabled = true IQKeyboardManager.shared.enable = правда UNUserNotificationCenter.current().delegate = self let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.current().requestAuthorization( параметры: authOptions, завершениеHandler: { _, _ в } ) application.registerForRemoteNotifications() вернуть истину } func application (_ application: UIApplication, DidReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandlercompleteHandler: @escaping (UIBackgroundFetchResult) -> Void) { printLog (информация пользователя) делегат?.showRequestView() } функциональное приложение (_ приложение: UIApplication, Ошибка DidFailToRegisterForRemoteNotificationsWithError: Ошибка) { print("Невозможно зарегистрироваться для удаленных уведомлений: \(error.localizedDescription)") } // Эта функция добавлена ​​сюда только в целях отладки и может быть удалена, если включена функция Swizzling. // Если Swizzling отключен, эта функция должна быть реализована, чтобы токен APN можно было связать с // токен регистрации FCM. функциональное приложение (_ приложение: UIApplication, DidRegisterForRemoteNotificationsWithDeviceToken устройствоToken: данные) { print("Токен APN получен: \(deviceToken)") // Если функция Swizzling отключена, вы должны установить здесь токен APN. // Messaging.messaging().apnsToken = deviceToken } } расширение AppDelegate: UNUserNotificationCenterDelegate { // Получаем отображаемые уведомления для устройств iOS 10. func userNotificationCenter (_ центр: UNUserNotificationCenter, уведомление willPresent: UNNotification) асинхронный -> UNNotificationPresentationOptions { printLog("представит") // Обработка push-уведомления // Приложение находится на переднем плане, обрабатываем уведомление без представления нового контроллера представления делегат?.showRequestView() пусть userInfo = Notification.request.content.userInfo // Если функция Swizzling отключена, вы должны сообщить Messaging о сообщении для Analytics // Messaging.messaging().appDidReceiveMessage(userInfo) // [START_ИСКЛЮЧИТЬ] // Печать идентификатора сообщения. если let messageID = userInfo[gcmMessageIDKey] { printLog("Идентификатор сообщения: \(messageID)") printLog("Информация о пользователе: \(userInfo)") } // [END_EXCLUDE] // Печатаем полное сообщение. // Измените это на предпочитаемый вами вариант представления вернуть [[.значок, .звук]] } func userNotificationCenter (_ центр: UNUserNotificationCenter, ответ DidReceive: UNNotificationResponse) асинхронный { printLog("получил") пусть userInfo = response.notification.request.content.userInfo // [START_ИСКЛЮЧИТЬ] // Печать идентификатора сообщения. если let messageID = userInfo[gcmMessageIDKey] { printLog("это получено") printLog("Идентификатор сообщения: \(messageID)") } // [END_EXCLUDE] // Если функция Swizzling отключена, вы должны сообщить Messaging о сообщении для Analytics // Messaging.messaging().appDidReceiveMessage(userInfo) // Печатаем полное сообщение. printLog (информация пользователя) } } // [END ios_10_message_handling] расширение AppDelegate: MessagingDelegate { // [НАЧАТЬ обновление_токена] func messages(_ messages: Messaging, DidReceiveRegistrationToken fcmToken: String?) { print("Регистрационный токен Firebase: \(String(описание: fcmToken))") Константы.fcmTokenValue = fcmToken ?? "" let dataDict: [String: String] = ["токен": fcmToken ?? ""] NotificationCenter.default.post( имя: Notification.Name("FCMToken"), объект: ноль, информация о пользователе: dataDict ) // TODO: При необходимости отправьте токен на сервер приложений. // Примечание. Этот обратный вызов запускается при каждом запуске приложения и всякий раз, когда генерируется новый токен. } }
контроллер представления:
класс TransportRequestViewController: UIViewController,AppDelegateProtocol { пусть appDelegate = AppDelegate() переопределить функцию viewDidLoad() { супер.viewDidLoad() appDelegate.delegate = сам printLog("transportRequest VIEW ЗАГРУЗИЛСЯ!") // Выполняем любые дополнительные настройки после загрузки представления. } функция showRequestView() { printLog("функция showRequestViewnnn") let Storyboard = UISstoryboard (имя: «transportRequest», Bundle: .main) пусть vc = Storyboard.instantiateViewController (идентификатор: «transportRequest») как! Транспортреквествиевконтроллер присутствует (vc, анимация: правда, завершение: ноль) }
и когда я получаю push-уведомление, представление не отображается даже printLog("showRequestView functionnnn") не печатался в консоли.
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Задержка при получении контактов с устройства, передаче их в API и получении ответа.
    Anonymous » » в форуме IOS
    0 Ответы
    105 Просмотры
    Последнее сообщение Anonymous
  • Обновление сертификата Apple Push Push Push
    Anonymous » » в форуме IOS
    0 Ответы
    51 Просмотры
    Последнее сообщение Anonymous
  • Столкновение с трудностями в многоадресном push-уведомлении при загрузке Java Spring
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Столкновение с трудностями в многоадресном push-уведомлении при загрузке Java Spring
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Возможен ли таймер обратного отсчета в push-уведомлении?
    Anonymous » » в форуме IOS
    0 Ответы
    74 Просмотры
    Последнее сообщение Anonymous

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