2016-10-25 7 views

답변

1

짧은 이야기 만하면 안됩니다! 서비스 근로자를 등록하려면 서비스 근로자를 등록 할 경로를 열어야합니다 (최상위 도메인이어야 함). 이를 달성하기 한 가지 방법은 다음과 같습니다

은 iframe 대응은 다음과 같습니다 가정 :

<iframe src="https://example.com"></iframe> 

사용 PostMessage를가 iframe이 통신 및 허가를 요청하고 window.open("https://example.com/")는 서비스 노동자를 등록하고 토큰을 가져.

희망이 도움이 :)

0

Chrome에서는 최상위 도메인에서 푸시하기 위해 가입해야합니다. 그렇지 않으면 사용자가 어떤 푸시가 허용되는 원본인지가 명확하지 않기 때문입니다.

+0

나는 facebook을위한 신청서를 만든다 :'https : // apps.facebook.com/xxxxxxx /'- app의 주소; 'https : // app.example.com/fb/build /'- iframe의 주소. "최상위 도메인"이라고했을 때의 의미 Chrome이 'https : // apps.facebook.com/xxxxxxx /'에서 푸시하기 위해 가입해야하는 것을 의미합니다. 또는 iframe의 주소를'https : // app.example.com /'로 변경하고 거기에 serviceWorker를 놓아야합니다. –

+0

페이스 북 앱의 작동 방식을 정확히 알지 못합니다. 페이지를 볼 때 url bar에 표시된 모든 출처에서 subscribe를 호출해야합니다. –

2

당신은 iframe을 사용할 수 없습니다가이 허용되지 않습니다.

최상위 수준 창에서 권한 요청을 수행해야합니다.

예를 들어 Pushpad Express에서 사용한 유일한 대안은 iframe에서 새 창을 리디렉션하거나/열려는 다음 최상위 창에서 권한을 요청한 다음 다시 리디렉션하는 것입니다.

이것은 어떤 웹 사이트가 푸시 알림에 대한 권한을 요청하는지 사용자에게 분명히 알리기위한 것입니다. 그렇지 않으면 예를 들어 광고에 푸시 알림 메시지가 표시 될 수 있으며 이는 오도하는 것입니다.

BTW sandbox 속성에 iframe의 새 값을 추가하여 푸시 알림 메시지를 표시하도록 제안했지만 사양에서 현재이를 지원하지 않습니다.