La description:
J'essaie d'utiliser Freschat SDK pour gérer leurs notifications push dans AppDelegate.m mais cela ne semble pas fonctionner avec l'extension de service onesignal.
Environnement
Étapes pour reproduire le problème :
Installez le SDK OneSignal à l'aide de npm dans votre projet
Rien d'autre:
(crash stacktraces, ainsi que toute autre information ici)
@ nitish1099 Que voulez-vous dire lorsque vous dites "ça ne semble pas fonctionner avec l'extension de service OneSignal"... ?
De plus, le SDK de Freschat est une source fermée, donc malheureusement, nous ne pouvons pas faire grand-chose en termes de débogage de l'incompatibilité. Lorsque vous supprimez leur SDK de votre projet, la méthode AppDelegate est-elle appelée ?
Vous devrez peut-être utiliser les méthodes UNUserNotificationCenterDelegate
place pour recevoir des appels de méthode d'événement de notification
@Nightsd01 N'étant pas un développeur natif, pouvez-vous me dire si l'extension du service de notification remplace la didReceiveRemoteNotification ? Pourriez-vous également me dire comment utiliser UNUserNotificationCenterDelegate ou si vous pouvez partager un guide auquel je peux me référer.
@Nightsd01 Des mises à jour ?
Désolé pour la réponse (très) tardive ici, mais il y a quelques petites choses.
Tout d'abord, application:didReceiveRemoteNotification:
est obsolète. Vous voudrez plutôt utiliser application:didReceiveRemoteNotification:fetchCompletionHandler:
. Mais je vous déconseille également de l'utiliser, vous devez absolument utiliser les méthodes UNUserNotificationCenterDelegate
si vous souhaitez exécuter du code natif lorsqu'une notification est reçue.
L'extension de service de notification ne remplace pas cette méthode.
Pour utiliser le UNUserNotificationCenterDelegate
, modifiez AppDelegate.h
et ajoutez :
#import <UserNotifications/UserNotifications.h>
Modifiez ensuite l'interface AppDelegate pour implémenter le protocole UNUserNotificationCenterDelegate
:
<strong i="18">@interface</strong> AppDelegate : UIResponder <UIApplicationDelegate, UNUserNotificationCenterDelegate>
Dans AppDelegate.m
intérieur de la méthode didFinishLaunchingWithOptions:
, vous devez ajouter la ligne suivante :
UNUserNotificationCenter.currentNotificationCenter.delegate = self;
Enfin, vous pouvez ajouter la méthode suivante qui sera désormais appelée à chaque fois qu'une notification sera reçue :
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {
//do stuff
}
Fermeture car ce n'est pas un problème avec notre SDK
Commentaire le plus utile
Désolé pour la réponse (très) tardive ici, mais il y a quelques petites choses.
Tout d'abord,
application:didReceiveRemoteNotification:
est obsolète. Vous voudrez plutôt utiliserapplication:didReceiveRemoteNotification:fetchCompletionHandler:
. Mais je vous déconseille également de l'utiliser, vous devez absolument utiliser les méthodesUNUserNotificationCenterDelegate
si vous souhaitez exécuter du code natif lorsqu'une notification est reçue.L'extension de service de notification ne remplace pas cette méthode.
Pour utiliser le
UNUserNotificationCenterDelegate
, modifiezAppDelegate.h
et ajoutez :Modifiez ensuite l'interface AppDelegate pour implémenter le protocole
UNUserNotificationCenterDelegate
:Dans
AppDelegate.m
intérieur de la méthodedidFinishLaunchingWithOptions:
, vous devez ajouter la ligne suivante :Enfin, vous pouvez ajouter la méthode suivante qui sera désormais appelée à chaque fois qu'une notification sera reçue :
Fermeture car ce n'est pas un problème avec notre SDK