通过HTTP POST请求

时间:2016-10-03 03:16:28

标签: ios firebase firebase-cloud-messaging

因此,我们使用Firebase在我们的iOS应用上向用户发送通知。它在控制台中运行良好,但现在我们希望允许更多人发送通知,我们并不希望他们登录Firebase来执行此操作。我们提出的一个解决方案是在我们的网站上放置一个表单,让他们登录并从那里发送通知,但我们无法让它工作。下面的代码是我们现在所拥有的精简版。它使用云消息传递API向特定主题发送HTTP POST请求,Firebase使用message_id进行响应,但不会在任何设备上传递任何消息。

<!DOCTYPE html>
<html>
<body>
    <input id="title"></input>
    <input id="message"></input>
    <button>Submit</button>
</body>
<script   src="https://code.jquery.com/jquery-1.12.2.min.js"   integrity="sha256-lZFHibXzMHo3GGeehn1hudTAP3Sc0uKXBXAzHX1sjtk="   crossorigin="anonymous"></script>
    <script>
        $("button").click(function () {
            var title = $("#title").val();
            var message = $("#message").val();

            var param = {
              "to" : "/topics/myTopic",
              "content_available" : true,
              "notification" : {
                "title" : title,
                "body" : message
               }
            };

           $.ajax({
             url: 'https://fcm.googleapis.com/fcm/send',
             type: "POST",
            headers: { 'Authorization': 'key=<myKey>', 'Content-Type': 'application/json' },
             data: JSON.stringify(param),
             success: function () {
               alert("success");
             },
             error: function(error) {
               alert("error: "+error);
             }
           });
         });
    </script>
</html>

解决方案:

在我们玩了一下之后,我们发现content_available应该是假的,以便在我们的应用中实际显示通知。我们还确保正确实现jQuery变量。您可以看到我们改进的脚本,用于处理以下所有内容。

$("button").click(function () {
   // Grab the input values
   $title = $("#title").val();
   $message = $("#message").val();

   // Verify that the message is not left empty
   if ( $message.length < 2 ){
       // Message is empty
       return;
   }

   // Create the JSON object
   var paramaters = {
     "to" : "/topics/test",
     "content_available" : false,
     "notification" : {
       "title" : $title,
       "body" : $message
      }
   };

   // Send request
   $.ajax({
     url: 'https://fcm.googleapis.com/fcm/send',
     type: "POST",
     headers: { 'Authorization': 'key=$key', 'Content-Type': 'application/json' },
     data: JSON.stringify(paramaters),
     success: function (e) {
       // Process succeeded
       console.log(e);
     },
     error: function(error) {
       // Display error message
     }
   });
});

我们还确保我们的服务器密钥没有直接包含在我们的代码中,正如Frank在评论中提到的那样。现在一切正常,我们成功收到通知。

0 个答案:

没有答案