Merge branch 'sw-always-register' into swn
This commit is contained in:
commit
6e19ca8b22
|
@ -356,7 +356,7 @@ antennaExcludeKeywords: "除外キーワード"
|
||||||
antennaKeywordsDescription: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
antennaKeywordsDescription: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
notifyAntenna: "新しいノートを通知する"
|
notifyAntenna: "新しいノートを通知する"
|
||||||
withFileAntenna: "ファイルが添付されたノートのみ"
|
withFileAntenna: "ファイルが添付されたノートのみ"
|
||||||
enableServiceworker: "ServiceWorkerを有効にする"
|
enableServiceworker: "ブラウザへのプッシュ通知を有効にする"
|
||||||
antennaUsersDescription: "ユーザー名を改行で区切って指定します"
|
antennaUsersDescription: "ユーザー名を改行で区切って指定します"
|
||||||
caseSensitive: "大文字小文字を区別する"
|
caseSensitive: "大文字小文字を区別する"
|
||||||
withReplies: "返信を含む"
|
withReplies: "返信を含む"
|
||||||
|
|
|
@ -4,27 +4,26 @@ import { api } from '@/os';
|
||||||
import { lang, version } from '@/config';
|
import { lang, version } from '@/config';
|
||||||
|
|
||||||
export async function initializeSw() {
|
export async function initializeSw() {
|
||||||
if (instance.swPublickey &&
|
if (!('serviceWorker' in navigator)) return;
|
||||||
('serviceWorker' in navigator) &&
|
|
||||||
('PushManager' in window) &&
|
|
||||||
$i && $i.token) {
|
|
||||||
navigator.serviceWorker.register(`/sw.${version}.js`, { scope: '/', type: 'classic' });
|
|
||||||
|
|
||||||
navigator.serviceWorker.ready.then(registration => {
|
navigator.serviceWorker.register(`/sw.${version}.js`, { scope: '/', type: 'classic' });
|
||||||
registration.active?.postMessage({
|
navigator.serviceWorker.ready.then(registration => {
|
||||||
msg: 'initialize',
|
registration.active?.postMessage({
|
||||||
lang,
|
msg: 'initialize',
|
||||||
});
|
lang,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (instance.swPublickey && ('PushManager' in window) && $i && $i.token) {
|
||||||
// SEE: https://developer.mozilla.org/en-US/docs/Web/API/PushManager/subscribe#Parameters
|
// SEE: https://developer.mozilla.org/en-US/docs/Web/API/PushManager/subscribe#Parameters
|
||||||
registration.pushManager.subscribe({
|
registration.pushManager.subscribe({
|
||||||
userVisibleOnly: true,
|
userVisibleOnly: true,
|
||||||
applicationServerKey: urlBase64ToUint8Array(instance.swPublickey)
|
applicationServerKey: urlBase64ToUint8Array(instance.swPublickey)
|
||||||
}).then(subscription => {
|
})
|
||||||
|
.then(subscription => {
|
||||||
function encode(buffer: ArrayBuffer | null) {
|
function encode(buffer: ArrayBuffer | null) {
|
||||||
return btoa(String.fromCharCode.apply(null, new Uint8Array(buffer)));
|
return btoa(String.fromCharCode.apply(null, new Uint8Array(buffer)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register
|
// Register
|
||||||
api('sw/register', {
|
api('sw/register', {
|
||||||
endpoint: subscription.endpoint,
|
endpoint: subscription.endpoint,
|
||||||
|
@ -38,15 +37,15 @@ export async function initializeSw() {
|
||||||
if (err.name === 'NotAllowedError') {
|
if (err.name === 'NotAllowedError') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 違うapplicationServerKey (または gcm_sender_id)のサブスクリプションが
|
// 違うapplicationServerKey (または gcm_sender_id)のサブスクリプションが
|
||||||
// 既に存在していることが原因でエラーになった可能性があるので、
|
// 既に存在していることが原因でエラーになった可能性があるので、
|
||||||
// そのサブスクリプションを解除しておく
|
// そのサブスクリプションを解除しておく
|
||||||
const subscription = await registration.pushManager.getSubscription();
|
const subscription = await registration.pushManager.getSubscription();
|
||||||
if (subscription) subscription.unsubscribe();
|
if (subscription) subscription.unsubscribe();
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue