Удаленные уведомления Firebase не получают?

Я пытаюсь отправить удаленные уведомления с моей консоли Firebase через облачный обмен сообщениями, но мой телефон не получает ни одного из предупреждений. Я уже загрузил свои сертификаты в Firebase и использую код по умолчанию, указанный в руководстве по Firebase, для получения уведомлений.

Вот изображение моих сертификатов, показывающее, что я его уже создал  Изображение

Вот мой код, в котором я это тоже реализовал. class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

override init() {
    FIRApp.configure()
    FIRDatabase.database().persistenceEnabled = true
}

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    let notificationTypes : UIUserNotificationType = [UIUserNotificationType.Alert, UIUserNotificationType.Badge, UIUserNotificationType.Sound]
    let notificationSettings = UIUserNotificationSettings(forTypes: notificationTypes, categories: nil)
    application.registerForRemoteNotifications()
    application.registerUserNotificationSettings(notificationSettings)

    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}

func application(application: UIApplication,
    openURL url: NSURL,
    sourceApplication: String?,
    annotation: AnyObject) -> Bool {
        return FBSDKApplicationDelegate.sharedInstance().application(
            application,
            openURL: url,
            sourceApplication: sourceApplication,
            annotation: annotation)
}

func applicationDidBecomeActive(application: UIApplication) {
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.

    FBSDKAppEvents.activateApp()
}

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject],
                 fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
    // If you are receiving a notification message while your app is in the background,
    // this callback will not be fired till the user taps on the notification launching the application.
    // TODO: Handle data of notification

    // Print message ID.
    print("Message ID: \(userInfo["gcm.message_id"]!)")

    // Print full message.
    print("%@", userInfo)
}

ИЗМЕНИТЬ. После дополнительной отладки моя консоль теперь выводит эту ошибку:

Предупреждение: делегат приложения получил вызов -application: didReceiveRemoteNotification: fetchCompletionHandler: но обработчик завершения так и не был вызван.


person Tim    schedule 20.06.2016    source источник
comment
stackoverflow.com/a/37670233   -  person Shubhank    schedule 20.06.2016
comment
попытался скопировать и вставить код из вашего решения, но он сообщает мне, что есть ошибка в self.tokenRefreshNotificaiton), имя, и я нахожусь на xcode 7.3.1   -  person Tim    schedule 20.06.2016
comment
на основе предупреждения - вам нужно проверить этот образец github и реализовать это github.com/firebase/quickstart-ios/blob/master/messaging/   -  person Shubhank    schedule 20.06.2016
comment
Я добавил код в свой, но все равно получаю ту же ошибку. Делегат приложения получил вызов -application: didReceiveRemoteNotification: fetchCompletionHandler: но обработчик завершения так и не был вызван.   -  person Tim    schedule 20.06.2016


Ответы (1)


Похоже, что на основе вашего последнего редактирования вы получаете уведомление. В противном случае он не выдал бы вам предупреждения о том, что обработчик завершения никогда не был вызван.

Вы можете удалить предупреждение (и осчастливить iOS), вызвав обработчик завершения. Например,

completionHandler(.NoData)

который сообщает iOS, что не было никаких новых данных, связанных с уведомлением, которое необходимо загрузить вашему приложению.

person Todd Kerpelman    schedule 20.06.2016
comment
Есть ли способ сделать так, чтобы мои уведомления всплывали, даже если они находятся внутри приложения, а не в фоновом режиме? Прямо сейчас уведомления не отображаются, если они находятся внутри приложения, но будут отображаться, если экран заблокирован или в другом приложении / доме. - person Tim; 21.06.2016
comment
Неа. Так работает iOS - если ваше приложение работает в фоновом режиме, iOS покажет уведомление. Но если ваше приложение находится на переднем плане, ожидается, что ваше приложение выполнит работу по отображению уведомления, и поэтому iOS ничего не покажет пользователю. - person Todd Kerpelman; 21.06.2016