Post

Replies

Boosts

Views

Activity

notificaciones push de firebase desde una aplicación android a una aplicación iOS
Tengo actualmente una aplicación de chat tanto en android (java) como en iOS (swift) y ambos funcionan con la misma base de datos en Firebase. necesito ayuda para configurar las notificaciones push en segundo plano ya que lo intentado y nada.Si envio un mensaje con un usuario de Android a un usuario de iOS no llegan las notificaciones cuando la aplicación está en segundo plano, pero de Android a Android, de ios a ios y de ios a Android si llegan.De android a ios solo confirma si el usuario ios está dentro de la aplicación, pero necesito que lleguen las notificaciones ios cuando la aplicación está cerrada o en segundo plano.en iOS ya tengo configurados los certificados necesarios de apple y el proyecto firebasenecesito de su apoyo.Adjunto el codigo fuente:AppDelegate.swift@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { let gcmMessageIDKey = "gcm.message_id" var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. FirebaseApp.configure() // [START set_messaging_delegate] Messaging.messaging().delegate = self // [END set_messaging_delegate] // Register for remote notifications. This shows a permission dialog on first run, to // show the dialog at a more appropriate time move this registration accordingly. // [START register_for_notifications] 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) application.registerUserNotificationSettings(settings) } application.registerForRemoteNotifications() // [END register_for_notifications] //let pushManager = PushNotificationManager(userID: Auth.auth().currentUser!.uid) //pushManager.registerForPushNotifications() GMSPlacesClient.provideAPIKey("AIzaSyAUapKf62FHGkHVbpc6HY8R7qncJ83-R10") GMSServices.provideAPIKey("AIzaSyAUapKf62FHGkHVbpc6HY8R7qncJ83-R10") IQKeyboardManager.shared.enable = true GADMobileAds.sharedInstance().start(completionHandler: nil) return true }func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) { // 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 // With swizzling disabled you must let Messaging know about the message, for Analytics Messaging.messaging().appDidReceiveMessage(userInfo) // Print message ID. if let messageID = userInfo[gcmMessageIDKey] { print("Message ID: \(messageID)") } // Print full message. print(userInfo) } func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (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 // With swizzling disabled you must let Messaging know about the message, for Analytics // Messaging.messaging().appDidReceiveMessage(userInfo) // Print message ID. if let messageID = userInfo[gcmMessageIDKey] { print("Message ID: \(messageID)") } // Print full message. print(userInfo) completionHandler(UIBackgroundFetchResult.newData) } func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { print("Unable to register for remote notifications: \(error.localizedDescription)") } // This function is added here only for debugging purposes, and can be removed if swizzling is enabled. // If swizzling is disabled then this function must be implemented so that the APNs token can be paired to // the FCM registration token. func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { print("APNs token retrieved: \(deviceToken)") // With swizzling disabled you must set the APNs token here. Messaging.messaging().apnsToken = deviceToken } }@available(iOS 10, *)extension AppDelegate : UNUserNotificationCenterDelegate { // Receive displayed notifications for iOS 10 devices. func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { let userInfo = notification.request.content.userInfo // With swizzling disabled you must let Messaging know about the message, for Analytics Messaging.messaging().appDidReceiveMessage(userInfo) // Print message ID. if let messageID = userInfo[gcmMessageIDKey] { print("Message ID: \(messageID)") } // Print full message. print(userInfo) // Change this to your preferred presentation option completionHandler([.alert, .badge, .sound]) } func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { let userInfo = response.notification.request.content.userInfo // Print message ID. if let messageID = userInfo[gcmMessageIDKey] { print("Message ID: \(messageID)") } // Print full message. print(userInfo) completionHandler() }}extension AppDelegate : MessagingDelegate { func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) { print("Firebase registration token: \(fcmToken)") let dataDict:[String: String] = ["token": fcmToken] let ref = Database.database().reference() let uid = Auth.auth().currentUser?.uid ?? "" if uid != "" { ref.child("Tokens").child(uid).updateChildValues(dataDict) } NotificationCenter.default.post(name: Notification.Name("FCMToken"), object: nil, userInfo: dataDict) } Messaging.messaging().shouldEstablishDirectChannel to true. func messaging(_ messaging: Messaging, didReceive remoteMessage: MessagingRemoteMessage) { print("Received data message: \(remoteMessage.appData)") }}La función que uso para enviar la notificación:func sendPushNotification(payloadDict: [String: Any]) { let url = URL(string: "https://fcm.googleapis.com/fcm/send")! var request = URLRequest(url: url) request.setValue("application/json", forHTTPHeaderField: "Content-Type") // get your **server key** from your Firebase project console under **Cloud Messaging** tab request.setValue("key= aqui va mi server key", forHTTPHeaderField: "Authorization") request.httpMethod = "POST" request.httpBody = try? JSONSerialization.data(withJSONObject: payloadDict, options: []) let task = URLSession.shared.dataTask(with: request) { data, response, error in guard let data = data, error == nil else { print(error ?? "") return } if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { print("statusCode should be 200, but is \(httpStatus.statusCode)") print(response ?? "") } print("Notification sent successfully.") let responseString = String(data: data, encoding: .utf8) print(responseString ?? "") } task.resume() }y asi es como llamo esa funcion:let notifPayload: [String: Any] = ["to": self.token!, "notification": ["title": self.usernamelbl.text!,"body": self.msgtf.text! ,"badge":1,"sound":"default"]] self.sendPushNotification(payloadDict: notifPayload)Saludos.-
0
0
1.4k
Feb ’20
Inconvenient In The SwiftSupport Folder
Good night, when trying to upload my app with apple connect and with xcode 11.3.1 and after the initial review apple throws me this message: Invalid Swift Support - The SwiftSupport folder is empty. Rebuild your app using the current public (GM) version of Xcode and resubmit it.We are not using a beta version, please has anyone had this same problem? thanks
6
0
4.5k
Feb ’20