Не получать push-уведомления на моем iPhone, но Firebase Functions сообщает, что оно доставлено успешно? - PullRequest
0 голосов
/ 11 февраля 2019

Я хочу, чтобы firebase отправлял push-уведомления, когда пользователи получают новое сообщение, и это работало, но из-за того, что некоторые ошибки с токеном FCM не сохранялись для новых пользователей, мне пришлось изменить некоторый код.Однако прямо сейчас его сохранение соответствующего токена FCM для новых пользователей, которые зарегистрировались.

Однако, когда пользователь теперь получает сообщение, никаких уведомлений не появляется ... Я проверил свои журналы функций firebase, и он говорит, что сообщения доставляются успешно (поэтому я считаю, что это ошибка вмой код).

Так я получаю токен FCM пользователей в AppDelegate:

func application(_ application: UIApplication, 
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) 
  {
       InstanceID.instanceID().instanceID { (result, error) in
        if let error = error {
            print("Error fetching remote instange ID: \(error)")
        } else if let result = result {
            print("Remote instance ID token: \(result.token)")
            self.tokenOfUser = result.token

        }
    }
  }

Так я получаю токен, когда пользователь регистрируется, в SignUpViewController:

  var deviceToken : String?
  var delegate = UIApplication.shared.delegate as! AppDelegate
  self.deviceToken = delegate.tokenOfUser

  //and in saving the user profile i add this: 
  ["fcmToken": deviceToken]

И это мой код уведомления в FeedViewController

Это первый вид viewcontroller, к которому пользователи переходят после регистрации.

override func viewDidLoad() {
    super.viewDidLoad()
    registerForRemoteNotifications()
  }


func registerForRemoteNotifications() {
    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 })
    } else {

        let settings: UIUserNotificationSettings =
            UIUserNotificationSettings(types: [.alert, .badge, 
            .sound], categories: nil)

    UIApplication.shared.registerUserNotificationSettings(settings)

    }

    UIApplication.shared.registerForRemoteNotifications()


     }

func messaging(_ messaging: Messaging, didReceiveRegistrationToken 
fcmToken: String) {



    print("Firebase registration token: \(fcmToken)")
    //UserDefaults.standard.set(fcmToken, forKey: "fcmToken")



}

Я знаю, что с функциями все в порядке, как раньшеидеальная доставка уведомлений (чтобы функции работали раньше)

Я хочу, чтобы облачные функции отправляли push-уведомления на мое устройство (с помощью токена FCM, хранящегося в моей базе данных).

1 Ответ

0 голосов
/ 12 февраля 2019

Обнаружил проблему.У меня для FirebaseAppDelegateProxyEnabled установлено значение NO.

Я изменил FirebaseAppDelegateProxyEnabled на ДА, и теперь он отлично работает!

...