В настоящее время я работаю с уведомлениями, и мне не удалось получить уведомление от Firebase FCM.
Конфигурация подфайла:
target 'Project' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for Project
pod 'Firebase/Core'
pod 'Firebase/Messaging'
end
Я активировал Push Notifications
и Remote Notifications
из Background fetches
и уже прочитал другую тему в stackoverflow
, которая в настоящее время похожав здесь
Я хочу поделиться своими кодами AppDelegate с вами, но сначала я должен сказать, что документы Google для push-уведомлений кажутся немного запутанными, потому что вздесь и в каждом уроке есть свой способ получения уведомления.
Я импортировал эти
import Firebase
import FirebaseInstanceID
import UserNotifications
import FirebaseMessaging
Тогда есть делегации
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate, MessagingDelegate{
...
}
Тогда здесьэто метод willFinishLaunchWithOptions
func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
FirebaseApp.configure()
Messaging.messaging().delegate = self
if #available(iOS 10.0, *) {
// For iOS 10 display notification (sent via APNS)
UNUserNotificationCenter.current().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
options: authOptions,
completionHandler: {_, _ in })
// For iOS 10 data message (sent via FCM
} else {
let settings: UIUserNotificationSettings =
UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(settings)
}
application.registerForRemoteNotifications()
return true
}
А вот функции делегата Messaging
.
func messaging(_ messaging: Messaging, didReceive remoteMessage: MessagingRemoteMessage) {
print("MEssage -> \(remoteMessage.appData)")
}
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
print("Firebase registration token: \(fcmToken)")
}
Эта функция была в документации Firebase для установки токена apns.
func application(application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
Messaging.messaging().apnsToken = deviceToken as Data
}
Я отправил сотни уведомлений от FCM ', и он успешно отправлен на стороне сервера, но когда я регистрирую полученное сообщение, в данных о доходах ничего нет.
Если вы спроситевот почему я реализую конфигурацию в функции willFinish
, в документации есть примечание:
For devices running iOS 10 and above, you must assign the
UNUserNotificationCenter's delegate property and FIRMessaging's
delegate property. For example, in an iOS app, assign it in the
applicationWillFinishLaunchingWithOptions: or
applicationDidFinishLaunchingWithOptions: method of the app delegate.
Я был бы признателен за любую помощь от вас, потому что пока трудно понять, что с ней не так.