2016-03-26 10 views
2

私はプログレッシブWebアプリケーションでプッシュ通知を実装しようとしており、Chromeで新しいPayloadサポートを使用しています。私のPushRegistrationオブジェクトにkeysプロパティが存在しません

私はそれらを送ることができますので、私はキーにアクセスするにはどうすればよい...

をサーバーまでのエンドポイントとキーを送信しようとしているが、PushSubscriptionオブジェクトのキープロパティが表示されていない

サーバー?

答えて

1

キーは使用できますが、そのように直接使用することはできません。

あなたは選択肢を持っているのいずれか:(あなたがJSON.parseあなたが本当にしたい場合は可能)、または

  • が持つ特定のキーを取得し、シリアライズのキーを備えた文字列を作成します

    1. コールJSON.stringify(subscription)例えば、第一のアプローチは、「URLセーフベース64」を作成することbtoa(String.fromCharCode.apply(null, new Uint8Array(subscription.getKey('p256dh'))))

    注符号化されたKをArrayBufferを返し、その文字列自身に変換subscription.getKey('p256dh')、 2番目は「Base 64(URLではない)」を作成します。 Webプッシュノードライブラリはキーのエンコーディングのいずれかを受け入れますが、ライブラリ用に選択したエンコーディングには注意が必要です。

  • +1

    'btoa(String.fromCharCode.apply(null、new Uint8Array(subscription.getKey( 'p256dh')));'、https://serviceworke.rs/push-payload_index_docのようにすることができます。 html。 – Marco

    +0

    私はこれらの両方を試しましたが、結果はそれぞれ異なります。私の実験では 'btoa'アプローチは' BIG/OUeTvBk0tfplr + eNOh ... 'となり、' stringify'は 'BIG_OUeTvBk0tfplr-eNOh ...'になりました。これらは明らかに異なっており、私はこの区別がウェブプッシュライブラリに問題を引き起こしていると考えています。識別と解決の可能性についての考えはありますか? – owencm

    +0

    違いは標準base64とURL-safe base64です。 'web-push'ライブラリを使うと、不明瞭に両方を使うことができます。 – Marco

    関連する問題