这是我在论坛上的第一篇文章,所以如果我的标签,论坛或内容错误,请教育我.
我正在开发一款针对iPhone和Android的应用,这是一个基于位置的实时社交网络.该应用不会通过市场/应用商店进行部署.
根据我的理解,我唯一的选择是制作一个网络应用程序(HTML5/JS).除了需要向其他用户发送推送通知之外,所有功能都应该是支持.
我考虑的选项是: - 发送电子邮件,但这不是非常实时. - 发送短信,但这会产生一些重大成本. - 链接到用户选择的IM并通过该IM发送通知
我理解所有跨平台框架,因为PhoneGab编译为本机,需要通过应用程序商店进行部署以利用他们的API(如果我错了,请纠正我).
任何简单的解决方案,基于位置,推送通知应用程序框架将在应用程序商店外提供?
编辑:我希望通过网站分发应用程序.
编辑:应用程序服务是一个约会概念在轻微的袖子边,所以我担心它不会通过审查门,因此无法在商店分发.当然我可以尝试使用PhoneGap或Titanium,然后在没有通过的情况下进行webapp.
感谢您的支持!
在与服务工作者一起使用新的Push API时,我可以使用Google的GCM以外的推送服务吗?
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
这是有关如何在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应用程序/扩展程序的方法。
我想要什么
我想向所有用户发送推送通知。到目前为止,我知道这可以通过两种方式实现:
我想避免第二点。
我的问题
因此,我的问题是,有什么方法可以使用适用于Chrome浏览器的JavaScript(适用于网页)来订阅GCM的主题吗?如果在那里,那该怎么办?
javascript google-cloud-messaging chrome-gcm web-push firebase-cloud-messaging
在使用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
尝试使用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)
如何捕获单击,关闭,显示等事件?
我正在通过阅读他们的文档来设置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版本10.0.1(12602.2.14.0.7)
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 …
我已经为我的网站成功实现了HTML5推送通知,用于新闻更新和用户事件。如果某个端点不再有效(无论出于何种原因,但通常是由于用户在其浏览器中撤消了权限),则当我尝试发送通知时,我会从推送服务器获得404或410状态。然后,从记录中删除该端点。
但是我想要更加主动一些,并检查端点是否有效,因此我的已订阅用户统计信息更为真实,并且仅在通知发送失败(可能需要几天或几周)时才更新。
我曾想发送无效的推送消息(例如,使用错误的VAPID密钥),但我无法保证服务器会在有效负载有效之前检查端点的有效性,因此即使可行,它也可能会中断在任何时候。
有什么更优雅的方式可以做到这一点吗?
我正在使用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