不使用Firebase控制台向所有设备发送推送通知

3
我正在使用Java在Android Studio中制作一个面向客户的门户应用程序。我已经设置了Firebase Cloud Messaging、身份验证和实时数据库来存储用户信息。我可以轻松地从Cloud Console发送推送通知,但是我想知道是否有一种不使用控制台就能向所有设备发送推送通知的方法?
我的想法是我不希望HR中的某个人意外删除用户,但我希望他们能够发送针对关闭等情况的推送通知。是否有办法通过远程推送到所有设备或限制版的控制台来实现这一点,以防止进行更改?由于我对此比较陌生,请谅解我的问题可能很简单。

1
请参见以下链接:https://dev59.com/2VoT5IYBdhLWcg3wtRYR - Frank van Puffelen
2个回答

2
您可以使用Firebase Admin SDK来自完全受您控制的后端或其他机器。它具有用于向已收集其设备ID令牌的设备发送消息的API
没有额外的控制台或GUI用于发送消息 - 如果控制台不能满足您的需求,您将需要编写代码。

2

您可以向所有设备发送通知,前提是所有设备都已订阅主题。

您可以创建一个php文件,负责使用API令牌将信息发送到Firebase。

如果这对您有帮助,我将感激您批准我的评论,谢谢。

Notification.php:

    $token = 'test'; // Topic or Token devices here
    $url = "https://fcm.googleapis.com/fcm/send";

    // api key
    $serverKey = ''; // add api key here

    $notification = array('title' => 'Welcome StackOverFlow' , 'body' => 'Testing body', 'sound' => 'default', 'badge' => '1');
    $data = array('extraInfo'=> 'DomingoMG');
    $arrayToSend = array('to' => $token, 'notification' => $notification, 'priority'=>'high', 'data'=> $data);
    $json = json_encode($arrayToSend);
    $headers = array();
    $headers[] = 'Content-Type: application/json';
    $headers[] = 'Authorization: key='. $serverKey;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST,"POST");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
    curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);

    //Send the request
    $response = curl_exec($ch);
    //Close request
    if ($response === FALSE) {
     die('FCM Send Error: ' . curl_error($ch));
    }
    curl_close($ch);

类别和主题是一样的吗?只是为了澄清,因为我对这个术语不是很熟悉。比如,所有使用FirebaseMessaging.getInstance().subscribeToTopic("test")的设备都会收到通知吗? - Chris
1
你需要将令牌放在主题处,所有订阅该主题的人都将收到此通知。 - DomingoMG
1
我通过主题来纠正类别的主题,尽管对我来说它是相同的。 - DomingoMG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接