我正试图找到一种方法,使用Firebase云消息发送通知给我的应用程序的所有用户,但我有一个仅限web的应用程序。我见过一些针对Android/iOS的解决方案,基本上是让用户自动订阅一个名为“allDevices”的主题,然后向订阅该主题的所有用户发送通知。我似乎找不到任何关于如何让基于web的用户订阅主题的文档。有人知道这是否可能吗?如果有,是否有我遗漏的文件可以涵盖这一点?
谢谢!
弗兰克斯解仍然有效。但是,您需要有一个服务器为您进行订阅。
function subscribeTokenToTopic(token, topic) {
fetch('https://myserver.com/'+token+'/rel/topics/'+topic, {
method: 'POST',
headers: new Headers({
'Authorization': 'Bearer '+ oauthToken
})
}).then(response => {
if (response.status < 200 || response.status >= 400) {
throw 'Error subscribing to topic: '+response.status + ' - ' + response.text();
}
console.log('Subscribed to "'+topic+'"');
}).catch(error => {
console.error(error);
})
}
然后您的服务器有一个rest调用,如下所示:
(爪哇之春)
@RequestMapping(value = "/{token}/rel/topics/{topic}", method = RequestMethod.POST)
public ResponseEntity<?> subscribeTokenToTopic(@PathVariable("token") String token, @PathVariable("topic") String topic) throws ServletException {
URL url = new URL("https://iid.googleapis.com/iid/v1/"+token+"/rel/topics/"+topic);
// make https post call here..
...
}
希望这有意义。
任何一个寻找PHP解决方案找到下面,因为你要使用服务器的Api密钥,所以不要在客户端这样做
客户端Firebase js代码
// Initialize Firebase
var config = {
apiKey: "xxxx",
authDomain: "yyy",
databaseURL: "zzzz",
projectId: "aaaa",
storageBucket: "bbbbb",
messagingSenderId: "ccc"
};
firebase.initializeApp(config);
const messaging = firebase.messaging();
messaging.requestPermission()
.then(function() {
console.log('Notification permission granted.');
return messaging.getToken();
})
.then(function(token) {
//send this token to server
console.log(token); // Display user token
})
.catch(function(err) { // Happen if user deney permission
console.log('Unable to get permission to notify.', err);
});
messaging.onMessage(function(payload){
console.log('onMessage',payload);
})
由php编写的服务器端代码
$headers = array
('Authorization: key=' . API_ACCESS_KEY,
'Content-Type: application/json');
$ch = curl_init();
// browser token you can get it via ajax from client side
$token = 'drVdtCt82qY:APA91bEZb99GvoS9knv-cp5ThVBiYGBjUwl_Ewj2tKaRFwp7HoG347utaNKbgLWmkxpGadABtIg-DspPUh5sC_bc2JrBKVw10Ejg72nYxZgD2wBU-adYJo0yi03lX22s5K2UEp6gwnMv';
curl_setopt($ch, CURLOPT_URL, "https://iid.googleapis.com/iid/v1/$token/rel/topics/testIshakTopic");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, array());
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
echo "The Result : " . $result;
希望对PHP开发人员有所帮助
Firebase Cloud Messaging SDK for JavaScript中没有用于向客户端订阅主题的直接API。相反,您可以通过RESTAPI向主题订阅令牌。调用此API需要指定FCM服务器密钥,这意味着您只能在受信任的环境中执行此操作,例如您的开发机器、您控制的服务器或云功能。这是必要的,因为使用FCM服务器密钥可以代表应用程序向所有应用程序用户发送消息。
事实证明,在我的测试中,我使用的是一个较旧的项目,其中允许客户端API键订阅主题。出于安全原因,此功能已从较新的项目中删除。
例如,在Node.js中,您可以调用REST API为应用程序实例创建关系映射,如下所示:
function subscribeTokenToTopic(token, topic) {
fetch('https://iid.googleapis.com/iid/v1/'+token+'/rel/topics/'+topic, {
method: 'POST',
headers: new Headers({
'Authorization': 'key='+fcm_server_key
})
}).then(response => {
if (response.status < 200 || response.status >= 400) {
throw 'Error subscribing to topic: '+response.status + ' - ' + response.text();
}
console.log('Subscribed to "'+topic+'"');
}).catch(error => {
console.error(error);
})
}
其中fcm_server_key
是从项目的Firebase控制台获取的fcm服务器密钥。
我想使用谷歌的Firebase为网络构建一个消息应用程序。在这个应用程序中,用户应该向/从其他用户发送和接收消息。我检查了谷歌的Firebase网站,但我迷路了。你能告诉我从哪里开始吗?你能给我看任何与Firebase网络消息相关的教程或类似的东西吗?我欢迎任何建议。谢谢。
我正在尝试为Web设置Firebase云消息传递。我成功地对其进行了正确初始化并获得了令牌: manifest.json与gcm_sender_id 我可以看到我在控制台中得到令牌,所以我试图验证它,并通过邮递员发送我的第一个通知-这里是留档。 发布网址:https://fcm.googleapis.com/v1/projects/PROJECTID/messages:发送授权:无授权 标题 Bo
我有一个运行网站的服务器。我需要此服务器能够管理(仅下游)通知到三个独立的设备组,Android,iOS和客户端Web应用程序。 我试图使用Firebase云消息传递。对于FCM,我计划使用超文本传输协议来发送json消息。 除此之外,我还很困惑该去哪里。我知道GCM教程应该与FCM教程完全相同,但我很难找到一个教程来确定我需要做什么,因为每个教程似乎都将服务器端和客户端应用程序混合在一起,这让我
我必须在SpringJava中为多层架构制作一个RESTAPI,其中需要为Firebase云消息传递(FCM)构建DAO、控制器和服务管理器,以向android应用程序发送推送通知消息,但我无法在Java中配置服务器以向设备发送通知。我怎么能?
使用用于web套接字消息传递的Stomp broker中继,我可以订阅目标。这将创建一个代理订阅,并接收系统中的某些内容为此代理目标触发的所有消息,这将在系统中发生某些事件时发生。 我可以订阅一个目标,将调用带有的控制器方法,并且返回值仅在该套接字上作为消息发送回。据我所知,这是唯一的消息,将永远发送此订阅。 有没有一种方法可以将其合并到一个订阅中,即为某个目的地创建一个代理订阅,并触发一些直接将
FCM服务未向我的iOS应用程序发送消息。 > App CAN成功接收APNs令牌和实例ID令牌 App CAN使用推送通知实用程序利用. p8令牌在后台成功接收来自APN的推送 #2中使用的相同APNs密钥上传到Firebase控制台 应用程序无法接收Firebase控制台中Notification Composer发送的消息,也无法使用CURL请求接收消息。 应用程序在通过FCM发送时不显示任