在我的应用中推送通知

时间:2017-05-11 18:11:30

标签: xamarin

我有一个已发布的应用程序,现在我希望用户通过推送通知接收新信息,我一直在进行搜索,我找到了firebase,我还有疑问,以及如何在外面添加消息Firebase帐户。 我有一个sql server数据库系统,我在那里保存我的信息,想知道我该如何工作,以便在添加新信息时已经出现在推送通知中

如何在不使用firebase的情况下创建自己的通知服务器?我是否需要使用消息服务器?

1 个答案:

答案 0 :(得分:2)

Firebase Cloud Messaging是在您的应用程序中集成推送通知的最佳和优化方法之一。完成此tutorial以在任何android应用的FCM控制台上设置您的应用。对于IOS,请使用component获取示例代码。完成FCM控制台上的设置后,尝试从FCM控制台发送推送通知。如果收到,那么您的客户端(应用程序)代码工作正常。

现在,为了设置服务器端实用程序来触发推送通知,有三种方法可以发送推送通知:

  • 使用设备令牌向特定设备发送消息。
  • 向客户端应用订阅的主题发送消息 - Refer link
  • 向设备组发送消息 - Refer link

使用以下C#服务器端代码使用设备令牌将消息发送到特定客户端应用程序:

WebRequest objRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
string jsonNotificationMessageFormat = "{\"to\":\"device_token_id\",\"notification\":{\"title\":\"This is the title\",\"body\":\"This is the body of message\",\"icon\":\"icon_name\",\"sound\":\"default\"}}";
Byte[] byteArray = Encoding.UTF8.GetBytes(jsonNotificationMessageFormat);
objRequest.Headers.Add(string.Format("Authorization: key={0}", serverKey));
objRequest.Headers.Add(string.Format("Sender: id={0}", senderId));
objRequest.ContentLength = byteArray.Length;
objRequest.ContentType = "application/json";
objRequest.Method = "post";

    using (Stream dataStream = objRequest.GetRequestStream())
    {
        dataStream.Write(byteArray, 0, byteArray.Length);

        using (WebResponse objResponse = objRequest.GetResponse())
        {
            using (Stream dataStreamResponse = objResponse.GetResponseStream())
            {
                using (StreamReader objReader = new StreamReader(dataStreamResponse))
                {
                    String responseFromFirebaseServer = objReader.ReadToEnd();
                }
            }
        }
    }

注意:一旦完成了应用程序的配置,就可以在firebase控制台的项目设置窗格的云消息传递选项卡中找到serverKeysenderId FCM控制台。

注意:每次在任何设备上安装应用程序时,该设备的device_token都会发生变化,因此您需要更新网络中的device_token服务请求。