2

我对 GAE 和推送 API/服务工作者很感兴趣,我正在尝试订阅 pushManager 但是,pushManager getSubscription 方法处理程序返回空引用

navigator.serviceWorker.ready.then(function(serviceWorkerRegistration)
 {      console.log('in side ready ' );
     // Do we already have a push message subscription?  
     serviceWorkerRegistration.pushManager.getSubscription()  
       .then(function(subscription) {  

         // Enable any UI which subscribes / unsubscribes from  
         // push messages.  
         var pushButton = document.querySelector('.js-push-button');  
         pushButton.disabled = false;

         if (!subscription) {  
           // We aren't subscribed to push, so set UI  
           // to allow the user to enable push        console.log('subscription error ' ); 
           return;  
         }  console.log('subscriptioned ' );
         // Keep your server in sync with the latest subscriptionId
         sendSubscriptionToServer(subscription);

         // Set your UI to show they have subscribed for  
         // push messages  
         pushButton.textContent = 'Disable Push Messages';  
         isPushEnabled = true;  
       })  
       .catch(function(err) {  
         console.warn('Error during getSubscription()', err);  
       });     });

然后在能够的代码getSubscription()中将订阅值返回为空,因此,如果块和函数存在,则控制权

如果我想打电话给

serviceWorkerRegistration.pushManager.subscribe() 

然后我收到以下错误

registration failed - no sender id provided

请在https://dtatable-date-filter.googleplex.com/home下方找到工作进度 url

4

1 回答 1

1

假设这是在 chrome 中,您需要在清单文件中包含一个发件人 ID。

您可以通过在 google 的开发者控制台中创建项目来获取此类发件人 ID。

您可以在以下位置获得一组详细的步骤:

https://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web?hl=en

从以下部分阅读:“在 Google Developer Console 上创建项目”。

您可以在此处查看带有自己的发件人 ID 的清单文件示例: https ://johnme-gcm.appspot.com/manifest.json

请注意使推送工作所需的两个相关键: "gcm_user_visible_only": true, "gcm_sender_id": "..." <- 创建您自己的并将 ... 替换为它。

于 2016-02-13T18:18:20.190 回答