2017-01-26 2 views
1

ウェブプッシュ通知を送信するための実例を実行できました - プッシュ通知のためのユーザー登録、エンドポイント取得、browser鍵の生成サブスクリプションオブジェクト - p256dhauthサーバー側ではVAPIDの鍵を生成します。 したがって、これらのすべてを使ってをweb-push nodejsパッケージに、また、ペイロードを渡しています。ChromeとOperaにプッシュ通知を送信しようとすると、WebPushErrorとUnauthorizedRegistrationが返ってきます。

Firefoxで - 私はペイロードで通知を受け取ります。

ChromeとOperaでは、私はWebPushError: Received unexpected response code、さらにはUnauthorizedRegistrationError 400となります。

私はものを送信するために使用しているサーバー側のコードは次のとおりです。

// import our web-push package .. 
var webPush = require('web-push'); 

webPush.setGCMAPIKey('MY_GCM_SENDER_ID'); 

// we generated the VAPID keys .. 
var vapidKeys = { 
    "publicKey": "...", 
    "privateKey": "..." 
}; 

// set our VAPID credentials .. 
webPush.setVapidDetails(
    'mailto:{my email}', 
    vapidKeys.publicKey, 
    vapidKeys.privateKey 
); 

var device_endpoint = "https://android.googleapis.com/gcm/send/..."; 
var device_key = "..."; 
var device_auth = "..."; 


/* 
* Sending the notification .. 
*/ 
webPush.sendNotification(
    { 
     endpoint: device_endpoint, 
     keys: { 
      p256dh: device_key, 
      auth: device_auth 
     } 
    }, 
    'My payload', 
    { 
     TTL: 86400, // 24 hours .. 
    } 
) 
.then(function() { 
    console.log('SUCCESS'); 
}) 
.catch(function(err) { 
    console.log('Unsuccessful'); 
    console.log(err); 
}); 

私もmanifest.jsonファイルにgcm_sender_idようMY_GCM_SENDER_IDを入れています。私はhttps://console.firebase.google.com/からそれを取った - プロジェクトを作成し、Sender IDSettings - Cloud Messagingから得た。これについての説明はこちらをご覧ください: https://firebase.google.com/docs/cloud-messaging/js/client

だから私は間違っていますか?

+0

を防ぐために、サービスワーカーを更新するGoogle tutorialに従ってください? ...私はドメインが公開されている公開サーバーを持っていますが、そこに展開する前にすべてをローカルでテストしたかったのです。 –

答えて

1

私は...それを把握するために管理し、今私は正常ペイロードとPUSHを送信しています:)

問題は、私はPUSHに登録されたときにということでした - 私はこのようにそれをやっていた:

私はこのようにそれをやったとき
reg.pushManager.subscribe({ 
    userVisibleOnly: true 
}) 

は:

reg.pushManager.subscribe({ 
    userVisibleOnly: true, 
    applicationServerKey: new urlBase64ToUint8Array([VAPID public key) 
}) 

それがうまく働きました。今、問題なくペイロードで通常のPUSHまたはPUSHを送信できます。

さらに詳しい情報:

  1. https://rossta.net/blog/using-the-web-push-api-with-vapid.html
  2. https://web-push-book.gauntface.com/chapter-02/01-subscribing-a-user/

そしてだけuserVisibleOnlyプロパティを使用することを示していますすべてのチュートリアルについて...遅く作者は自分の記事を削除して行くことができます何か他のものを動かす!このエラーを満たす状況の

+0

暗号化を使用せず、ペイロードに通知を供給しない場合は、userVisibleOnlyプロパティを指定するだけで動作することに注意してください。そのため、あなたが読んでいたチュートリアルの中には、applicationServerKeyプロパティの必要性をカバーしていない理由が説明されているかもしれません。 –

0
  • 一つは、以下の説明:あなたは、通知をプッシュしたい場合

    open DevTools (Right Click > Inspect) and go to the Application panel, click the Service Workers tab and check the Update on Reload checkbox. When this checkbox is enabled the service worker is forcibly updated every time the page reloads.

  • One will produce the wrong process

    とGoogleチュートリアルでは、以下の言及しますウェブサイトにペイロード付き:

    のopensslで生成されsubscribe

    1. キーは私のために動作しないときは、でapplicationServerKeyを追加する場合ときsubscribe

    2. applicationServerKeyを追加します。

    3. vapidによって生成された鍵は私には役に立たない。
    4. Googleチュートリアルのウェブサイトで生成されたキーが動作します。
  • 作業可能キージェネレータ: Workable keys generator

  • 作業可能グーグルのチュートリアル: Workable google tutorial

Conclution

  1. I広告D applicationServerKeyとエラー
  2. を引き起こす私はWorkable keys generatorそれでもエラー
  3. を使用し、私はそれは私が私のローカルマシンからこれをしようとしていることが考えられ、いくつかのエラーに
  4. 作品
関連する問題