Я выполнил все шаги ниже и добавил соответствующий импорт и код в App Delegate
.Я также удостоверился, что разрешил принимать уведомления при запуске приложения.
Следуя приведенным ниже инструкциям, почему я не могу получать уведомления после того, как отправляю их из Firebase Cloud MessagingКонсоль?
В своем аккаунте разработчика я зашёл на Certificates, Identifiers & Profiles
Под Keys
, я выбрал All
инажал кнопку «Добавить» (+) в правом верхнем углу
В поле Key Description
я ввел уникальное имя для ключа подписи
В Key Services
я установил флажок APNs
, затем нажал Continue
, затем нажал Confirm
Я скопировал Key ID
(используется на шаге 7) и нажалDownload
для генерации и загрузки .p8
ключа
Я пошел на Firebase
, нажал Gear Icon
> Project Settings
> Cloud Messaging
not Grow>Облачные сообщения, такие как шаг 10
Под iOS app configuration
> APNs Authentication Key
Я перешел в первый раздел APNs Authentication Key
(НЕ APNs Certificates), выбрал Upload
и загрузил.p8
ключ, Key ID
и мой Team Id
.teamId
находится в разделе Membership
, а keyId является частью xxxxxxx
файла xxxxxxx
.p8.
В моем проекте XCode я перешел к Capabilities
> Background Modes
, повернул On
и проверил Remote Notifications
Затем я перешел к> Push Notifications
и повернул On
, который автоматически сгенерировал Entitlement Certificate
для приложения (оно находится в навигаторе проекта)
Чтобы отправить уведомление в Firebase, я пошел по адресу Grow
> Cloud Messaging
> Send Your First Message
> 1. Notification Text
ввел несколько случайныхString> 2. Target
и выбрал bundleId
> 3. Scheduling Now
> моего приложения 4. нажал Next> 5. selected sound
и badge
> Review
InAppDelegate Я добавил import UserNotifications
, import FirebaseMessaging
, import Firebase
, зарегистрировался для UNUserNotificationCenterDelegate
и добавил код ниже.
Для настройки reCAPTCHA проверки Я пошел в Blue Project Icon
> Info
> URL Types
, затем в раздел URL Schemes
я вошел в REVERSED_CLIENT_ID
из моего GoogleService-Info.plist
У меня естьдобавлены точки останова ко всем операторам печати ниже и после того, как язавершение сообщения из Firebase, ни один из них не получил удар.
import UserNotifications
import FirebaseMessaging
import Firebase
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
UNUserNotificationCenter.current().delegate = self
if #available(iOS 10.0, *) {
UNUserNotificationCenter.current().requestAuthorization(options: [.sound,.alert,.badge]) {
[weak self] (granted, error) in
if let error = error {
print(error.localizedDescription)
return
}
print("Success")
}
application.registerForRemoteNotifications()
} else {
let notificationTypes: UIUserNotificationType = [.alert, .sound, .badge]
let notificationSettings = UIUserNotificationSettings(types: notificationTypes, categories: nil)
application.registerForRemoteNotifications()
application.registerUserNotificationSettings(notificationSettings)
}
}
// MARK:- UNUserNotificationCenter Delegates
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Messaging.messaging().setAPNSToken(deviceToken, type: MessagingAPNSTokenType.unknown)
var token = ""
for i in 0..<deviceToken.count{
token = token + String(format: "%02.2hhx", arguments: [deviceToken[i]])
}
print("Registration Succeded! Token: \(token)")
}
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
print("Notifcation Registration Failed: \(error.localizedDescription)")
}
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
if let gcm_message_id = userInfo["gcm_message_id"]{
print("MessageID: \(gcm_message_id)")
}
print(userInfo)
}
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler(.alert)
print("Handle push from foreground \(notification.request.content.userInfo)")
let dict = notification.request.content.userInfo["aps"] as! NSDictionary
let d = dict["alert"] as! [String:Any]
let title = d["title"] as! String
let body = d["body"] as! String
print("Title:\(title) + Body:\(body)")
showFirebaseNotificationAlertFromAppDelegate(title: title, message: body, window: self.window!)
}
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
print("\(response.notification.request.content.userInfo)")
if response.actionIdentifier == "yes"{
print("True")
}else{
print("False")
}
}
func showFirebaseNotificationAlertFromAppDelegate(title: String, message: String, window: UIWindow){
let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
let action = UIAlertAction(title: "OK", style: .default, handler: nil)
alert.addAction(action)
window.rootViewController?.present(alert, animated: true, completion: nil)
}
}
Сообщение отправлено успешно, как вы можете видеть на картинке ниже, но я так и не получил его.