i have an issue when handling silent push in my app when the user close the app, here is my native code which works like charm when the app in the foreground, background or terminated status from a short time from closing the app, and after long time from closing it (+30min) it will not work anymore, it make me confuse why it does not work and other messaging app like viber, whatsapp and messanger you can still receive messages and calls even you swipe the app and close it !! is there any thing must i add !!
override func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
Messaging.messaging().appDidReceiveMessage(userInfo)
if Auth.auth().canHandleNotification(userInfo) {
completionHandler(.noData)
return
}
// sample notification for testing
let content = UNMutableNotificationContent()
content.title = "Hi there"
content.body = "Just test"
content.sound = UNNotificationSound.default
let request = UNNotificationRequest(identifier: "helloNotification", content: content, trigger: nil)
UNUserNotificationCenter.current().add(request) { (error) in
if let error = error {
print("Error adding notification request: \(error.localizedDescription)")
}
}
// resent to dart side
let controller: FlutterViewController = window?.rootViewController as! FlutterViewController
let notificationChannel = FlutterMethodChannel(name: "notificationHandler", binaryMessenger: controller.binaryMessenger)
var dataToSend: [String: Any] = [:]
if let text = userInfo["text"] as? String {
dataToSend["text"] = text
}
// Convert the dictionary to NSDictionary
let nsDataToSend = NSDictionary(dictionary: dataToSend)
// Pass the NSDictionary to Dart
notificationChannel.invokeMethod("handleRemoteMessage", arguments: nsDataToSend)
}
i checked :
- background capabilities : remote notifs, background fetching, voip, background processing