Тихое push-уведомление для некоторых уведомлений с определенной полезной нагрузкой

#ios #swift #xcode #notifications

#iOS #swift #xcode #уведомления

Вопрос:

Я пытаюсь скрыть некоторые указанные Push-уведомления от пользователя, чтобы они не были видны пользователю. Где я могу написать условия для скрытия уведомлений по прибытии, чтобы они не отображались в панели уведомлений. Я пытался сделать это, AppDelgate но не сработало. Есть ли другой способ, которым я могу это сделать?

 func application(applxication: UIApplication, didReceiveLocalNotification notification: UILocalNotification)
    {
        UIApplication.sharedApplication().cancelLocalNotification(<#T##notification: UILocalNotification##UILocalNotification#>)
        //println("Local Notification Received:(notification)")
    }
  

Было бы очень полезно, если бы вы могли мне помочь здесь.

Комментарии:

1. Я также хочу скрыть полученные push-уведомления. Кто-нибудь знает, как с этим можно справиться?

Ответ №1:

Я пробовал это для удаленного уведомления, а не для локального уведомления. Итак, согласно Apple WWDC 2013, если вы передадите content-available" : 1 свою платежную нагрузку, она будет действовать как тихое push-уведомление.

Поэтому просто включите content-available" : 1 в свою полезную нагрузку, как показано ниже, чтобы получить тихое уведомление.

Также в приложении Info.plist должно быть UIBackgroundModes set to remote-notification больше информации здесь для тихого push-уведомления

 {
    aps = {
        "content-available" : 1,
        sound : ""
    };
}
  

Надеюсь, это поможет…

Счастливого кодирования.

Комментарии:

1. Спасибо @janmenjaya… Есть ли способ справиться с этим со стороны приложения, даже если у меня есть «доступный контент» как «0»?

2. Вы можете проверить «доступный контент» в делегате, чтобы узнать, какое из них является тихим уведомлением, а какое нет. Я думаю, вы спрашиваете об этом

3. Например, так: if ([[[userInfo objectForKey:@»точки доступа»] objectForKey:@»доступный контент»] isEqualToNumber:[NSNumber numberWithInt:1]]) { }

4. нет, то, что я имел в виду, было в полезной нагрузке, если я получу «доступный контент»: 0 из приложения, как я смогу скрыть / не показывать это конкретное уведомление.

5. Я думаю, тогда вы не сможете скрыть. Именно по этой причине Apple представила тихое уведомление, если бы это было возможно, они, возможно, не внедрили эту новую технику на WWDC 2013

Ответ №2:

установить

доступно содержимое» : 1

и удалите

Тело

и

предупреждение

из полезной нагрузки.

Это даст вам желаемый результат.

Когда ваше приложение получает push-уведомление такого типа, оно вызывает следующий метод:

 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
  

Комментарии:

1. Спасибо, есть ли какой-либо другой способ справиться с этим через приложение, пока «доступный контент» равен «0»?

2. да, вы можете. но это будет ограничено только запущенным и фоновым режимом. вы не сможете получить или обработать его, если для параметра content-available установлено значение 0, пока ваше приложение находится в автономном режиме.