Невозможно выполнить действие для пользовательских кнопок push-уведомлений. - PullRequest
0 голосов
/ 27 сентября 2018

Я работаю над приложением для iOS, которое включает push-уведомления от устройства к устройствуВ состоянии «Передний план» и «Фон» я могу получать уведомления и выполнять соответствующие действия с помощью соответствующих пользовательских кнопок (ПРИНЯТЬ И ОТКЛОНИТЬ).Все отлично работает в двух упомянутых штатах.Но в состоянии «убито / прекращено», хотя я могу получать уведомления, но я не могу выполнить действие при нажатии пользовательских кнопок (ПРИНЯТЬ И ОТКЛОНИТЬ).Ребята, можете ли вы помочь мне в этом? Notification screenshot with Custom buttons Accept and Reject

//Notification action button function
func setActionCategories(){
    let acceptAction = UNNotificationAction(
        identifier: NAString().notificationAcceptIdentifier(),
        title: NAString().accept().capitalized,
        options: [.init(rawValue: 0)])

    let rejectAction = UNNotificationAction(
        identifier: NAString().notificationRejectIdentifier(),
        title: NAString().reject().capitalized,
        options: [.init(rawValue: 0)])

    let actionCategory = UNNotificationCategory(
        identifier: NAString().notificationActionCategory(),
        actions: [acceptAction,rejectAction],
        intentIdentifiers: [],
        options: [.customDismissAction])

    UNUserNotificationCenter.current().setNotificationCategories(
        [actionCategory])
}

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
    let userInfo = response.notification.request.content.userInfo

    //Here we are performing Action on Notification Buttons & We created this buttons in  "setActionCategories" function.
    if response.notification.request.content.categoryIdentifier == NAString().notificationActionCategory() {

        //Created Firebase reference to get currently invited visitor by E-Intercom
        var gateNotificationRef : DatabaseReference?
        gateNotificationRef = GlobalUserData.shared.getUserDataReference().child(Constants.FIREBASE_CHILD_GATE_NOTIFICATION).child(userUID).child(guestType!).child(guestUID!)

        //Performing accept & reject on click of recently invited visitor by E-Intercom from Notification view.
        switch response.actionIdentifier {

        //If Accept button will pressed
        case NAString().notificationAcceptIdentifier():
            gateNotificationRef?.child(NAString().status()).setValue(NAString().accepted())
            }
            break

        //If Reject button will pressed
        case NAString().notificationRejectIdentifier():                                                         gateNotificationRef?.child(NAString().status()).setValue(NAString().rejected())
            break

        default:
            break
        }
    }
    UIApplication.shared.applicationIconBadgeNumber = 0
    completionHandler()
}

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Добавьте приведенное ниже условие в didFinishLaunchingWithOptions делегат

if launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] != nil {
    // Do what you want to do when remote notification is tapped.
}

, в котором можно вызвать didReceive метод делегата.

0 голосов
/ 27 сентября 2018

Привет, Ашиш, можешь ли ты предоставить нам какой-нибудь код, чтобы лучше помочь тебе?Там должен быть обработчик завершения, где вы можете добавить функцию действия.После этого вы можете выполнять любые нужные вам кнопки.

...