标签: web-push

在非原生应用(网络应用)中发送推送通知?

这是我在论坛上的第一篇文章,所以如果我的标签,论坛或内容错误,请教育我.

我正在开发一款针对iPhone和Android的应用,这是一个基于位置的实时社交网络.该应用不会通过市场/应用商店进行部署.

根据我的理解,我唯一的选择是制作一个网络应用程序(HTML5/JS).除了需要向其他用户发送推送通知之外,所有功能都应该是支持.

我考虑的选项是: - 发送电子邮件,但这不是非常实时. - 发送短信,但这会产生一些重大成本. - 链接到用户选择的IM并通过该IM发送通知

我理解所有跨平台框架,因为PhoneGab编译为本机,需要通过应用程序商店进行部署以利用他们的API(如果我错了,请纠正我).

任何简单的解决方案,基于位置,推送通知应用程序框架将在应用程序商店外提供?

编辑:我希望通过网站分发应用程序.

编辑:应用程序服务是一个约会概念在轻微的袖子边,所以我担心它不会通过审查门,因此无法在商店分发.当然我可以尝试使用PhoneGap或Titanium,然后在没有通过的情况下进行webapp.

感谢您的支持!

android mobile-application mobile-webkit ios web-push

5
推荐指数
2
解决办法
6422
查看次数

是否可以在没有GCM的Chrome中使用新的推送通知支持?

在与服务工作者一起使用新的Push API时,我可以使用Google的GCM以外的推送服务吗?

service-worker web-push push-api progressive-web-apps

5
推荐指数
1
解决办法
1282
查看次数

GCM等效于Firefox

Google云消息传递(GCM)是一项服务,可让开发人员将数据从服务器发送到Android应用程序或Chrome应用程序和扩展程序.

我正在开发一个chrome和一个firefox扩展/附加组件.我正在使用Web扩展API进行Firefox扩展.

现在,Web Extension API尚不支持chrome.gcm.*API.从本质上讲,firefox扩展无法与GCM通信.

还有其他类似GCM的内容,firefox扩展可以与之交谈吗?Firefox提供的东西就像Google为其浏览器Chrome提供的GCM一样?如果没有,有人可以解释如何在Firefox扩展中实现这一目标吗?

更新:即使对于Web应用程序,firefox也不会使用与GCM类似的东西.他们使用服务人员.Firefox浏览器扩展可以与服务工作者互动吗?

firefox firefox-addon google-cloud-messaging service-worker web-push

5
推荐指数
1
解决办法
2713
查看次数

如何通过javascript注册GCM主题(适用于Chrome)

是有关如何在Chrome中实现Google Cloud Messaging(GCM)的不错的文档。但我在这里或任何地方都找不到如何使用javascript(适用于Chrome)订阅主题的参考。

在这里,我找到了有关如何为Android执行任务的参考:https : //developers.google.com/cloud-messaging/topic-messaging#subscribe-to-a-topic

用于在GCM中订阅主题的Java代码(Android):

private void subscribeTopics(String token) throws IOException {
    GcmPubSub pubSub = GcmPubSub.getInstance(this);
    for (String topic : TOPICS) {
        pubSub.subscribe(token, "/topics/" + topic, null);
    }
}
Run Code Online (Sandbox Code Playgroud)

我不要找的东西

我没有寻找Chrome应用程序/扩展程序的方法。

我想要什么

我想向所有用户发送推送通知。到目前为止,我知道这可以通过两种方式实现:

  1. 将消息推送到主题
  2. 或我必须:“您需要发送设备注册ID的列表,并且此列表不应超过1000。如果要将消息发送到1000多个设备,这是GCM的限制,那么您需要在一千块。”

我想避免第二点。

我的问题

因此,我的问题是,有什么方法可以使用适用于Chrome浏览器的JavaScript(适用于网页)来订阅GCM的主题吗?如果在那里,那该怎么办?

javascript google-cloud-messaging chrome-gcm web-push firebase-cloud-messaging

5
推荐指数
1
解决办法
1491
查看次数

Web推送未知问题,WebPushError“收到意外的响应代码” 400

在使用GCM和chrome 进行网络推送的过程中。我最近遇到了这个问题(几个小时前,一切仍然正常)

我不确定是否由于GCM的某些更改或云的停机而发生这种情况...任何信息将不胜感激。

我的密码

var payload = JSON.stringify({
    title: 'notification title',
    body: 'message body'
});
webPush.sendNotification(params.endpoint, {
    userPublicKey: params.userPublicKey,
    userAuth: params.userAuth,
    payload: payload
}).then(function (res) { 
    // console.log of stuff
})
.catch(function(error){
    console.log(error);
    process.exit(1);
});
Run Code Online (Sandbox Code Playgroud)

跟踪:

