ios 的 FCM 自定义通知

Posted

技术标签:

【中文标题】ios 的 FCM 自定义通知【英文标题】:FCM custom notification for ios 【发布时间】:2016-12-18 19:03:06 【问题描述】:

我知道这个问题在 android 中问了很多时间,但在 ios 中没有。所以我已经用 FCM 测试了推送通知,它工作正常。我的问题是它是一种创建自定义通知而不是让系统使用通知有效负载处理通知的方法吗?

【问题讨论】:

【参考方案1】:

-用户可以用FCM发送数据消息。你要发送的是,

PostMan Json 数据示例:

 "data": 
    "any key": "any value",
    "any key 2": "any value 2"
  ,
  "to" : "token received to mobile from FCM"

“数据”中的有效载荷可以根据需要改变。

移动端:

application(_:didReceiveRemoteNotification:) 覆盖方法会被触发。所以开发者需要从 iOS 中的 userInfo 属性中提取数据并使用它。

【讨论】:

【参考方案2】:

对于使用 c# 工作代码的 ios:-

  public bool NotificationToiosDevice()
    
        bool str;
        try
        
            //Create the web request with fire base API  
            WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
            tRequest.Method = "post";
            //serverKey - Key from Firebase cloud messaging server  
            tRequest.Headers.Add(string.Format("Authorization: key=0", "AAAALNl-P7o:APA91bE38khU73UTdIj7L6LvVS3uI6f47REmxl.................................."));
            //Sender Id - From firebase project setting  
            tRequest.Headers.Add(string.Format("Sender: id=0", "12345"));
            tRequest.ContentType = "application/json";

            var payload = new
            
                to = "dDDbFltwE5o:APA91bFmZZ-c1pNp................",

                priority = "high",
                content_available = true,
                notification = new
                
                    title =  "Title Of Notification",

                ,
                data = new
                
                    body = new  Parameter1 = "FirstParameterValue", Parameter2 = "SecondParameterValue" ,

                ,
            ;
            string jsonNotificationFormat = Newtonsoft.Json.JsonConvert.SerializeObject(payload);

            Byte[] byteArray = Encoding.UTF8.GetBytes(jsonNotificationFormat);
            tRequest.ContentLength = byteArray.Length;
            using (Stream dataStream = tRequest.GetRequestStream())
            
                dataStream.Write(byteArray, 0, byteArray.Length);
                using (WebResponse tResponse = tRequest.GetResponse())
                
                    using (Stream dataStreamResponse = tResponse.GetResponseStream())
                    
                        if (dataStreamResponse != null) using (StreamReader tReader = new StreamReader(dataStreamResponse))
                            
                                String sResponseFromServer = tReader.ReadToEnd();
                                // str = sResponseFromServer;
                            
                    
                
            
            str = true;
        
        catch (Exception ex)
        
            str = false;
        
        return str;
    

【讨论】:

以上是关于ios 的 FCM 自定义通知的主要内容,如果未能解决你的问题,请参考以下文章

Flutter中FCM的自定义通知通道

有没有办法拦截和禁用默认的后台 FCM 通知并在 firebase 消息传递服务工作者中显示自定义通知

使用 firebase_messaging 自定义通知(Android 和 IOS)

接收自定义通知 iOS swift 2.0

无法使用 Firebase 在 iOS 中接收自定义通知

如何在 iOS 10+ 中自定义通知的简短预览