Проблема:
Не удается получить push-уведомление для моего устройства из firebase, учитывая тот факт, что я смог получить токен устройства и токен basebase.
Вот мои основные звонки в моем AppDelegate.swift
UIApplication.shared.registerForRemoteNotifications()
Этот вызов успешен, и я могу установить соединение с APNS, потому что мне удалось получить свой токен с помощью этого вызова:
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
Кроме того, я знаю, что я подключаюсь к FireBase, потому что я могу получить свой токен FireBase с помощью этого вызова:
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String)
Так что я вполне уверен, что мой код в AppDelegate.swift
в порядке.
Вот мои шаги для настройки push-уведомления firebase:
- Загрузил мой файл google-service.plist и перетащил его в мой проект
- Войдите в мою учетную запись разработчика Apple (платно) и создайте мой ключ с push-уведомлением (скопировал KeyID и вместе с моим teamID или префиксом приложения).
- Зашел в мою учетную запись Firebase и загрузил мой Ключ вместе с моим KeyID и TeamID
- Я удостоверился, что возможности моего приложения установили переключатель push-уведомлений в положение ON
- Попытка отправки тестового сообщения и приложение никогда не получит
My AppDelegate.swift:
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate, MessagingDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
UIApplication.shared.applicationIconBadgeNumber = 0
// Override point for customization after application launch.
loggingWithSwitftyBeaverConfiguration()
UNUserNotificationCenter.current().delegate = self
// requesting user's permission to accpet push notification
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
if granted == true {
log.debug("User granted push notification")
UNUserNotificationCenter.current().delegate = self
Messaging.messaging().delegate = self
DispatchQueue.main.async {
UIApplication.shared.registerForRemoteNotifications()
}
} else {
log.debug("User did not grant pn")
}
}
return true
}
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
log.debug("Device token receiving failed because: \(error.localizedDescription)")
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
let token = deviceToken.map {String(format: "%02.2hhx", $0)}.joined()
log.debug("Token: \(token)")
}
func messaging(_ messaging: Messaging, didReceive remoteMessage: MessagingRemoteMessage) {
log.debug("\(remoteMessage.description)")
}
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
log.debug("Firebase cloud messaging token: \(fcmToken)")
}
func applicationDidBecomeActive(_ application: UIApplication) {
Messaging.messaging().shouldEstablishDirectChannel = true
}
func applicationDidEnterBackground(_ application: UIApplication) {
Messaging.messaging().shouldEstablishDirectChannel = false
}
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
UIApplication.shared.applicationIconBadgeNumber += 1
print("push notification received")
}
}
Дополнительная информация: я смог получать тестовые уведомления с помощью пушера, просто хотел выкинуть его туда,
Спасибо