2016-03-26 33 views
2

İlerleme bildirimlerini aşamalı web uygulamalarında uygulamaya çalışıyorum ve Chrome'daki yeni Payload desteğini kullanıyorum.keys özelliği, PushRegistration nesnemde mevcut değil

Ben sunucuya kadar uç noktasını ve anahtarları göndermeye çalışıyorum ancak PushSubscription nesne üzerinde tuşlar özelliğini görmüyorum ...

nasıl yüzden gönderebilirsiniz tuşları erişirim sunucu?

cevap

1

Anahtarlar kullanılabilir, ancak dikkat ettiğiniz gibi doğrudan bu şekilde kullanılamaz.

Sen seçeneği var ya: (daha sonra JSON.parse Eğer gerçekten isterseniz yapabilirsiniz) veya

  • ile belirli bir anahtar al tefrika anahtarlarını içeren bir dize yaratacak

    1. Çağrı JSON.stringify(subscription) örneğin, ilk yaklaşım "URL Güvenli Taban 64" yarattığı btoa(String.fromCharCode.apply(null, new Uint8Array(subscription.getKey('p256dh'))))

    Not kodlanmış k bir ArrayBuffer döndürür ve sonra bir dizeye kendiniz dönüştürmek subscription.getKey('p256dh'), saniye ise "Base 64 (URL olmayan Güvenli)" oluşturur. Web-itmeli Düğüm kütüphanesi, ya kodları kodlamayı kabul ederken, kütüphaneniz için hangi kodlamayı seçtiğinize dikkat etmek isteyebilirsiniz.

  • +1

    Aşağıdaki gibi bir şey yapabilirsiniz: 'btoa (String.fromCharCode.apply (null, yeni Uint8Array (subscription.getKey ('p256dh')))), https://serviceworke.rs/push-payload_index_doc gibi. html. – Marco

    +0

    Her ikisini de denedim ve farklı sonuçları var. Benim denememde 'btoa' yaklaşımı 'BIG/OUeTvBk0tfplr + eNOh ...' ile sonuçlandı, 'stringify' ise BIG_OUeTvBk0tfplr-eNOh ... ile sonuçlandı. Bunlar açıkça belli ve bu ayrımın web-itme kütüphanesiyle ilgili sorunlara neden olduğuna inanıyorum. Ayrım ve olası bir çözüm hakkında herhangi bir düşünce var mı? – owencm

    +0

    Fark, standart base64 ve URL güvenli base64'tür. 'Web-push' kütüphanesi ile, hem de belirsiz bir şekilde kullanabilmeniz gerekir. – Marco