Push-уведомления iOS Firebase: как передать токен устройства Firebase пользователя и отправить уведомление
Совсем недавно на мероприятии Google I / O Google обновил Firebase, добавил множество новых функций и коснулся остальных. Я пытался внедрить push-уведомления iOS через Firebase в свое приложение на самом базовом уровне, поэтому я создал очень простое приложение, которое действительно ничего не делает, кроме получения удаленных push-уведомлений.
Внутри Firebase я загрузил свой сертификат, и в Xcode мои профили обеспечения были добавлены как в цель, так и в проект, а в Firebase я загрузил правильный сертификат. Ниже приведен код, содержащийся в моемAppDelegate.swift
файл, но потому что мойViewController.swift
"пусто", я не включил его.
Хотя нет сбоев или ошибок времени выполнения, при загрузке приложения я принимаю уведомления. Затем я выхожу из приложения и выключаю свое устройство. В Firebase я отправляю уведомление правильному приложению. Через пару минут в Firebase написано, что уведомление "Завершено".
Однако я никогда не получал уведомления на устройстве. Итак, в заключение мне нужно решение, чтобы отправить Firebase этоdeviceToken
а затем используйте «Уведомления Firebase», чтобы отправить сообщение push-уведомления.
Любая помощь для моего кода или в целом будет принята с благодарностью, и я надеюсь, что это поможет будущим зрителям. Спасибо! Мой код вAppDelegate.swift
:
import UIKit
import Firebase
import FirebaseMessaging
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
FIRApp.configure()
let notificationTypes : UIUserNotificationType = [UIUserNotificationType.Alert, UIUserNotificationType.Badge, UIUserNotificationType.Sound]
let notificationSettings = UIUserNotificationSettings(forTypes: notificationTypes, categories: nil)
application.registerForRemoteNotifications()
application.registerUserNotificationSettings(notificationSettings)
return true
}
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
print("Device Token: \(deviceToken)")
}
func applicationWillResignActive(application: UIApplication) {
}
func applicationDidEnterBackground(application: UIApplication) {
}
func applicationWillEnterForeground(application: UIApplication) {
}
func applicationDidBecomeActive(application: UIApplication) {
}
func applicationWillTerminate(application: UIApplication) {
}
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
print("MessageID : \(userInfo["gcm.messgae_id"]!)") // or gcm_etc...
print(userInfo)
}
}