Descrição:
Estou tentando usar Freschat SDK para lidar com as notificações push dentro do AppDelegate.m, mas não parece funcionar com a extensão de serviço de um sinal.
Ambiente
Etapas para reproduzir o problema:
Instale o OneSignal SDK usando npm em seu projeto
Algo mais:
(traços de pilha de travamento, bem como qualquer outra informação aqui)
@ nitish1099 O que você quer dizer quando diz "parece não funcionar com a extensão de serviço OneSignal" ...?
Além disso, o SDK do Freschat é um código fechado, então, infelizmente, não há muito que possamos fazer em termos de depurar a incompatibilidade. Quando você remove o SDK do projeto, o método AppDelegate é chamado?
Você pode precisar usar os métodos UNUserNotificationCenterDelegate
vez de receber chamadas de método de evento de notificação
@ Nightsd01 Não sendo um desenvolvedor nativo, você pode me dizer se a extensão do serviço de notificação substitui o didReceiveRemoteNotification? Você também poderia me dizer como usar UNUserNotificationCenterDelegate ou se você pode compartilhar um guia que posso consultar.
@ Nightsd01 Alguma atualização?
Desculpe pela (muito) demora na resposta aqui, mas há algumas coisas.
Em primeiro lugar, application:didReceiveRemoteNotification:
está obsoleto. Você vai querer usar application:didReceiveRemoteNotification:fetchCompletionHandler:
vez disso. Mas eu não recomendaria usar isso também, você definitivamente deve usar os métodos UNUserNotificationCenterDelegate
se quiser executar o código nativo quando uma notificação for recebida.
A extensão do serviço de notificação não substitui este método.
Para usar UNUserNotificationCenterDelegate
, edite AppDelegate.h
e adicione:
#import <UserNotifications/UserNotifications.h>
Em seguida, altere a interface AppDelegate para implementar o protocolo UNUserNotificationCenterDelegate
:
<strong i="18">@interface</strong> AppDelegate : UIResponder <UIApplicationDelegate, UNUserNotificationCenterDelegate>
Em AppDelegate.m
dentro do método didFinishLaunchingWithOptions:
, você deve adicionar a seguinte linha:
UNUserNotificationCenter.currentNotificationCenter.delegate = self;
Finalmente, você pode adicionar o seguinte método, que agora será chamado sempre que uma notificação for recebida:
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {
//do stuff
}
Fechando uma vez que não é um problema com nosso SDK
Comentários muito úteis
Desculpe pela (muito) demora na resposta aqui, mas há algumas coisas.
Em primeiro lugar,
application:didReceiveRemoteNotification:
está obsoleto. Você vai querer usarapplication:didReceiveRemoteNotification:fetchCompletionHandler:
vez disso. Mas eu não recomendaria usar isso também, você definitivamente deve usar os métodosUNUserNotificationCenterDelegate
se quiser executar o código nativo quando uma notificação for recebida.A extensão do serviço de notificação não substitui este método.
Para usar
UNUserNotificationCenterDelegate
, editeAppDelegate.h
e adicione:Em seguida, altere a interface AppDelegate para implementar o protocolo
UNUserNotificationCenterDelegate
:Em
AppDelegate.m
dentro do métododidFinishLaunchingWithOptions:
, você deve adicionar a seguinte linha:Finalmente, você pode adicionar o seguinte método, que agora será chamado sempre que uma notificação for recebida:
Fechando uma vez que não é um problema com nosso SDK