如何在 swift (FCM) 中接收数据通知

Posted

技术标签:

【中文标题】如何在 swift (FCM) 中接收数据通知【英文标题】:How to receive data notifications in swift (FCM) 【发布时间】:2019-11-07 00:04:32 【问题描述】:

我需要快速接收数据通知,而不是使用通知消息。仅使用数据消息。

这是我的邮递员 Json



"to": "e32uafd....",

    "data": 
        "urlImage": "https://upload.wikimedia.org/wikipedia/commons/8/80/image.jpg",
        "title": "title",
        "body": "****body****.",
        "mutable_content": true
    

这是我的 swift 代码

@available(ios 10.0, *)
    func userNotificationCenter(_ center: UNUserNotificationCenter,  willPresent notification: UNNotification, withCompletionHandler   completionHandler: @escaping (_ options:   UNNotificationPresentationOptions) -> Void)
    
                switch UIApplication.shared.applicationState
                    
                    case .active:
                        completionHandler( [.alert,.sound])
                        break
                    default:
                        completionHandler( [.alert,.sound])
                        break
                          
                             
           
  

【问题讨论】:

你解决了吗? 【参考方案1】:

您可以使用func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) 获取通知数据,但在此之前,您必须在注册通知时或在didFinishLaunchWithOptions(:) 方法中使您的ViewController 成为UNUserNotificationCenter 的代表。

第 1 步 让您的 AppDelegate 成为 UNNotificationCenter 的代表

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool 

     // Assumming you have imported NotificationCenter
     UNUserNotificationCenter.current().delegate = self
    //......

        return true
    


第 2 步 获取您的信息

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) 

     print(userInfo) // Your notification info
    // Note that you have to cast/parse it depending on which data you want to handle. 


    

【讨论】:

在注册通知时,您必须将您的应用代理指定为UNUserNotificationCenter 的代理。为了清楚起见,我已经编辑了我的答案。 您确定您的应用收到推送通知吗? 不,我没有收到通知。但是如果我添加 "notification": "title": "title", "body": "****body****.", "mutable_content": true ,我会收到通知,但这就是问题所在,我不需要使用通知消息。仅使用数据消息

以上是关于如何在 swift (FCM) 中接收数据通知的主要内容,如果未能解决你的问题,请参考以下文章

如何在应用程序后台接收FCM推送通知数据,但在前台点击

如何在 ios 中单击通知时接收数据,当应用程序被杀死时,(react-native-fcm 模块在 IOS 中获取推送通知)

如何在接收 fcm 推送通知时处于退出状态时打开应用程序 - REACT NATIVE

如何在接收基于 Flutter 构建的 FCM 推送通知时修复应用程序崩溃

IONIC FCM推送通知ios,无法接收

无法接收 FCM 推送通知 IOS - 目标 C