Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 
 

64 linhas
2.3 KiB

  1. import Flutter
  2. import UIKit
  3. import Firebase
  4. import FirebaseMessaging
  5. @main
  6. @objc class AppDelegate: FlutterAppDelegate {
  7. override func application(
  8. _ application: UIApplication,
  9. didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  10. ) -> Bool {
  11. // مقداردهی Firebase
  12. FirebaseApp.configure()
  13. // ثبت Plugin های Flutter
  14. GeneratedPluginRegistrant.register(with: self)
  15. // تنظیمات Notification Center
  16. UNUserNotificationCenter.current().delegate = self
  17. Messaging.messaging().delegate = self
  18. // درخواست مجوز نوتیفیکیشن
  19. UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in
  20. if let error = error {
  21. print("Error requesting notification permissions: \(error)")
  22. }
  23. print("Permission granted: \(granted)")
  24. }
  25. // ثبت دستگاه برای دریافت Remote Notifications
  26. application.registerForRemoteNotifications()
  27. return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  28. }
  29. // متد دریافت APNs Token و ارسال آن به Firebase
  30. override func application(
  31. _ application: UIApplication,
  32. didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
  33. ) {
  34. Messaging.messaging().apnsToken = deviceToken
  35. }
  36. }
  37. // افزودن پروتکل‌های UNUserNotificationCenterDelegate و MessagingDelegate
  38. extension AppDelegate: UNUserNotificationCenterDelegate, MessagingDelegate {
  39. // مدیریت دریافت توکن Firebase
  40. func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
  41. print("Firebase FCM Token: \(fcmToken ?? "No Token")")
  42. // اگر نیاز به ارسال توکن به سرور دارید، اینجا انجام دهید.
  43. }
  44. // مدیریت پیام‌های دریافت‌شده هنگام باز بودن اپلیکیشن
  45. func userNotificationCenter(
  46. _ center: UNUserNotificationCenter,
  47. willPresent notification: UNNotification,
  48. withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void
  49. ) {
  50. let userInfo = notification.request.content.userInfo
  51. print("Foreground Notification Received: \(userInfo)")
  52. completionHandler([.banner, .sound, .badge])
  53. }
  54. }