如何在 Firefox 中使用 php curl 发送推送消息

2023-12-21

我已经为 Chrome 实现了推送通知,当我需要向 GCM 发送推送消息时,我使用了以下 PHP 函数:

function send_push_message($subscription_ids){
  // Set GCM endpoint
  $url = 'https://android.googleapis.com/gcm/send';

  $fields = array(
      'registration_ids' => $subscription_ids,
  );

  $headers = array(
      'Authorization: key=API_KEY',
      'Content-Type: application/json'
  );

  $ch = curl_init();

  // Set the url, number of POST vars, POST data
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

  // Execute post
  $result = curl_exec($ch);
  if ($result === FALSE) {
      die('Push msg send failed in curl: ' . curl_error($ch));
  }

  // Close connection
  curl_close($ch);
}

(我之前已经存储了订阅)

我想我可以为 Firefox 做这样的事情,使用这个 url:https://updates.push.services.mozilla.com/push https://updates.push.services.mozilla.com/push

但我不知道我必须做什么。

我需要在 Mozilla 注册我的网站才能做到这一点,就像在 Google 中一样?

请帮忙!


我自己的解决方案(一位同事帮助我解决了向 mozilla 发出的curl 请求中的错误),现在正在运行

function send_push_message($subscriptionIDs){

if (empty($subscriptionIDs)) return FALSE;
$chs = $sChrome = array();
$mh = curl_multi_init();
foreach ($subscriptionIDs as $subscription){
    $i = count($chs);
    switch ($subscription["browser"]){
        case "firefox":
            $chs[ $i ] = curl_init();
            curl_setopt($chs[ $i ], CURLOPT_URL, "https://updates.push.services.mozilla.com/push/".$subscription["id"] );
            curl_setopt($chs[ $i ], CURLOPT_PUT, TRUE);
            curl_setopt($chs[ $i ], CURLOPT_HTTPHEADER, array( "TTL: 86400" ) );
            curl_setopt($chs[ $i ], CURLOPT_RETURNTRANSFER, TRUE);
            curl_setopt($chs[ $i ], CURLOPT_SSL_VERIFYPEER, FALSE);

            curl_multi_add_handle($mh, $chs[ $i ]);
        break;
        case "chrome":
            $sChrome[] = $subscription["id"];
        break;    
    }
}
if (!empty($sChrome)){
    $i = count($chs);
    $chs[ $i ] = curl_init();
    curl_setopt($chs[ $i ], CURLOPT_URL, "https://android.googleapis.com/gcm/send" );
    curl_setopt($chs[ $i ], CURLOPT_POST, TRUE);
    curl_setopt($chs[ $i ], CURLOPT_HTTPHEADER, array( "Authorization: key=MY_KEY", "Content-Type: application/json" ) );
    curl_setopt($chs[ $i ], CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($chs[ $i ], CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($chs[ $i ], CURLOPT_POSTFIELDS, json_encode( array( "registration_ids" => $sChrome ) ) );
    curl_multi_add_handle($mh, $chs[ $i ]);
}

do {
    curl_multi_exec($mh, $running);
    curl_multi_select($mh);
} while ($running > 0);

for ($i = 0; $i < count($chs); $i++){
    curl_multi_remove_handle($mh, $chs[ $i ]);
}            

curl_multi_close($mh);
}

($subscriptionIDs 是一个数组数组,有 2 个键:id 和 browser)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Firefox 中使用 php curl 发送推送消息 的相关文章

  • 让登录更安全

    我已使用此代码进行管理员登录 仅当用户输入正确的用户名和密码时才应打开loginhome php 但后来我意识到这根本不安全 任何人都可以直接访问 mywebsite loginhome php 而无需登录 注销后 可以使用后退按钮打开 l
  • WordPress 中的 add_action 函数

    嗯 我正在学习创建一个 WordPress 插件 我下载了一个并阅读了代码 然后我看到了这个 我假设 foo 是它将添加操作的标签 但是 array 到底是做什么的呢 add action foo array foo1 foo2 我在看ht
  • ORDER BY 字段内的 MySQL 子查询。 (没有内连接)

    有很多与此相关的问题 但都具有使用内部联接的相同答案 这 我认为 在这里是不可能的 如果我错了请告诉我 我现在正在做的是调用两个不同的 mysql 查询来获取结果 它工作完美 db gt query SELECT FROM meta WHE
  • gmail 不断阻止 PHPmailer 登录

    我将在接下来的 8 小时内部署一个网站 而 Gmail 刚刚停止接受 PHPmailer 登录我的帐户 起初 它在测试过程中工作了几个小时 然后 它就停止工作了 我已经允许所有允许不太安全的应用程序从 gmail 登录 但它仍然不允许 ph
  • 优雅地处理没有数据的 amcharts

    我想知道我的 dataProvider 是否为空 amCharts绘制时默认为null 我怎样才能动态地处理它 var chart AmCharts makeChart chartdiv theme none type serial dat
  • 在 php 中为类自动生成 getter 和 setter 的最佳方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我经常创建一个包含一些私有变量的类 当设置此类的实例时 应该可以使用 getter 和 setter 填充该类的所有变量 有没有一种简单的方法可
  • 检查 PHP 中“@”字符后面的单词

    我现在正在制作一个新闻和评论系统 但是我已经在一个部分上停留了一段时间了 我希望用户能够在 Twitter 上引用其他玩家的风格 例如 用户名 该脚本看起来像这样 不是真正的 PHP 只是想象脚本 3 string I loved the
  • 如何使用 php 发送服务器错误响应?

    一旦用户点击删除按钮我的 jQuery 脚本要求服务器删除所选项目 现在我想要我的php发送成功或错误响应的脚本 是否有可能触发错误回调万一该项目无法删除 Thanks 我的 jQuery 代码 ajax type post url myA
  • 为什么我需要结束 ob_start()?

    php 文档建议我应该用 ob end flush 结束每个 ob start 我在网站的每个页面上使用一个 只是为了允许我在应用程序中的任何位置使用 firephp 日志方法 该应用程序运行良好 但我想知道是否有任何我不知道的东西可能有害
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • 为什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

    给出以下代码
  • 为什么同一个curl命令在windows和linux下输出不同的东西?

    为什么同样的curl o file https www link com 命令输出不同的东西 例如 如果我运行命令curl o source txt https www youtube com playlist list PLIx6Fwnp
  • 在 PHP 中撤销 Google 访问令牌

    正如标题所示 我想以编程方式撤销授予的访问令牌 即在 PHP 中 我发现这个他们的网站 https developers google com identity protocols OAuth2WebServer tokenrevoke 但
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • jQuery Mobile 表单验证

    我有一个移动网站 除了验证之外一切都工作正常 基本上我希望从用户那里获取值 然后在单独的页面 process php 上处理它们 但是 在这样做之前 我需要检查以确保字段已填充 我已经研究了几种方法来做到这一点 但似乎没有一种有效 我现在有
  • ini_set 'session.gc_maxlifetime' 为 1 天

    If I do ini set session gc maxlifetime 86400 这是否意味着用户可以将浏览器留在同一页面 非活动状态 最多 1 天 而不必担心会话被垃圾收集并被注销 如果服务器配置不支持此功能会发生什么 它会给我一
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账
  • 简单的 PHP 表单:电子邮件附件(代码 Golf)

    想象一下 一个用户想要在其网站上放置一个表单 该表单将允许网站访问者上传一个文件和一条简单的消息 该消息将立即通过电子邮件发送 即 该文件未存储在服务器上 或者如果该文件存储在服务器上 仅暂时 作为文件附件 并在邮件正文中添加注释 查看更多
  • 为什么curl允许使用文件URL方案,但wget不允许

    这个问题指的是curl 7 21 4和GNU Wget 1 13 4 我不知道答案是否特定于版本 使用文件 URI 方案 http en wikipedia org wiki File URI scheme我可以使用获取本地文件curl a

随机推荐

  • 使用 CAShapeLayer 对象用 Bezierpath 绘制一条线

    我正在制作一个图像编辑器 它可以创建不同形状的对象 如圆形 三角形和正方形 也可以更新或删除 所以我用过CAShapeLayer用于创建形状对象 现在我还想在图像上画一条线 它也可以更新或删除 所以我使用了 bezierpath 和CASh
  • 奇怪的行为-选择行触摸没有响应 UITableViewCell

    我有一个非常奇怪的问题 我不知道这对细胞的正常行为是否很尴尬 似乎是这样 因此我将其交给可以回答的人 如果有任何愚蠢的事情 请道歉在问这个问题时 通常 当我们触摸表视图单元格时 会发生什么情况是它导航到视图控制器 编码的控制器 现在奇怪的是
  • Perl 的 rand 参数可以有多大?

    rand n 返回一个介于0 and n Will rand对于我的平台上达到整数限制的所有参数 就 随机性 而言 是否按预期工作 这将取决于你的randbits http www perl com doc FMTEYEWTK random
  • 构造函数什么时候抛出异常是正确的?

    构造函数什么时候抛出异常是正确的 或者就 Objective C 而言 初始化器什么时候返回 nil 是正确的 在我看来 如果对象不完整 构造函数应该失败 从而拒绝创建对象 即 构造函数应该与其调用者签订合同 以提供一个功能性和工作对象 可
  • VBA Round 函数与 Worksheet Round 函数

    我尝试将此Excel函数更改为VBA代码 Excel ROUND value sigfig 1 INT LOG10 ABS value VBA Public Function sigfig val As Double sigf As Int
  • 展平集合

    说我有一个Map
  • build.sbt 定义模块之间的项目依赖关系

    我在 PlayFramework 中有项目 它有一个主要项目 没有任何代码 逻辑 它有几个子模块 main admin common shop 模块 管理和商店将基于通用模块 例如 用户 角色 权限等类 所以我必须这样配置它 lazy va
  • 无法形成对 NSTextView 类实例的弱引用

    仅使用 Swift 这是我在 AppDelegate swift 中的代码 import Cocoa class AppDelegate NSObject NSApplicationDelegate IBOutlet var window
  • WPF 中的 DataTemplate 和 DataContext 有什么区别?

    我可以通过以下方式设置视图模型和视图之间的关系DataContext syntax
  • SwiftUI 点击手势选择错误的项目

    所以我正在尝试创建一个自定义图像选择器 类似于 Instagram 但更基本 这就是我使用它创建屏幕的方法 struct NewPostScreen View StateObject var manager SelectNewPostScr
  • 如何在 ion-checkbox 中使用 ngModel?

    我正在尝试与 ngModel 一起使用 但 ngModel 在那里不起作用 我的代码
  • Java中的AVL树旋转

    我想实现Java AVL树并左右旋转树 我不明白这个 任何人都可以通过查看下面的代码告诉我如何左右旋转树 然后使用 fix up 与这两个函数来平衡 AVL 树 我希望这里有人可以指导我完成这个任务 import java util Ran
  • 是否自定义会员资格

    我正在 ASP NET MVC3 中创建网站 足球 足球 我希望拥有用户 具有默认会员资格的用户的附加信息 这些是普通访问者 和玩家 我认为最好他们继承用户并拥有一些附加信息如衣号 玩家还可以发布文章 用户可以只评论文章 做到这一点的最佳方
  • 过滤堆叠元素的多个放置处理程序中断

    我有一些 div 设置为 droppable 的元素可以接收从图库中拖放到其上的缩略图 img 元素也被设置为接受这些缩略图 因此我可以在图像之上添加图像 放置处理程序从缩略图中恢复图像并将其附加到正文中 当多个 div 和 imgs 堆叠
  • MUI 自动完成(多个)控制值 - 神秘的输入行为

    我正在尝试编写代码以在键盘输入时异步搜索多选组合 然而我在最新版本 5 2 2 中发现了一个我无法解释的奇怪行为 我提炼出以下问题 基于 MUI 自动完成页面的示例 import as React from react import Tex
  • 与父实体一起逐出依赖集合

    我刚刚意识到 当一个对象从 Hibernate 缓存中被逐出时 依赖集合 如果被缓存 必须被驱逐分别地 http jaitechwriteups blogspot com 2006 08 evict collection from hibe
  • 如何使用 c#.net 读取 XML 中的 XML 节点

    我有一个如下所示的 XML 文件
  • Vaadin Valo 页面不会滚动

    我正在基于原生 Valo 主题创建一个新的 Vaadin 主题 升级到 Vaadin 7 3 Valo 由其他人完成 后 页面内容将不再滚动 除了整个页面本身之外 页面上应用了溢出属性的所有其他元素都可以正常工作 我知道我可以应用这个 v
  • Netlogo的执行顺序是怎样的?

    请问我这句话正确吗 如果我写 ask turtles go forward go backward 随机一只乌龟向前移动然后向后移动 然后第二只随机乌龟会做同样的事情 依此类推 这是否正确 相对于 ask turtles go forwar
  • 如何在 Firefox 中使用 php curl 发送推送消息

    我已经为 Chrome 实现了推送通知 当我需要向 GCM 发送推送消息时 我使用了以下 PHP 函数 function send push message subscription ids Set GCM endpoint url htt