Les notifications push ne fonctionnent pas du tout. J'ai essayé toutes les mesures possibles jusqu'à présent :
Voici le code que j'ai essayé :
Sur didFinishLaunchingWithOptions
FirebaseApp.configure()
if #available(iOS 10.0, *) {
let center = UNUserNotificationCenter.current()
center.delegate = self
center.requestAuthorization(options: [.badge, .alert, .sound]) {
(granted, error) in
if granted {
DispatchQueue.main.async {
application.registerForRemoteNotifications()
//UIApplication.shared.registerForRemoteNotifications()
}
} else {
//print("APNS Registration failed")
//print("Error: \(String(describing: error?.localizedDescription))")
}
}
} else {
let type: UIUserNotificationType = [UIUserNotificationType.badge, UIUserNotificationType.alert, UIUserNotificationType.sound]
let setting = UIUserNotificationSettings(types: type, categories: nil)
application.registerUserNotificationSettings(setting)
application.registerForRemoteNotifications()
//UIApplication.shared.registerForRemoteNotifications()
}
Ensuite, la méthode "register and fail" :
private func application(application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
Messaging.messaging().apnsToken = deviceToken as Data
print("Registered Notification")
}
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
print(error.localizedDescription)
print("Not registered notification")
}
@available(iOS 10, *)
extension AppDelegate : UNUserNotificationCenterDelegate {
// Receive displayed notifications for iOS 10 devices.
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
let userInfo = notification.request.content.userInfo
// With swizzling disabled you must let Messaging know about the message, for Analytics
// Messaging.messaging().appDidReceiveMessage(userInfo)
// Print message ID.
if let messageID = userInfo["gcm.message_id"] {
print("Message ID: \(messageID)")
}
// Print full message.
print(userInfo)
// Change this to your preferred presentation option
completionHandler([])
}
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
// Print message ID.
if let messageID = userInfo["gcm.message_id"] {
print("Message ID: \(messageID)")
}
// Print full message.
print(userInfo)
completionHandler()
}
}
Nota:
- Je l'ai essayé sur un appareil réel, pas de notifications push jusqu'à présent.
- J'ai vérifié deux fois les certificats et régénéré le fichier de provisionnement après avoir activé les notifications push dans le fichier capacités.
- J'ai également ajouté des modes d'arrière-plan -> notifications à distance activées.
- J'ai essayé avec l'ancienne version, sans succès.
- J'ai essayé de réinstaller les applications plusieurs fois sans succès.
- FirebaseAppDelegateProxyEnabled est réglé sur NO dans la plist, mais toujours pas de chance.
- J'ai aussi mis à jour les pods, toujours pas de chance.
- Le certificat .p12 est dans la console firebase, mais ne fonctionne toujours pas.
J'essaie depuis une semaine avec différents projets et différentes méthodes d'authentification avec la clé Apple que j'ai également essayée, mais sans succès.