Estou usando o serviço de notificação por push no meu aplicativo. Quando o aplicativo está em segundo plano, consigo ver uma notificação na tela de notificação (a tela é exibida quando deslizamos o dedo para baixo na parte superior do dispositivo iOS). Mas se o aplicativo estiver em primeiro plano, o método delegado
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
está sendo chamado, mas a notificação não é exibida na tela de notificação.
Quero mostrar a notificação na tela de notificação, independentemente de o aplicativo estar em segundo plano ou em primeiro plano. Estou cansado de procurar uma solução. Qualquer ajuda é muito apreciada.
iphone
ios
objective-c
push-notification
Ab'initio
fonte
fonte
Respostas:
Para exibir a mensagem de faixa enquanto o aplicativo estiver em primeiro plano, use o seguinte método.
iOS 10, Swift 3/4 :
iOS 10, Swift 2.3 :
Você também deve registrar o delegado do aplicativo como delegado da central de notificações:
fonte
UNUserNotificationsCenter.current().delegate = self
em didFinishLaunchingWithOptions aplicaçãoO código abaixo será um trabalho para você:
fonte
title
texto em negrito é ligeiramente maior e omessage
texto menor.) A opção applicationIconBadgeNumber que está sendo definida como 0 é ocultar o número que aparece na parte superior do ícone do aplicativo no Springboard (por exemplo, significando o número de mensagens não lidas em um aplicativo de email). Neste exemplo, não sei se essa opção é necessária.Para qualquer pessoa que esteja interessada, acabei criando uma exibição personalizada que se parece com o banner push do sistema na parte superior, mas adiciona um botão Fechar (pequeno X azul) e uma opção para tocar na mensagem para ação personalizada. Ele também suporta o caso de mais de uma notificação chegar antes que o usuário tenha tempo de ler / descartar as antigas (sem limite de quantas podem acumular-se ...)
Link para GitHub: AGPushNote
O uso é basicamente on-liner:
E fica assim no iOS7 (o iOS6 tem uma aparência e funcionalidade do iOS6 ...)
fonte
Objetivo C
Pois
iOS 10
precisamos integrar owillPresentNotification
método para mostrar o banner de notificação noforeground
.Se o aplicativo estiver no modo de primeiro plano (ativo)
fonte
Se o aplicativo estiver sendo executado em primeiro plano, o iOS não mostrará um banner / alerta de notificação. Isso é por design. Mas podemos alcançá-lo usando
UILocalNotification
o seguinteVerifique se o aplicativo está no estado ativo ao receber uma
notificação remota . Se estiver no estado ativo, dispare uma UILocalNotification.
RÁPIDO:
fonte
If the app is foremost and visible when the system delivers the notification, the app delegate’s application:didReceiveLocalNotification: is called to process the notification. Use the information in the provided UILocalNotification object to decide what action to take. The system does not display any alerts, badge the app’s icon, or play any sounds when the app is already frontmost.
Se o aplicativo estiver sendo executado em primeiro plano, o iOS não mostrará um banner / alerta de notificação. Isso é por design. Você precisa escrever um código para lidar com a situação do seu aplicativo que recebe uma notificação enquanto está em primeiro plano. Você deve mostrar a notificação da maneira mais apropriada (por exemplo, adicionando um número de crachá a um
UITabBar
ícone, simulando um banner da Central de Notificações, etc.).fonte
UNUserNotificationCenter
API). Juntamente com a nova API, agora é possível mostrar as notificações se o aplicativo estiver em primeiro plano. Portanto, se você estiver confuso por causa das respostas diferentes nesta pergunta, é porque algumas das respostas são muito antigas e descrevem apenas o comportamento do iOS 9 e anterior, enquanto as outras não levam em conta que oUNUserNotificationCenter
conteúdo está disponível apenas em iOS 10.Xcode 10 Swift 4.2
Para mostrar a notificação por push quando seu aplicativo estiver em primeiro plano -
Passo 1 : adicione delegado UNUserNotificationCenterDelegate na classe AppDelegate.
Passo 2 : definir o delegado UNUserNotificationCenter
Etapa 3: esta etapa permitirá que seu aplicativo mostre a notificação por push mesmo quando o aplicativo estiver em primeiro plano
Etapa 4: esta etapa é opcional . Verifique se o aplicativo está em primeiro plano e se está em primeiro plano e, em seguida, mostre a PushNotification local.
Função de Notificação Local -
fonte
De acordo com a documentação da apple , Sim, você pode exibir uma notificação enquanto o aplicativo está sendo executado
fonte
UNUserNotificationCenterDelegate
o protocoloviewDidLoad
extension AppDelegate: UNUserNotificationCenterDelegate
Você pode criar sua própria notificação que imita o alerta do banner.
Uma maneira é criar uma visão geral personalizada que se pareça com o banner e possa animar e responder a toques. Com isso em mente, você pode criar banners ainda melhores com ainda mais funcionalidade.
Ou você pode procurar uma API que faça isso por você e adicioná-las como podfiles ao seu projeto.
Aqui estão algumas que eu usei:
https://github.com/terryworona/TWMessageBarManager
https://github.com/toursprung/TSMessages
fonte
TWMessageBarManager
pode ser facilmente chamado e usado via appdelegate, pois usa o padrão de design singleton. Obrigado pelos links.Aqui está o código para receber a notificação por push quando o aplicativo estiver no estado ativo (em primeiro plano ou aberto). Documentação UNUserNotificationCenter
Se você precisar acessar as informações do usuário da notificação, use o código:
notification.request.content.userInfo
fonte
Adicionar essa linha completeHandler para delegar o método resolveu o mesmo problema para mim:
fonte
Para o Swift 5 analisar o dicionário PushNotification
Para obter o viewController superior no qual mostramos topBanner
fonte
guard
afirmação é do seu amigo :-)No delegado do aplicativo, use o código abaixo
fonte
Como mencionado acima, você deve usar
UserNotification.framework
para conseguir isso. Mas, para os meus propósitos, tenho que mostrá-lo no aplicativo de qualquer maneira e queria teriOS 11
estilo, por isso criei uma pequena exibição auxiliar, talvez fosse útil para alguém.Visualização de notificação por push do iOS 11 do GitHub .
fonte
Melhor abordagem para este objetivo é adicionar
UNUserNotificationCenterDelegate
emAppDelegate
usandoextension AppDelegate: UNUserNotificationCenterDelegate
Isso extensão informa o aplicativo para ser capaz de obter uma notificação quando em usoE implemente esse método
Este método será chamado no delegado apenas se o aplicativo estiver em primeiro plano .
Portanto, a implementação final:
E para chamar isso, você deve definir o delegado no AppDelegate em
didFinishLaunchingWithOptions
adicionar esta linhaVocê pode modificar
com
fonte
Para Swift 5
É isso aí!
fonte
Como o @Danial Martine disse que o iOS não mostrará um banner / alerta de notificação. Isso é por design. Mas se realmente for necessário, existe um caminho. Eu também consegui isso da mesma forma.
1. Faça o download do trabalho do quadro de análise no Parse FrameWork
2.Importação
#import <Parse/Parse.h>
3. Adicione o seguinte código ao seu método didReceiveRemoteNotification
O PFPush cuidará de como lidar com a notificação remota. Se o aplicativo estiver em primeiro plano, isso mostra o alerta, caso contrário, mostra a notificação na parte superior.
fonte
Se o seu aplicativo estiver no estado de primeiro plano, isso significa que você está usando o mesmo aplicativo. Portanto, não há necessidade de mostrar notificações no topo em geral.
Ainda assim, se você quiser mostrar uma notificação nesse caso, precisará criar sua Visualização de alerta personalizada ou Visualização personalizada como o Toast ou algo mais para mostrar ao usuário que você recebeu uma notificação.
Você também pode mostrar um selo na parte superior se tiver esse tipo de recurso no seu aplicativo.
fonte