{
  WebPushError: Received unexpected response code
  at IncomingMessage.<anonymous> (/var/www/***/pwa/node_modules/web-push /index.js:264:20)
  at emitNone (events.js:91:20)
  at IncomingMessage.emit (events.js:185:7)
  at endReadableNT (_stream_readable.js:926:12)
  at _combinedTickCallback (internal/process/next_tick.js:74:11)
  at process._tickCallback (internal/process/next_tick.js:98:9)
  name: 'WebPushError',
  message: 'Received unexpected response code',
  statusCode: 400,
  headers: {
    'content-type': 'text/plain; charset=UTF-8',
     date: 'Wed, 04 …
Run Code Online (Sandbox Code Playgroud)

google-chrome node.js google-cloud-messaging service-worker web-push

5
推荐指数
1
解决办法
1911
查看次数

如何使用Firebase云消息传递获取单击,关闭,显示等推送消息事件

尝试使用FCM实施Web推送通知。

我可以使用Firebase云消息传递库在浏览器上接收带有有效负载的推送消息。

以下是一个javascript代码段。

<script src="https://www.gstatic.com/firebasejs/3.5.1/firebase.js">  </script>
firebase.initializeApp(config);
const messaging = firebase.messaging();
messaging.onMessage(function(payload){
    console.log('onMessage',payload);
});
Run Code Online (Sandbox Code Playgroud)

如何捕获单击,关闭,显示等事件?

javascript web-push firebase-cloud-messaging

5
推荐指数
1
解决办法
5803
查看次数

有关safari配置的OneSignal Web推送通知不起作用

我正在通过阅读他们的文档来设置OneSignal的Web推送通知.下面的代码块是我的配置示例

<script>
    var OneSignal = window.OneSignal || [];
    OneSignal.push(["init", {
        appId: "my-app-id",
        safari_web_id: 'my-safari-web-id',
        autoRegister: false,
        notifyButton: {
            enable: true /* Set to false to hide */
        },
    }]);
</script>
Run Code Online (Sandbox Code Playgroud)

它适用于Google Chrome和Firefox.但是在safari上不起作用,当我点击订阅通知按钮时,我得到了如下错误

Safari错误日志

我的配置出了什么问题?

我使用safari版本10.0.1(12602.2.14.0.7)

safari macos web-push onesignal

5
推荐指数
1
解决办法
5137
查看次数

Firebase Cloud Messaging: "undefined" database getting created in IndexedDB

I am implementing web push notification with Firebase Cloud Messaging (FCM). I have followed the documentation for setup a javascript firebase cloud messaging and completed initial implementation for my app. I am able to receive messages from firebase. But, I noticed that a database has created in IndexedDB and it named as undefined. This database contains a single store called fcm_token_object_Store, which all auth, endpoint, fcmSenderId, fcmToken, etc.

Please refer the following screenshot:

在此处输入图片说明

Question: Can this database_name …

firebase web-push firebase-cloud-messaging

5
推荐指数
0
解决办法
245
查看次数

如何检查推送端点是否仍然有效?

我已经为我的网站成功实现了HTML5推送通知,用于新闻更新和用户事件。如果某个端点不再有效(无论出于何种原因,但通常是由于用户在其浏览器中撤消了权限),则当我尝试发送通知时,我会从推送服务器获得404或410状态。然后,从记录中删除该端点。

但是我想要更加主动一些,并检查端点是否有效,因此我的已订阅用户统计信息更为真实,并且仅在通知发送失败(可能需要几天或几周)时才更新。

我曾想发送无效的推送消息(例如,使用错误的VAPID密钥),但我无法保证服务器会在有效负载有效之前检查端点的有效性,因此即使可行,它也可能会中断在任何时候。

有什么更优雅的方式可以做到这一点吗?

web-push push-api

5
推荐指数
0
解决办法
564
查看次数

Firebase消息传递服务工作者单击处理程序不起作用

我正在使用FCM处理推送通知,但通知是data关键而不是notification.

这是我用来处理新消息并显示为通知的代码.我看到了我指定的所有选项和数据的通知.但是,当我点击通知时,它不会触发任何"notificationclick"事件.它也不打印event.notification.

importScripts('https://www.gstatic.com/firebasejs/5.3.1/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/5.3.1/firebase-messaging.js');


firebase.initializeApp({
    messagingSenderId: "SOME_ID",
});

const messaging = firebase.messaging();


messaging.setBackgroundMessageHandler(payload => {
    console.log(payload);
    const options = {
        body: payload.data.body,
        icon: payload.data.icon,
        click_action: payload.data.click_action,
        link: payload.data.link,
        data: {
            time: new Date(Date.now()).toString(),
            click_action: payload.data.click_action,
        },
    };

    self.registration.showNotification(payload.data.title, options);

});



self.addEventListener("notificationclick", function(event) {
    console.log(event.notification);
    const clickedNotification = event.notification;
    clickedNotification.close();

    const urlToOpen = clickedNotification.data && clickedNotification.data.click_action;

    const promiseChain =  clients.matchAll({
        type: 'window',
        includeUncontrolled: true,
    })
        .then((windowClients) => {
            let matchingClient = null;

            for (let i …
Run Code Online (Sandbox Code Playgroud)

javascript firebase service-worker web-push firebase-cloud-messaging

5
推荐指数
1
解决办法
405
查看次数