[:en]Steps to setup firebase push notifications by using Swift 5:
Step 1: Create a project called “PushNotification” or any project name that you would prefer.Then must exit Xcode!!!
Step 2: Go to your app folder and then install CocoaPods
sudo gem install cocoapods
Step 3: To edit Podfile
pod 'Firebase/Core' pod 'Firebase/Messaging'
Step 4: pod init
Step 5: pod install
Step 6: Add coding to “AppDelegate.swift” file:
// // AppDelegate.swift // pushN4 // // Created by Cambridge on 21/4/2019. // Copyright © 2019 Cambridge . All rights reserved. // import UIKit import Firebase import UserNotifications @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate,UNUserNotificationCenterDelegate{ var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. //create the notificationCenter 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) //FIRMessaging.messaging().remoteMessageDelegate = self } else { // Asks the user for permission for nofications let settings: UIUserNotificationSettings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil) application.registerUserNotificationSettings(settings) } application.registerForRemoteNotifications() FirebaseApp.configure() return true } func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { var token = "" for i in 0..Void) { // custom code to handle push while app is in the foreground print("Handle push from foreground\(notification.request.content.userInfo)") let dict = notification.request.content.userInfo["aps"] as! NSDictionary let d : [String : Any] = dict["alert"] as! [String : Any] let body : String = d["body"] as! String let title : String = d["title"] as! String print("Title:\(title) + body:\(body)") self.showAlertAppDelegate(title: title,message:body,buttonTitle:"ok",window:self.window!) } @available(iOS 10.0, *) func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { // if you set a member variable in didReceiveRemoteNotification, you will know if this is from closed or background print("Handle push from background or closed\(response.notification.request.content.userInfo)") } func showAlertAppDelegate(title: String,message : String,buttonTitle: String,window: UIWindow){ let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertController.Style.alert) alert.addAction(UIAlertAction(title: buttonTitle, style: UIAlertAction.Style.default, handler: nil)) window.rootViewController?.present(alert, animated: false, completion: nil) } // Firebase ended here }
Step 7: Drag the GoogleService-Info.plist into Xcode
Project fails with “Non-portable path to file ‘<protobuf/Any.pbobjc.h>'”
error which is due to Podfile is treating all warnings as errors.
Just remove the prefix and the error will go away
<Protobuf/ >
[:]