是否有可能通过webpush向SubUrl发送Firebase后台消息



我目前正在使用Firebase Messaging向一个简单的MVC应用程序发送简单的消息。

我使用邮递员(出于测试目的(通过谷歌api:发送消息

  • POST
  • https://fcm.googleapis.com/v1/projects/shk-notifications-dev/messages:send
  • 带有承载访问令牌的oAuth 2.0

消息可以通过我的MVC应用程序中的javascript接收。消息传递.onMessage((信息传递.onBackgroundMessage((都是有效的。

我想在我的邮件中添加一个URL,这样点击后台邮件就会将焦点/打开网站更改为子URL。因此,我添加了webpush->fcm_options->链接到我的Json Body

{
"message":{
"token":
"f0OUYjScb6kr6yVmt3inOY:APA91bFK4og6VpvtgPOjATtzW3hcAs....",
"notification": {
"title": "Postman Title",
"body": "Postman message body"
},
"webpush": {
"fcm_options": {
"link": "https://localhost:44373/home/about"
}
}
}

}

如果发送我的消息,则会收到后台消息背景消息

点击消息即可将焦点更改为网站https://localhost:44373到子URLhttps://localhost:44373/home/about

我错过了什么?如何配置后台消息Webpush Url以打开我的子Url

问题扩展

MVC应用程序代码。MVC Razor网站与javascript文件";firebase消息收发sw.js";

importScripts('https://www.gstatic.com/firebasejs/8.4.1/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/8.4.1/firebase-messaging.js');
var config = {
apiKey: 'AIzaSyDUnZvyzosgjJWeE0e_x_OXBaJbwfF9FlU',
authDomain: 'shk-test-5107d.firebaseapp.com',
databaseURL: 'https://shk-test-5107d-default-rtdb.europe-west1.firebasedatabase.app',
projectId: 'shk-test-5107d',
storageBucket: 'shk-test-5107d.appspot.com',
messagingSenderId: '667724451196',
appId: '1:667724451196:web:824d1bda6f43a1ec6c28f9',
measurementId: 'G-FD30HYTH6M'
};
firebase.initializeApp(config);
const messaging = firebase.messaging();
messaging.onBackgroundMessage(
(payload) => {
console.log('[firebase-messaging-sw.js] Received background message ', payload);
//console.log('before' + self.location.href);
self.location = 'https://localhost:44373/Home/About';
console.log('after' + self.location.href);
});

只有与注册的服务工作者具有相同主机的链接才能打开。您将不得不使用以下内容重定向用户:

"webpush": {
"fcm_options": {
"link": "example.com" + "?url=" + "https://example.com/home/about"
}
}

这将需要在您的应用程序中进行额外设置,以正确路由URL

如果你直接在服务工作者中打开URL,你需要用设备发出打开有问题的URL的请求:

// Do something with your WindowClient
});

请注意,如果设备不允许打开URL的权限,它将抛出InvalidAccessError错误。

来源:https://developer.mozilla.org/en-US/docs/Web/API/Clients/openWindow

相关内容